1. 程式人生 > >KNN演算法鳶尾花分類

KNN演算法鳶尾花分類

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)



圖形化分類展示結果