Python機器學習之旅|手把手帶你探索IRIS數據集


系列導讀

01.Python機器學習之旅|第一個項目

前言

大家好,關於數據挖掘或者機器學習的理論我想大家應該都已經了解很多,而數據挖掘的工具例如PandasNumPySklearn等在歷史文章都有所介紹,因此今天我們將開始第二個案例實戰也是使用非常多的IRIS數據集:根據花瓣和花萼的長寬預測鳶尾花的種類。

加載數據

首先我們打開Jupyter Notebook導入相關庫

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn import model_selection
from sklearn.metrics import accuracy_score
from sklearn.linear_model import LogisticRegression
from sklearn.linear_model import LinearRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC
from pandas.plotting import scatter_matrix

接下來就是加載數據集,雖然在Sklearn庫中內置了IRIS數據集,但是在這我使用處理好的數據

可以看到我們一共有150條數據,每條數據的前四列對應是花萼長度,花萼寬度,花瓣長度,花瓣寬度,最后一列就是花的種類,現在我們就需要通過這4個特征預測鳶尾花卉屬於(iris-setosa/iris-versicolor/iris-virginica)中的哪一品種。

 

探索性分析

本節對數據集進行一些探索性分析,首先查看每一類的情況

可以看到我們的數據很完整,一共150條數據每類50條,再查看數據的描述統計

接着我們通過箱線圖直方圖來觀察數據的最值,中位數和偏差與數據分布

進一步,我們可以繪散點圖來觀察四個變量之間的關聯

可以看到有些變量之前有着明顯的相關性,因此我們可以進行預測

建模分類

現在開始建模分類,和之前的例子一樣,我們將數據集划分為訓練集和測試集。因為我們的數據集只有150條記錄,所以將使用120條記錄來訓練模型,剩下的30條記錄用來評估模型

array = data.values
X = array[:,0:4]
Y = array[:,4]
x_train, x_test, y_train, y_test = model_selection.train_test_split(X, Y, test_size=0.2, random_state=7)

用於分類的模型很多,本文將使用以下四種經典算法來建模並進行評估:

  • K近鄰(KNN)

  • 支持向量機(SVM)

  • 隨機森林(RF)

  • 邏輯回歸(LR)

關於這幾種算法的理論並不會在本文詳細展開,事實上可以通過百度輕松查到每一種算法的推導與應用,你應該了解后再往下進行。


 

OK,現在我們直接來實現,在Python中實現並不困難,以KNN為例,僅需4行代碼即可完成訓練模型和評估

model = KNeighborsClassifier()
model.fit(x_train,y_train)
predictions = model.predict(x_test)
print(accuracy_score(y_test, predictions))

其他三種算法的實現過程也是類似的,最后我們來看來四種算法的正確率

從結果可以看到,KNN的效果最好為90%,而基於決策樹的隨機森林表現較差為83.3%,當然由於隨機性每次的結果可能不同,感興趣的讀者可以多試幾次。

結束語

以上就是使用著名的IRIS數據集並使用分類算法創建和訓練模型的全部過程,當然你也可以使用更大的數據集/不同的模型來進行訓練。文中使用的數據可以在『早起Python』后台回復:ML獲取。感興趣的話一定要動手敲一遍代碼!下一期將繼續以這種形式來介紹經典的機器學習案例,如果你喜歡本系列的話請點個在看讓我知道,拜拜~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM