Этот пост посвящен моему опыту использования python для распознавания цифр.
Прежде чем я углублюсь в детали, есть некоторые вещи, которые вы должны понять.
scikit-learn ›› В чем заключается все волшебство, хотя технически оно предоставляет все самое интересное.
SciPy ›› Эта библиотека как Ватсон для Шерлока Холмса. Это делает вычисления и обрабатывает данные.
Теперь давайте перейдем к коду
from sklearn import datasets from sklearn.svm import SVC from scipy import misc digits = datasets.load_digits() features = digits.data labels = digits.target clf = SVC(gamma = 0.001) clf.fit(features, labels) img = misc.imread('/Users/sree/Desktop/image.jpeg') img = misc.imresize(img, (8,8)) img = img.astype(digits.images.dtype) img = misc.bytescale(img, high=16, low=0) x_test = [] for eachRow in img: for eachPixel in eachRow: x_test.append(sum(eachPixel)/3) print(clf.predict([x_test]))
Шаг 1: установите sklearn и scipy
Прежде чем углубляться в детали, я надеюсь, что вы немного знаете о машинном обучении. По сути, машине требуются некоторые данные для обучения.
digits = datasets.load_digits() features = digits.data labels = digits.target
В приведенном выше коде происходит то же самое, он загружает данные из /\ /\ . Здесь, как только данные получены, данные и метки разделяются. Здесь digits.data будут всеми данными, а digits.target будет иметь все метки.
Данные здесь представлены нулями и единицами. Это сохраняется в функциях, и это массив. Теперь допустим, что соответствующие значения сохраняются в массиве меток.
Теперь давайте обучим данные.
clf = SVC(gamma = 0.001) clf.fit(features, labels)
В основном здесь данные используются для обучения машины, чтобы она распознавала ввод и пыталась распознавать новые входные изображения.
img = misc.imread('/Users/sree/Desktop/7.jpeg') img = misc.imresize(img, (8,8)) img = img.astype(digits.images.dtype) img = misc.bytescale(img, high=16, low=0)
Здесь изображение преобразуется в единицы и нули.
Как только это будет сделано, вы должны изменить размер изображения и преобразовать тип изображения в соответствии с типом данных, с которыми оно было обучено.
как только это будет сделано, вы должны нормализовать значения изображения от 0 до 16.
Теперь для части предсказания. Валя!!!
x_test = [] for eachRow in img: for eachPixel in eachRow: x_test.append(sum(eachPixel)/3) print(clf.predict([x_test]))
Здесь отображаются прогнозируемые значения.
Эта статья о распознавании цифр — лишь малая часть больших статей, которые еще впереди. Есть много областей, которые нужно охватить.
Как например:
- Как обобщить алгоритм
- Как изменится скорость обучения при различном наборе параметров
- Как устранить переобучение
- Что такое другие алгоритмы машинного обучения и как их можно использовать для решения той же задачи
- Как другое машинное обучение будет работать и масштабироваться в зависимости от разных наборов данных
Наряду с этими вопросами, в следующих статьях будут даны ответы на множество других вопросов.