Набор данных Iris — это набор данных, используемый новичками для изучения работы базовых алгоритмов классификации. Данные по ирисам основаны на видах цветков ириса. Вы можете получить CSV-версию этого набора данных здесь.
Он имеет 4 функции: длина чашелистика, ширина чашелистика, длина лепестка, ширина лепестка, все они указаны в сантиметрах. В общей сложности он имеет 150 строк данных, состоящих из 3 видов, по 50 строк для каждого вида. Затем также дается столбец с его видами.
Общий способ работы машинного обучения заключается в том, что мы должны разделить данные на тестовые данные и обучающие данные. Тестовые данные не содержат столбец «Виды», потому что эти данные должны быть основаны на модели, а данные поезда содержат все функции и цель. Функции называются X, а Target называются Y. Итак, данные разделены на X Train, Y Train и X Test и Y Test данные. Эти обучающие и тестовые данные разделяются с помощью простой функции из модуля sklearn train_test_split(), и пропорция должна быть 0,75, что означает, что 75% от общего объема данных должны быть обучены, а оставшиеся данные должны быть для тестовых данных.
Затем выбирается алгоритм ML. Поскольку это относится к классификации, мы можем использовать 3 алгоритма, а именно LogisticRegression, KNeighborsClassification и DecisionTreeClassifier. После выбора алгоритма нам просто нужно вписать данные X Train и Y Train в модель, а затем спрогнозировать данные X Test и получить прогнозируемый результат. Прогнозируемый результат можно сравнить с фактическими данными теста Y, чтобы определить точность прогноза.
Вот как выглядят данные.
На приведенном выше изображении видно, что при сравнении идентификатора/серийного номера данных поезда и тестовых данных каждая строка в X соответствует своему виду в Y.
Теперь мы можем заглянуть в часть кодирования.
import pandas as pd from sklearn import neighbors from sklearn import tree from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score from sklearn.model_selection import train_test_split
Весь модуль, импортированный в этот код, очень важен, и использование
- Pandas: Pandas используется для загрузки данных из файла Excel в программу Python в виде DataFrame. Этот модуль можно использовать для импорта данных из любого файла данных, такого как Excel, csv и многое другое.
- sklearn: sklearn — очень важный пакет для всех, кто хотел бы заниматься машинным обучением. Этот пакет содержит все алгоритмы ML, метрики для тестирования и многое другое.
Как установить панды и sklearn
- Установите последнюю версию python здесь, лучше всего подходит версия 3.9 или 3.10 и добавьте пункт в путь.
- Затем, чтобы установить pandas, откройте cmd и введите эту команду
pip install pandas
или, если у вас есть conda, перейдите в терминал conda и введите эту командуconda install pandas
. - Затем, чтобы установить sklearn, в той же cmd введите эту команду
pip install -U scikit-learn
или на conda перейдите на этот сайт.
Затем вторым шагом в кодировании является загрузка данных в программу с библиотекой pandas.
iris_data = pd.read_csv(“path_to_dataset”)
В зависимости от типа документа файла данных, будь то CSV или Excel, можно использовать различные функции. Так что будьте внимательны при выборе метода. Ниже приведены два наиболее часто используемых метода.
- Excel — read_excel («путь_к_файлу данных»)
- csv — read_csv(‘path_to_datafile’)
Замените путь к файлу данных фактическим путем, по которому находится файл данных.
Затем третий шаг в кодировании заключается в удалении столбца Id, который бесполезен для алгоритма. Таким образом, для удаления столбца или строки используется метод drop(), который принимает два аргумента. Один из них — это имя столбца или строки, а следующий аргумент — это ось. Ось может принимать два значения: 0, представляющий строку, и 1, представляющий столбец.
iris_data = iris_data.drop(‘Id’, axis=1)
Затем следует часть разделения данных на обучающие и тестовые данные. Поскольку X не имеет столбца «Виды», он удаляется, а Y содержит только столбец «Виды». Затем используется функция train_test_split(), передающая три аргумента: X, Y и train_size, равный 75%, как было сказано ранее. Тестовые данные должны содержать 75% данных, а оставшиеся 25% должны быть тестовыми данными. .
x = iris_data.drop(‘Species’, axis=1) y = iris_data[‘Species’] x_train, x_test, y_train, y_test = train_test_split(x, y, train_size=0.75)
Затем последней частью кода является выбор алгоритма и обучение модели, получение оценки точности и прогнозов.
- Линейная регрессия
logistic_regression = LogisticRegression() logistic_regression.fit(x_train, y_train) logistic_predictions = logistic_regression.predict(x_test) print(‘Accuracy with Logistic Regression is %.2f’ % (accuracy_score(y_test, logistic_predictions) * 100))
2. KNeighboursClassifier
k_classifier = neighbors.KNeighborsClassifier() k_classifier.fit(x_train, y_train) k_neighbors_predictions = k_classifier.predict(x_test) print(‘Accuracy with KNeighborsClassifier is %.2f’ % (accuracy_score(y_test, k_neighbors_predictions) * 100))
3. Классификатор дерева решений
decision_classifier = tree.DecisionTreeClassifier() decision_classifier.fit(x_train, y_train) decision_classifier_predictions = decision_classifier.predict(x_test) print(‘Accuracy with DecisionTreeClassifier is %.2f’ % (accuracy_score(y_test, decision_classifier_predictions) * 100))
Затем, чтобы сравнить прогнозы с его оценкой точности, вы можете дополнительно создать DataFrame с используемым алгоритмом ML, прогнозами для каждого алгоритма и его оценкой точности.
result_data = [logistic_predictions, k_neighbors_predictions, decision_classifier_predictions] result_predictions = [(accuracy_score(y_test, logistic_predictions) * 100), (accuracy_score(y_test, k_neighbors_predictions) * 100), (accuracy_score(y_test, decision_classifier_predictions) * 100)] data_frame = pd.DataFrame([result_data, result_predictions], columns=[‘Logistic Regression’, ‘KNeighborsClassification’, ‘DecisionTreeClassification’]) data_frame = data_frame.T data_frame.columns = [‘Predictions’, ‘Accuracy’]
Окончательный обзор кодировок приведен ниже.
import pandas as pd from sklearn import neighbors from sklearn import tree from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score from sklearn.model_selection import train_test_split # %% Loading Iris Data into a DataFrame iris_data = pd.read_csv(“E:\\Dataset\\Iris\\Iris.csv”) # %% Filtering the Data iris_data = iris_data.drop(‘Id’, axis=1) # %% Splitting the Train and Test Data x = iris_data.drop(‘Species’, axis=1) y = iris_data[‘Species’] x_train, x_test, y_train, y_test = train_test_split(x, y, train_size=0.75) # %% Logistic Regression logistic_regression = LogisticRegression() logistic_regression.fit(x_train, y_train) logistic_predictions = logistic_regression.predict(x_test) print(‘Accuracy with Logistic Regression is %.2f’ % (accuracy_score(y_test, logistic_predictions) * 100)) # %% KNeighborsClassifier k_classifier = neighbors.KNeighborsClassifier() k_classifier.fit(x_train, y_train) k_neighbors_predictions = k_classifier.predict(x_test) print(‘Accuracy with KNeighborsClassifier is %.2f’ % (accuracy_score(y_test, k_neighbors_predictions) * 100)) # %% DecisionTreeClassifier decision_classifier = tree.DecisionTreeClassifier() decision_classifier.fit(x_train, y_train) decision_classifier_predictions = decision_classifier.predict(x_test) print(‘Accuracy with DecisionTreeClassifier is %.2f’ % (accuracy_score(y_test, decision_classifier_predictions) * 100)) # %% Creating a Comparison DataFrame with The predictions with all 3 Algorithms and its accuracy result_data = [logistic_predictions, k_neighbors_predictions, decision_classifier_predictions] result_predictions = [(accuracy_score(y_test, logistic_predictions) * 100), (accuracy_score(y_test, k_neighbors_predictions) * 100), (accuracy_score(y_test, decision_classifier_predictions) * 100)] data_frame = pd.DataFrame([result_data, result_predictions], columns=[‘Logistic Regression’, ‘KNeighborsClassification’, ‘DecisionTreeClassification’]) data_frame = data_frame.T data_frame.columns = [‘Predictions’, ‘Accuracy’]
Я использовал DataSpell IDE для этого проекта. Вы можете скачать это здесь.