開始你的第一個機器學習項目|文末送書mp.weixin.qq.com
前言
大家好,關于資料挖掘或者機器學習的理論我想大家應該都已經了解很多,而資料挖掘的工具例如
Pandas、
NumPy、
Sklearn等在曆史文章都有所介紹,是以今天我們将開始第二個案例實戰也是使用非常多的
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擷取。感興趣的話一定要
動手敲一遍代碼!下一期将繼續以這種形式來介紹經典的機器學習案例,如果你喜歡本系列的話請點個在看讓我知道,拜拜~