導入數據
from sklearn.datasets import load_iris
鳶尾花這個數據中只有150個樣本,所以對訓練數據的維度不做過多處理。
這個案例比較簡單,整體代碼如下:
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# 讀取數據
iris = load_iris()
# 進行數據分割,測試集大小設爲0.1
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2)
# 標準化處理
std = StandardScaler()
x_train = std.fit_transform(x_train)
x_test = std.transform(x_test)
# 進行算法流程,
knn = KNeighborsClassifier(n_neighbors=3)
#訓練函數,返回的是對象本身
knn.fit(x_train, y_train)
# 測試得出預測結果
y_predict = knn.predict(x_test)
# 得出準確率
print('準確率:', knn.score(x_test, y_test))
k值取多大?有什麼影響?
k值取很小:容易受異常點影響
k值取很大:容易受最近數據太多導致比例變化
本案例中樣本數量不是很多,我對k值進行了變換,得出的準確率差別不是很大。