[Учебник по Scikit-learn] 01 Быстрый старт

машинное обучение Python
[Учебник по Scikit-learn] 01 Быстрый старт

Добро пожаловать на главный сайт Jizhi:Jizhi, двигатель, ведущий к эре интеллекта


Уведомление!

Весь код в этой статье можно запустить и отладить в исходном посте Jizhi (установочная среда не требуется).кликните сюдаперейти к исходному сообщению



scikit-learn(сокращенно sklearn) в настоящее время является самой популярной и мощной библиотекой Python для машинного обучения. Он широко поддерживает различные методы классификации, кластеризации и регрессионного анализа, такие как машины опорных векторов, случайные леса, DBSCAN и т. д. Благодаря своим мощным функциям, отличной масштабируемости и простоте использования, в настоящее время его предпочитают многие специалисты по науке о данных. один из известных проектов с открытым исходным кодом в отрасли.

Благодаря своим мощным функциям и удобным и быстрым характеристикам использования, можно сказать, что sklearn в настоящее время является важной частью изучения науки о данных.Далее мы быстро освоим обычное использование sklearn в серии курсов и практических процессов.

  • Обратите внимание, что все примеры программ в этом курсе будут запускаться непосредственно на веб-странице, и вы даже можете изменить некоторые из примеров программ самостоятельно, не открывая IDE и не переписывая код.

О машинном обучении

Сегодня машинное обучение является очень важной частью науки о данных. Вообще говоря, машинное обучение означает предоставление компьютерным программам возможности анализировать и изучать характеристики ряда выборочных данных для прогнозирования содержания атрибутов неизвестных данных.Например, анализируя информацию о большом количестве фотографий кошек с помощью алгоритмов, компьютер может определить, есть ли кошка на картинке, как показано ниже.

В соответствии с различными методами обучения машинное обучение можно разделить на обучение с учителем и обучение без учителя. sklearn содержит большое количество функций, связанных с машинным обучением Ниже мы представим простой пример использования sklearn для машинного обучения — распознавания растрового изображения цифрового кода. Это основная проблема распознавания содержимого изображения, которая является представителем обучения с учителем. Его суть состоит в том, чтобы классифицировать неизвестные классифицированные изображения путем анализа информации о составе известных классифицированных изображений. Мы будем использовать этот пример, чтобы кратко представить машинное обучение. Общий поток и некоторые детали реализации.

установка sklearn

Сначала нам нужно установить библиотеку sklearn (поскольку вы можете проводить все эксперименты на нашей веб-странице, вы можете попробовать установить sklearn на свой компьютер позже). sklearn — это библиотека расширений для Python, поэтому мы должны сначала настроить среду выполнения Python. В то же время, поскольку sklearn основан на библиотеках Numpy и Scipy, мы должны сначала установить их. Затем мы можем использоватьpipилиcondaЧтобы автоматически установить sklearn, конкретный метод выглядит следующим образом:

# 安装sklearn之前必须先安装较新版本的Scipy与Numpy
# 使用pip安装sklearn:
pip install -U scikit-learn
# 使用conda安装sklearn:
conda install scikit-learn

После установки sklearn мы можем использовать различные данные, функции и т. д. из sklearn в скриптах Python.

Обработка данных с помощью sklearn

Данные - это ключ к машинному обучению. В работе по машинному обучению нам нужно тратить много времени на сбор и организацию данных. Разумные и научные данные являются ключом к хорошим результатам машинного обучения. Вообще говоря, процесс машинного обучения для решения задачи классификации должен использовать четыре элемента данных, а именно:

  • тренировочные данные, обычно используемыеtrainПредставлять
  • Атрибут классификации обучающих данных, обычно используемыйtargetПредставлять
  • тестовые данные, для общего пользованияtestПредставлять
  • Истинные классификационные свойства тестовых данных, используемые для оценки производительности классификатора, обычно используютсяexpectedПредставлять

Чтобы облегчить изучение и тестирование различного контента в машинном обучении, sklearn имеет встроенные различные полезные наборы данных, и в sklearn собираются данные о репрезентативных проблемах, таких как обработка текста и распознавание изображений. Набор данных растрового изображения цифрового кода, представленный в этой статье, также можно найти в sklearn.datasetsмодуль, ниже приведен пример чтения данных.

from sklearn import datasets

# 以下程序将输出sklearn库中内置的一个用于记录数字码点阵图的训练数据集及其分类
# 请点击运行按钮查看内部数据

digits = datasets.load_digits()
print(digits.data)
print(digits.target)

Первый набор данных в приведенном выше результате программы на самом деле представляет собой набор данных растрового изображения цифрового кода 8x8, каждое растровое изображение записывается как массив из 64 элементов, а значение элемента массива представляет точечную матрицу 8x8 в точечной матрице. глубина. В следующем разделе мы будем использовать графические функции matplotlib для построения реальных изображений, которые представляют эти массивы.

