今日分享:鳶尾花分類 KNN模型評價web
一:實例流程算法
一、獲取數據:是否須要利用pandas讀取數據微信
二、數據處理:選定特徵值及目標值,若存在缺失值,則需進行處理機器學習
三、進行特徵工程:若特徵值爲數值型數據,考慮是否進行標準化處理;若特徵值中存在類別型的文本數據,需進行one-hot編碼處理,實現途徑,使用pandas轉換成字典,進行特徵抽取 ;若數據維度較高,考慮是否須要降維處理。學習
四、實例化估計器,訓練,預測測試
二:數據集介紹編碼
本次示例的數據集爲sklearn中自帶的數據集(機器學習中數據相關介紹 sklearn數據集介紹),數據文件已默認下載到本地中,使用時直接導入便可。順便經過iris數據集來代碼演示一下自帶數據集的相關操做spa
三:代碼演示.net
#導入相關庫
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
def knn_iris():
'''K-近鄰模型對鳶尾花進行分類'''
#加載數據集
iris = load_iris()
#劃分數據集
#切記 x_train,x_test,y_train,y_test 順序位置必定不能寫錯
#括號中參數分別爲 (特徵值 目標值 測試集大小佔比) 佔比可自行設定 經常使用0.25
x_train,x_test,y_train,y_test = train_test_split(iris.data,iris.target,test_size=0.25)
'''特徵工程(標準化)'''
std = StandardScaler()
#對測試集和訓練集的特徵值進行標準化
x_train = std.fit_transform(x_train)
x_test = std.transform(x_test)
#Knn模型實例化
knn = KNeighborsClassifier()
#訓練數據
knn.fit(x_train,y_train)
print('得出預測結果')
y_predict = knn.predict(x_test)
print(y_predict)
print('得出預測準確率')
print(knn.score(x_test,y_test))
if __name__ == '__main__':
knn_iris()
輸出結果3d
得出預測結果
[0 1 1 0 0 2 1 0 0 0 1 2 1 0 2 2 0 1 2 2 1 1 1 0 1 0 2 1 0 0 1 1 2 2 1 1 1
0]
得出預測準確率
0.9736842105263158
因爲該數據集是專門方便學習者用來學習練習分類算法的,所以其預測的準確率仍是很高的
二:KNN模型評價
KNN模型時比較簡單易上手的一種分類模型,可是該模型也存在一些問題,好比說:
k值取多大爲好呢?大小又有什麼影響?k值取很小:容易受異常點影響;k值取很大:容易受最近數據太多致使比例變化
優缺點
優勢:簡單,易於理解,易於實現,無需估計參數,無需訓練
缺點:懶惰算法,對測試樣本分類時的計算量大,內存開銷大必須指定K值,K值選擇不當則分類精度不能保證
公衆號 QQ羣
掃QQ羣二維碼進交流學習羣
或在後臺回覆:加羣
本文分享自微信公衆號 - 數據指南(BigDataDT)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。