Машинное обучение на наборе данных MNIST — это привет, мир программирования. В наборе данных MNIST есть тысячи изображений рукописных цифр размером 28x28. Этот проект поможет начинающему Pythoneer или Pythonista шагнуть в область визуального глубокого обучения. Изучение видения несколько сложно, но начало с правильных проектов может помочь вам получить не только знания, но и то, нравится ли вам это делать в программировании.

Я сделал классификацию, используя sklearn, Python, Matplotlib и Numpy; однако вы также можете использовать TensorFlow и Pandas. Для начала импортируйте все необходимые библиотеки:

from sklearn.datasets import fetch_openml
import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score

Sklearn lib предоставляет множество алгоритмов и моделей машинного обучения. Matplotlib используется для построения точек данных. Numpy — это эффективный инструмент, который помогает выполнять большие вычисления за миллисекунды.

Загрузите набор данных MNIST. Если вы распечатаете данные mnist, вы увидите, что данные были разделены на «данные» и «цель»; здесь целью являются числа, которые мы хотим предсказать, а «данные» — это фактические данные для изображения. Вы всегда должны исследовать свой набор данных, например столбцы, строки, имена столбцов, типы данных, значения na, способ и место сбора и т. д., и очищать его по мере необходимости. К счастью, это чистый набор данных, поэтому вам не нужно ничего делать. Код:

mnist = fetch_openml('mnist_784')
x, y = mnist['data'], mnist['target']
print(x.shape, y.shape)

Теперь, чтобы использовать данные, нам сначала нужно разделить x и y на x_train, x_test, y_train и y_test. нам нужно разбить его на обучение и тестирование bcz предположим, что мы обучаем модель на всех данных, но для проверки прочности модели нам нужны дополнительные данные, и мы не можем использовать данные, которые мы использовали для обучения, bcz модель уже распознает их . Итак, нам нужно разделить его на два с соотношением 8:2 80% для обучения и 20% для тестирования. Теперь мы также можем использовать XGBoost, но я оставлю это на потом, так как это сложно.

(x_train, x_test) = x[:60000], x[60000:]
y_train, y_test = y[:60000], y[60000:]

Поскольку цель указана в виде строки, нам нужно преобразовать ее в числовое значение:

y_train = y_train.astype(np.int8)
y_test = y_test.astype(np.int8)

Теперь обучим модель:

clf = LogisticRegression(tol=0.01, max_iter=500, random_state=1)
clf.fit(x_train, y_train)

Случайное состояние приводит к тому, что значения находятся в случайном положении, эта функция полезна, когда данные установлены в таком порядке, как алфавитный порядок или числовой порядок (1,2,3, …), функция max_iter указывает максимальное количество итераций, которое модель подойдет, а tol означает допуск на ошибку (очевидно, что чем лучше модель, тем меньше она, но это требует больших затрат времени и ресурсов).

Теперь, наконец, мы предскажем результат, предоставив изображения модели.

In[74]: clf.predict(x_test.iloc[5000:5007])
Out[74]: array([3, 9, 9, 8, 4, 1, 0], dtype=int8)

Теперь, чтобы проверить, правильно ли предсказала модель, мы будем использовать y_test.

In[75]: y_test.iloc[5000:5007]
Out[75]: 65000    3
         65001    9
         65002    9
         65003    8
         65004    4
         65005    1
         65006    0
         Name: class, dtype: category

Как мы видим, модель правильно предсказала, но это было легкое предсказание, потому что при любом случайном выборе вероятность успеха составляет 10%, что потрясающе. Но если мы хотим проверить, как работает модель, самый простой тест — проверить ее следующим образом:

In[76]: accuracy = cross_val_score(clf, x, y, cv=5, scoring='accuracy')
        print(accuracy.mean())
Out[76]: 0.9147

Итак, в среднем наша модель точна на 91,47%, что неплохо.

Поздравляю! вы только что завершили свой первый проект по изучению зрения.

Вот профессиональный совет: вакансий по обучению видению не так много, и компании, которым нужен разработчик по обучению видению, часто запрашивают множество квалификаций или проектов. Если вы новичок, я предлагаю вам заняться инженерией данных, бизнес-аналитикой, аналитикой данных или специалистом по данным. Даже те рабочие места, которые я упомянул, требуют большого количества навыков, а доступность вакансий высока для инженеров данных и мало для специалистов по данным (в том порядке, в котором я перечислил). Спрос на инженеров по машинному обучению не так уж велик, а на подкатегории машинного обучения, такие как обучение зрению, еще ниже. Только несколько компаний, таких как Tesla и Facebook, нуждаются в этих обучающихся инженерах. Его объем со временем будет увеличиваться, особенно после выпуска Automated Taxi, но до тех пор я предлагаю вам придерживаться области, связанной с данными, если вы интересуетесь наукой о данных и искусственным интеллектом. Это мое мнение и то, что я испытал и увидел на рынке труда. Если вы думаете, что можете пойти на это, но подумайте еще хотя бы 100 раз, так как это ваша карьера, о которой вы говорите. Мир.

А вот и спонсор:

Я благодарен наставникам на https://internship.suvenconsultants.com за то, что они предоставили потрясающие формулировки задач и дали многим из нас возможность пройти стажировку по программированию. Спасибо www.suvenconsultants.com