Графика с помощью matplotlib

Проектам машинного обучения часто приходится решать множество проблем, связанных с распознаванием графики, и нам часто требуется представлять результаты расчетов инструментов машинного обучения в виде картинок.В это время нам нужно использовать общую библиотеку рисования на Python —matplotlib, его можно легко использовать для рисования различной графики, например, в следующей программе показано использованиеmatplotlibПример построения реальной картины по данным, представленным в предыдущем разделе.

%matplotlib inline
import matplotlib.pyplot as plt
from sklearn import datasets

digits = datasets.load_digits()

# 下面我们将输出四张数字码(0、1、2、3)的8x8点阵图,
# 点阵图的数据从datasets读取并存储在digits中,
# 我们可以通过matplotlib所提供的方法显示这些点阵图,
# 请点击运行按钮查看效果。

images_and_labels = list(zip(digits.images, digits.target))
for index, (image, label) in enumerate(images_and_labels[:4]):
    plt.subplot(2, 4, index + 1)
    plt.axis('off')
    plt.imshow(image, cmap=plt.cm.gray_r, interpolation='nearest')
    plt.title('Training: %i' % label)

Мы видим, что программа рисует четыре растровых изображения цифрового кода, а разные точки изображения имеют разную глубину цвета. Необработанные данные, показанные в предыдущем разделе, фактически записывают глубину цвета этих точек, и мы будем использовать эти данные, представляющие глубину цвета, для выполнения конкретной работы по машинному обучению.

Выберите классификатор и настройте его, обучите и предскажите

Получив данные для обучения, мы можем приступить к созданию классификатора (или модели классификации) для выполнения процесса машинного обучения. Классификатор — это функция, основанная на алгоритме статистического обучения. Во-первых, нам нужно выбрать метод из нескольких алгоритмов статистического обучения, таких как машины опорных векторов (SVM), деревья решений, случайные леса и другие. Затем вызовите соответствующие функции sklearn и установите разумные параметры, чтобы использовать эти методы и обучить классификатор обучающим данным. В следующей программе показан простой процесс построения и обучения классификатора на основе SVM.

from sklearn import datasets, svm
# 读取数据
digits = datasets.load_digits()
# 建立SVM分类器
clf = svm.SVC(gamma=0.001, C=100.)
# 使用训练数据对分类器进行训练,它将会返回分类器的某些参数设置
clf.fit(digits.data[:-1], digits.target[:-1])

Классификатору необходимо установить определенные параметры, когда он установлен, чтобы адаптироваться к потребностям различных случаев и избежать переобучения. Разные параметры имеют разное значение и по-разному влияют на результаты вычислений.Мы подробно обсудим значения параметров в различных методах машинного обучения в следующих курсах.

Процесс обучения sklearn используетclf.fit(train, target)Такой метод, с помощью которого мы можем использовать обучающие данные и свойства классификации обучающих данных для обучения классификатора, приводит к модели классификации, которую можно использовать для прогнозирования. Обратите внимание, что обученную модель классификации можно экспортировать, то есть мы можем напрямую использовать уже полученный классификатор, который хорошо работает для прогнозирования.

После обучения мы можем использовать полученный классификатор для прогнозирования классификации неизвестных данных. В следующей программе показан процесс использования классификатора для прогнозирования классификации неизвестных данных. Вы можете изменить содержимое неизвестных данных (т. е. тестового массива) самостоятельно, чтобы увидеть эффект нашего обученного классификатора.

%matplotlib inline
from sklearn import datasets, svm
import matplotlib.pyplot as plt
import numpy as np
digits = datasets.load_digits()
plt.axis('off')
clf = svm.SVC(gamma=0.001, C=100.)
clf.fit(digits.data[:-1], digits.target[:-1])
def showresult(test) :
    plt.imshow((np.asarray(test)).reshape((8,8)), cmap=plt.cm.gray_r, interpolation='nearest')
# 用于计算的部分代码已被隐藏,以下是用于预测的未知数据
# 你可以改变这个数据中的数字,但必须保证数组元素个数为64,否则将会出错
test = [0, 0, 10, 14, 8, 1, 0, 0,
        0, 2, 16, 14, 6, 1, 0, 0,
        0, 0, 15, 15, 8, 15, 0, 0,
        0, 0, 5, 16, 16, 10, 0, 0,
        0, 0, 12, 15, 15, 12, 0, 0,
        0, 4, 16, 6, 4, 16, 6, 0,
        0, 8, 16, 10, 8, 16, 8, 0,
        0, 1, 8, 12, 14, 12, 1, 0]
print("对图片的预测结果为:")
print(clf.predict(np.asarray(test)))

# 下面这个函数将自动完成绘图任务
showresult(test)

