Второй день моего челленджа по случайным наборам данных. Я разместил небольшую предысторию здесь о том, как я (и до сих пор) стремился решать случайный набор данных в день, чтобы улучшить свои навыки в области обработки данных.
Итак, на этот раз мой генератор случайных ссылок на наборы данных выдал простую, но классическую задачу классифицировать рукописные цифры. Не думаю, что это требует больших пояснений, но я все же решил добавить маленькое, если вы, возможно, новичок, и вам довелось наткнуться на мой маленький виртуальный остров здесь. Здравствуйте, я Шраддха, приятно познакомиться. Вот короткое вступление после этого длинного.
О рукописном наборе данных: -
Доступный здесь набор рукописных данных состоит из 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.