KNN演算法鳶尾花分類
阿新 • • 發佈:2018-11-20
1.Sklearn篇
# load_iris是機器學習庫自帶研究演算法的資料 鳶尾花 from sklearn.datasets import load_iris # 獲取訓練資料 iris=load_iris() # iris # 獲取資料 data=iris.data target=iris.target target_names=iris.target_names feature_names=iris.feature_names from pandas import Series,DataFrame features=DataFrame(data=data,columns=feature_names) features.head() features.iloc[:,0].std() features.iloc[:,1].std() features.iloc[:,2].std() features.iloc[:,3].std() # 訓練資料取130條 總資料150條 X_train=features.iloc[0:130,2:4] # X_train y_train=target[:130] # print(y_train) # 測試資料取20條 總資料150條 x_test=features.iloc[130:,2:4] y_test=target[130:] display(X_train.shape,y_train.shape,x_test.shape,y_test.shape) import matplotlib.pyplot as plt %matplotlib inline samples=features.iloc[:,2:4] # display(samples) # 橫座標花瓣的長度 縱座標花瓣的寬度 顏色不同代表花瓣種類不同 plt.scatter(samples.iloc[:,0],samples.iloc[:,1],c=target) # 訓練資料 knnclf.fit(X_train,y_train) # 計算精確度 knnclf.score(x_test[:20],y_test[:20]) # 預測 y_=knnclf.predict(x_test) # 模型準確度的評估 y_test真實的鳶尾花分類 y_test # 預測的鳶尾花分類 y_
上述程式碼對比展示預測分類與真實分類並計算精確度
圖形化程式碼
from matplotlib.colors import ListedColormap cmap=ListedColormap(['#FF0000','#00FF00','#0000FF']) # 花瓣的長度最小值到最大值範圍 xmin,xmax=samples.iloc[:,0].min(),samples.iloc[:,0].max() # 花瓣的寬度最小值到最大值範圍 ymin,ymax=samples.iloc[:,1].min(),samples.iloc[:,1].max() display(xmin,xmax,ymin,ymax) x=np.linspace(xmin,xmax,100) y=np.linspace(ymin,ymax,100) display(x,y) xx,yy=np.meshgrid(x,y) display(xx,yy) x_test=np.c_[xx.ravel(),yy.ravel()] display(x_test,x_test.shape) # 預測 y_=knnclf.predict(x_test) y_test #繪製圖形 plt.scatter(x_test[:,0],x_test[:,1],c=y_,cmap=cmap) plt.scatter(samples.iloc[:,0],samples.iloc[:,1],c=target)