Введение
В этом лабораторном задании мы будем исследовать набор данных digits из scikit - learn. Этот набор данных состоит из 1797 изображений размером 8x8 пикселей, каждое из которых представляет собой рукописную цифру от 0 до 9. Наша цель - проанализировать этот набор данных и понять, как мы можем использовать его для классификации рукописных цифр с использованием алгоритмов машинного обучения.
Советы по использованию ВМ
После запуска ВМ нажмите в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.
Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook не загрузится полностью. Валидация операций не может быть автоматизирована из - за ограничений в Jupyter Notebook.
Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Импорт набора данных
Первым шагом является импорт набора данных digits из scikit - learn с использованием следующего кода:
from sklearn import datasets
## Load the digits dataset
digits = datasets.load_digits()
Визуализация набора данных
Для лучшего понимания набора данных мы можем визуализировать образец изображения с использованием matplotlib. Следующий код отображает последнюю цифру в наборе данных:
import matplotlib.pyplot as plt
## Display the last digit
plt.figure(1, figsize=(3, 3))
plt.imshow(digits.images[-1], cmap=plt.cm.gray_r, interpolation="nearest")
plt.show()
Подготовка набора данных для машинного обучения
Прежде чем мы сможем обучить модель машинного обучения на наборе данных, нам нужно подготовить данные, разделив их на обучающий и тестовый наборы. Мы можем сделать это с использованием функции train_test_split из scikit - learn:
from sklearn.model_selection import train_test_split
## Split the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target, test_size=0.2, random_state=42)
Обучение модели машинного обучения
Теперь, когда мы подготовили набор данных, мы можем обучить модель машинного обучения на обучающих данных. В этом примере мы будем использовать алгоритм Support Vector Machine (SVM):
from sklearn.svm import SVC
## Create the SVM classifier
clf = SVC(kernel='linear')
## Train the classifier on the training data
clf.fit(X_train, y_train)
Оценка модели
Для оценки производительности нашей модели мы можем использовать функцию accuracy_score из scikit - learn:
from sklearn.metrics import accuracy_score
## Predict the labels of the test set
y_pred = clf.predict(X_test)
## Calculate the accuracy of the model
accuracy = accuracy_score(y_test, y_pred)
## Print the accuracy of the model
print("Accuracy:", accuracy)
Улучшение модели
Если точность нашей модели неудовлетворительна, мы можем попробовать улучшить ее, настроив гиперпараметры алгоритма SVM. Например, мы можем попробовать изменить значение параметра C:
## Create the SVM classifier with a different value of C
clf = SVC(kernel='linear', C=0.1)
## Train the classifier on the training data
clf.fit(X_train, y_train)
## Predict the labels of the test set
y_pred = clf.predict(X_test)
## Calculate the accuracy of the model
accuracy = accuracy_score(y_test, y_pred)
## Print the accuracy of the model
print("Accuracy:", accuracy)
Резюме
В этом практическом занятии мы изучили набор данных digits из scikit - learn и узнали, как обучать модель машинного обучения для классификации рукописных цифр. Мы также узнали, как оценивать производительность модели и как улучшать ее, настраивая гиперпараметры алгоритма. Этот набор данных - отличный ресурс для любого, кто интересуется изучением алгоритмов классификации в машинном обучении.