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

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

О рукописном наборе данных: -

Доступный здесь набор рукописных данных состоит из 64 переменных признаков, каждая из которых имеет значение от 0 до 16. Данные были предварительно обработаны, и из исходного формата были извлечены нормализованные растровые изображения рукописных цифр. Цель здесь состоит в том, чтобы пометить цифры от 0 до 9 на основе предыдущих 64 входных значений.

Небольшое предупреждение, если вы хотите реализовать этот код самостоятельно, загрузите наборы данных с именами «optdigits.tes» и «optdigits.tra»,как они уже предварительно обработаны. И не забудьте изменить расширение файлов на .csv для файлов CSV после их загрузки в папку. Таким образом, вы можете легко загружать наборы данных в pandas DataFrame.

Код для достижения этого очень прост и имеет хорошую точность 97,99% при оценке на прилагаемом тестовом наборе данных.

# Classification of Handwritten Digits
# Importing libraries
import pandas as pd, numpy as np
# Importing datasets
dataset_train = pd.read_csv(‘optdigits_train.csv’)
ds_test = pd.read_csv(‘optdigits_test.csv’)
# Totally optional; I just decided to rename the label col to class
dataset_train = dataset_train.rename(columns = {‘0.26’: ‘class’})
ds_test = ds_test.rename(columns = {‘0.29’: ‘class’})
# Matrix of independent features and the target label
X = dataset_train.iloc[:, :-1 ].values
y = dataset_train.iloc[:, -1].values
X_test = ds_test.iloc[:, :-1].values
y_test = ds_test.iloc[:, -1].values
# Fitting the K-NN Classifier model on the training dataset
from sklearn.neighbors import KNeighborsClassifier
classifier = KNeighborsClassifier(n_neighbors = 1, metric =   ‘minkowski’, p = 2)
classifier.fit(X, y)
# Predicting labels
y_pred = classifier.predict(X_test)
# Accuracy of the predictions
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y_test, y_pred)
# K-Fold Cross Validation
from sklearn.model_selection import cross_val_score
accuracies = cross_val_score(estimator = classifier, X = X, y = y, cv = 10)
print(“\nMean of the Accuracies after cross-validation: “, accuracies.mean())
print(“\nStandard Deviation within the accuracies: “, accuracies.std())
print(‘\nAccuracy: ‘, accuracy)

Как обычно, давайте посмотрим на скриншоты точности, которые я получил.

Точность модели при оценке с помощью тестовых данных:

Среднее значение точности при 10-кратной перекрестной проверке (Могу ли я использовать это таким образом?) на обучающих данных:

Стандартное отклонение в пределах точности при 10-кратной перекрестной проверке (снова) данных обучения:

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

Спасибо, что прочитали эту статью/руководство. Если вы хотите ознакомиться с другими работами по науке о данных, посетите мойрепозиторий GitHub.