Мы обсуждали EDA в наборе данных Iris в последнем сообщении блога. Если вы еще не читали, посмотрите мой последний пост

В этом посте я попытаюсь реализовать различные модели машинного обучения и увидеть различия между ними и показатели точности.

Без дальнейших промедлений приступим к делу. Как обсуждалось в предыдущем посте, набор данных Iris содержит подробную информацию о характеристиках цветков ириса, таких как длина и ширина лепестков, длина и ширина чашелистиков, и они относятся к 3 категориям: девственные, разноцветные и щетинковидные. Наша цель — классифицировать эти объекты по 3 категориям на основе входных признаков.

Блокнот Jupyter с исходным кодом можно найти здесь.

Разделение набора данных:

Перед внедрением какой-либо модели нам необходимо разделить набор данных на наборы обучающего и тестового. Мы используем класс train_test_splitиз библиотеки sklearn.model_selection, чтобы разделить наш набор данных.

из sklearn.model_selection import train_test_split
train,test=train_test_split(data,test_size=0.3)

Приведенный выше код разделит набор данных на 70 % в виде поезда и 30 % в виде тестовых наборов данных.

поезд.форма, тест.форма

((105, 5), (45, 5))

Теперь давайте разделим обучающие и тестовые наборы на входные и выходные наборы.

train_X=train[['Длина чашелистика',"Ширина чашелистика","Длина лепестка","Ширина лепестка"]]
train_y=train.Species
test_X=test[['Длина чашелистика'," Ширина чашелистика», «Длина лепестка», «Ширина лепестка»]]
test_y=test.Species

1. Модель деревьев решений:

Сначала давайте начнем с Модели деревьев решений.

Дерево решений строит классификационные или регрессионные модели в виде древовидной структуры. Он разбивает набор данных на все меньшие и меньшие подмножества, в то же время постепенно разрабатывается соответствующее дерево решений. Конечным результатом является дерево с узлами решений и конечными узлами. Он использует Энтропию и Прирост информации для построения дерева решений.

Энтропия

Энтропия определяет, как дерево решений принимает решение разделить данные. На самом деле это влияет на то, как Дерево решений рисует свои границы.

Получение информации:

Прирост информации (IG) измеряет, сколько информации функция дает нам о классе.

Нам нужно импортировать DecisionTreeClassifierиз sklearn.tree, чтобы реализовать нашу модель классификатора дерева решений, а также импортировать метрикифункция для расчета показателя точности модели.

из sklearn.tree импорт DecisionTreeClassifier
из sklearn импорт метрик

Давайте построим модель дерева решений на поезде.

dtmodel=DecisionTreeClassifier()
dtmodel.fit(train_X,train_y)

Мы можем предсказать вывод тестового набора данных, используя функцию предсказания(). Давайте сделаем это.

dtpredict=dtmodel.predict(test_X)

И вычислить показатель точности модели.

dtaccuracy=metrics.accuracy_score(dtpredict,test_y)
print("Точность модели дерева решений составляет {}".format(dtaccuracy * 100))

Decission Tree Model Accuracy is 93.33333333333333

Оценка точности нашей модели дерева решений составляет 93,33%. Любопытно узнать, какие ошибочно предсказанные рекорды?

test_preddf=test.copy()
test_preddf['Предсказываемые виды']=dtpredict
неправильное значение = test_preddf.loc[test['Виды'] != dtpredict]
неправильное

Как мы видим на рисунке выше, 77-я проиндексированная запись на самом деле относится к виду versicolor, но прогнозируется как virginica, а другие 2 (133-я, 129-я) записи относятся к virginica но прогнозируется как разноцветный.

Мы обсудим Модель логистической регрессии и SVM (модель опорных векторов) в следующих сообщениях.