На этом шаге мы подитожим рассмотренное в предыдущих шагах.
Давайте подытожем то, чему мы научились в предыдущих шагах. Мы начали с краткого введения в машинное обучение и сфер его применения, затем обсудили различие между обучением с учителем и обучением без учителя и дали краткий обзор инструментов, которые мы будем использовать в дальнейшем. Затем мы сформулировали задачу классификации ирисов на основе проведенных измерений характеристик цветов. Мы использовали набор данных, в котором эксперт уже предварительно классифицировал ирисы для построения модели, таким образом, мы решали задачу обучения с учителем. Было три возможных сорта ирисов - setosa, versicolor и virginica, что делало нашу задачу задачей 3-классовой классификации. В задаче классификации возможные сорта ирисов называются классами (classes) а сами названия сортов - метками (labels).
Набор данных Iris состоит из двух массивов NumPy: один содержит данные и в scikit-learn обозначается как X, другой содержит правильные или нужные ответы и обозначается как у. Массив Х представляет собой двумерный массив признаков, в котором одна строка соответствует одной точке данных, а один столбец - одному признаку. Массив у представляет собой одномерный массив, который для каждого примера содержит метку класса, целое число от 0 до 2.
Мы разделили наш набор данных на обучающий набор (training set), чтобы построить нашу модель, а также тестовый набор (test set), чтобы оценить, насколько хорошо наша модель будет классифицировать новые, ранее незнакомые ей данные.
Мы выбрали алгоритм классификации k ближайших соседей, который генерирует прогноз для новой точки данных, рассматривая ее ближайшего соседа(ей) в обучающем наборе. Все это реализовано в классе KNeighborsClassifier, который содержит алгоритм, строящий модель, а также алгоритм, который дает прогнозы, используя построенную модель. Мы создали объект-экземпляр класса, задав параметры. Затем мы построили модель, вызвав метод fit и передав обучающие данные (X_train) и обучающие ответы (y_train) в качестве параметров. Мы оценили качество модели с использованием метода score, который вычисляет правильность модели. Мы применили метод score к тестовым данным и тестовым ответам и обнаружили, что наша модель демонстрирует правильность около 97%. Это означает, что модель выдает правильные прогнозы для 97% наблюдений тестового набора.
Это убедило нас в том, что модель можно применить к новым данным (в нашем примере это измерения характеристик новых цветов), и мы надеемся, что эта модель даст правильные прогнозы в 97% случаев.
Ниже приводится краткое изложение программного кода, необходимого для всей процедуры обучения и оценки модели:
[In 26]: X_train, X_test, y_train, y_test = train_test_split(iris_dataset['data'], iris_dataset['target'], random_state=0) knn = KNeighborsClassifier(n_neighbors=1) knn.fit(X_train, y_train) print("Правильность на тестовом наборе: {:.2f}".format(knn.score(X_test, y_test))) Правильность на тестовом наборе: 0.97
Этот фрагмент содержит базовый код, необходимый для применения любого алгоритма машинного обучения с помощью scikit-learn. Методы fit, predict и score являются общими для моделей контролируемого обучения в scikit-learn и, используя принципы, приведенные в этих шагах, вы можете применить эти модели для решения различных задач машинного обучения. В следующих шагах мы подробнее рассмотрим различные модели машинного обучения с учителем, имеющиеся в scikit-learn, и расскажем, как успешно применять их.
Со следующего шага мы начнем рассматривать методы машинного обучения с учителем.