Машинное обучение — это область искусственного интеллекта, которая занимается созданием алгоритмов и моделей, которые могут учиться на данных и делать прогнозы или решения на основе этого обучения.
На высоком уровне процесс машинного обучения можно разбить на три основных этапа:
- Сбор и подготовка данных. Первым шагом является сбор и очистка данных, которые вы будете использовать для обучения модели. Этот шаг имеет решающее значение, поскольку качество вашей модели будет зависеть от качества ваших данных.
- Обучение модели. После подготовки данных следующим шагом будет обучение модели машинного обучения с использованием этих данных. На этом этапе модель подвергается воздействию обучающих данных и изучает отношения между входными функциями и целевой переменной.
- Оценка и развертывание модели. После обучения модели следующим шагом является оценка ее производительности на отдельном тестовом наборе данных. На основе результатов оценки может потребоваться уточнение модели или выбор другой модели. После выбора окончательной модели ее можно использовать для прогнозирования реальных сценариев.
Существует множество различных типов алгоритмов машинного обучения, в том числе контролируемое обучение, неконтролируемое обучение, частично контролируемое обучение и обучение с подкреплением, и это лишь некоторые из них. Каждый тип алгоритма предназначен для решения различных типов задач.
Эта статья представляет собой проект контролируемого машинного обучения с использованием Python. Я также использую Google Colab для выполнения этой задачи.
Во-первых, мне нужно импортировать необходимые библиотеки, например:
import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns from sklearn.preprocessing import LabelEncoder from sklearn.model_selection import train_test_split from sklearn.metrics import confusion_matrix,classification_report
Поскольку я работаю в Google Colab, а мой набор данных для этой задачи находится на моем Google Диске, мне нужно подключить Google Диск к Google Colab.
from google.colab import drive drive.mount('/content/drive')
После подключения к Google Диску мне нужно загрузить набор данных «mushrooms.csv» с помощью pandas
и просмотреть набор данных.
df = pd.read_csv('/content/drive/MyDrive/dataset/mushrooms.csv')
Мне нужно проверить все данные в переменной, используя код df.info()
. С помощью этого кода я проверю, есть ли у меня нулевые значения или типы данных моих данных.
Я также делаю визуализацию для каждой переменной в моем наборе данных, используя комбинацию циклов for
, seaborn countplot
и matplotlib.pyplot
для подсчета всех уникальных значений во всех столбцах.
for i in df.columns: sns.countplot(data=df,x=i) plt.show()
Я использую этот код ниже, если хочу узнать количество уникальных значений в каждом столбце.
df.nunique()
Следующим шагом я разделю независимую и зависимую/целевую переменную. В этом случае столбец «класс» является целевой переменной, поэтому я создам новую переменную, «y» в качестве зависимой/целевой переменной и «x» в качестве независимой переменной. Я буду кодировать так:
x=df.drop('class',axis=1) y=df['class']
А поскольку машинное обучение может обрабатывать только числовые данные, мне нужно кодировать категориальные данные в числовые данные с помощью LabelEncoder()
. Я изменю данные «x» и «y» на числовые данные.
Encoder_X = LabelEncoder() for col in x.columns: x[col] = Encoder_X.fit_transform(x[col]) Encoder_y=LabelEncoder() y = Encoder_y.fit_transform(y)
Прежде чем я реализую модель машинного обучения, мне нужно разделить данные на обучающие и тестовые данные с соотношением 8: 2.
X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=42)
После разделения на обучающие и тестовые данные я могу приступить к созданию модели машинного обучения. В этом проекте я буду использовать Random Forest для прогнозирования случая классификации. Я импортирую RandomForestClassifier
и объявлю его как rf, а X_train
и y_train
могу подогнать для моделирования.
from sklearn.ensemble import RandomForestClassifier rf = RandomForestClassifier(oob_score=True) rf.fit(X_train, y_train)
После создания модели мы начинаем сначала прогнозировать X_test
данных.
y_pred=rf.predict(X_test)
После создания модели ML и прогнозирования с ее помощью мне нужно оценить результат модели. Есть 2 способа сделать это: матрица путаницы и отчет о классификации. Для матрицы путаницы я буду использовать тепловую карту, чтобы лучше понять результат прогноза.
sns.heatmap(confusion_matrix(y_test, y_pred),annot=True);
Результат для случайного леса в соответствии с матрицей путаницы заключается в том, что нет ложноположительных или ложноотрицательных прогнозов. Прогноз генерирует только истинно положительные и истинно отрицательные. Это означает, что результат достиг идеальной точности.
Помимо матрицы путаницы, я мог оценить ее с помощью отчета о классификации. Отчет о классификации также используется для определения точности, отзыва и оценки f1.
print(classification_report(y_test,y_pred))
Результатом этого отчета о классификации является то, что точность для обоих классов составляет 1,00, что означает, что все положительные прогнозы, сделанные классификатором, являются точными. Отзыв для обоих классов равен 1,00, что означает, что классификатор смог идентифицировать все положительные экземпляры. Оценка F1 для обоих классов равна 1,00, что указывает на то, что классификатор имеет как высокую точность, так и высокую полноту.
В целом отчет о классификации показывает, что точность классификатора составляет 100 % (1,00) с идеальной точностью, полнотой и оценкой F1 для обоих классов. Это отличная производительность для классификатора, которая указывает на то, что он может точно прогнозировать метки классов для всех экземпляров в наборе тестов.
Кроме того, это мой Сертификат мастерства.