С помощью описанной выше процедуры будет обнаружено, что даже для очень размытых изображений наш классификатор может давать относительно точные результаты прогнозирования. На самом деле, производительность классификатора, полученного с помощью машинного обучения, довольно высока, он не только быстр, но и в некоторых случаях точность его классификации даже превышает человеческую. В следующем разделе мы подробно обсудим некоторые методы оценки производительности классификатора.

Просмотр и оценка эффективности классификации

Чтобы наблюдать за производительностью классификатора, мы обычно используем набор тестовых данных для тестирования и оценки классификатора после создания классификатора Конкретный процесс заключается в выборе части обучающих данных или непосредственном выборе новых данных в качестве тестовых данных. , Эти тестовые данные вводятся в классификатор для прогнозирования классификации, а затем полученные результаты классификации сравниваются с реальными результатами классификации для оценки производительности классификатора. Здесь используются несколько параметров оценки для представления точности результатов прогнозирования, а именно точность, полнота и показатель F. Подробнее о точности и полноте см.их страница в википедиипонять. Вообще говоря, значение F сочетает в себе преимущества точности и полноты и является более убедительным. Вы можете попробовать изменить параметры, выбранные при построении классификатора в подчиненной программе, чтобы наблюдать за изменениями в результатах оценки.

from sklearn import datasets, svm, metrics

digits = datasets.load_digits()
# 以下是分类器构建过程,你可以尝试修改分类器参数的数值
clf = svm.SVC(gamma=0.001, C=100.)
# 选取数据集中前500条数据作为训练数据
clf.fit(digits.data[:500], digits.target[:500])

# 选取数据集中后1000条数据作为测试数据
expected = digits.target[800:]
predicted = clf.predict(digits.data[800:])
print("分类器预测结果评估:\n%s\n"
      % (metrics.classification_report(expected, predicted)))

Выше приведен полный процесс использования sklearn для машинного обучения. Вообще говоря, полная работа по машинному обучению также должна включать в себя множество аспектов, таких как сбор и обработка данных, построение классификаторов, обучение и оценка классификаторов и визуализация данных. Мы можем еще больше углубить наше понимание процесса машинного обучения, пройдя следующий тест.

небольшой тест

Пожалуйста, выполните следующие задачи машинного обучения самостоятельно на основе приведенного выше содержания курса. Вам необходимо использовать классификатор SVM и настроить параметры самостоятельно. Используйте данные, предоставленные в программе, для обучения классификатора, а затем делайте прогнозы на тестовых данных. . Программа автоматически оценит работу классификатора и выдаст результаты оценки.

Уведомление!

Весь код в этой статье можно запустить и отладить в исходном посте Jizhi (установочная среда не требуется).кликните сюдаперейти к исходному сообщению

from sklearn import svm, metrics
import numpy as np

train = np.asarray([[1,2,3,4,5],
[4,4,0,5,6],
[4,8,7,7,8],
[5,0,2,3,0],
[8,7,6,5,2],
[3,0,3,8,4],
[5,7,8,3,6],
[9,2,0,6,3],
[6,4,1,8,6],
[3,2,3,2,8]])

target = np.asarray([1,0,1,0,0,0,1,0,0,1])

test = np.asarray([[3,4,6,5,2],
[4,1,9,3,4],
[6,2,4,8,7],
[4,8,6,5,7],
[3,8,2,2,4],
[4,6,5,9,7],
[3,4,0,7,2],
[5,9,4,5,4],
[4,2,7,3,6],
[3,9,0,1,2]])

expected = np.asarray([0,1,1,1,0,0,0,0,1,0])
predicted = np.asarray([0])
# 请完成一个基于SVM方法的分类器的构建、训练和预测工作
# 程序中已预先导入sklearn.svm库,无需再次导入
# 训练数据train、训练数据分类target、测试数据test也已存在,可直接使用
# 要求使用数组train和target对分类器进行训练,然后使用数组test进行预测
# 预测结果请记录为predicted,程序将自动进行评测

# ========= 代码 起 =========



# ========= 代码 止 =========
clf = svm.SVC(gamma=0.001, C=100.)
clf.fit(train, target)
predicted = clf.predict(test)[/amalthea_solution]
[amalthea_sct sct-method="0"]
print("分类器预测结果评估:\n%s\n"
      % (metrics.classification_report(expected, predicted)))
predicted.shape == (10,)[/amalthea_sct]
[amalthea_hint]
需要完成三个步骤:
1.构建svm分类器,添加部分参数
2.使用训练数据和训练数据的分类属性对分类器进行训练,考虑使用.fit()方法
3.使用测试数据进行预测工作,考虑使用.predict()方法

(Содержание этого курса взято изAn introduction to machine learning with scikit-learn,Если воспроизводится, укажите источник. )



Рекомендуемое чтение

Семинар TensorFlow «Фестиваль технологического опыта для девочек»

Этот комментарий ядовит! ——Общая процедура для классификации текста

Я сделал робота по имени Серсея, но она просто хотела, чтобы сир Грегор убивал меня на каждом шагу.