Набор данных 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

Весь модуль, импортированный в этот код, очень важен, и использование

  1. Pandas: Pandas используется для загрузки данных из файла Excel в программу Python в виде DataFrame. Этот модуль можно использовать для импорта данных из любого файла данных, такого как Excel, csv и многое другое.
  2. sklearn: sklearn — очень важный пакет для всех, кто хотел бы заниматься машинным обучением. Этот пакет содержит все алгоритмы ML, метрики для тестирования и многое другое.

Как установить панды и sklearn

  1. Установите последнюю версию python здесь, лучше всего подходит версия 3.9 или 3.10 и добавьте пункт в путь.
  2. Затем, чтобы установить pandas, откройте cmd и введите эту команду pip install pandas или, если у вас есть conda, перейдите в терминал conda и введите эту команду conda install pandas .
  3. Затем, чтобы установить sklearn, в той же cmd введите эту команду pip install -U scikit-learn или на conda перейдите на этот сайт.

Затем вторым шагом в кодировании является загрузка данных в программу с библиотекой pandas.

iris_data = pd.read_csv(“path_to_dataset”)

В зависимости от типа документа файла данных, будь то CSV или Excel, можно использовать различные функции. Так что будьте внимательны при выборе метода. Ниже приведены два наиболее часто используемых метода.

  1. Excel — read_excel («путь_к_файлу данных»)
  2. 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)

Затем последней частью кода является выбор алгоритма и обучение модели, получение оценки точности и прогнозов.

  1. Линейная регрессия
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 для этого проекта. Вы можете скачать это здесь.