knn的python代码_KNN-python代码实现
KNN屬于機器學習中的監督學習,其核心思想即“物以類聚,人以群分”。
監督學習算法的基本流程
1.歸一化數據樣本集
2.劃分樣本集為訓練集和測試集
3、以訓練集為算法參考系,測試集來測試算法
4、計算預測樣品標簽和真實樣品標簽的比值來評估算法的準確率
5、調節不同的參數找到最優算法參數
代碼實現
1.調用KNN函數來實現分類 (數據采用的是經典的iris數據,是三分類問題)
# 讀取相應的庫
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
import numpy as np
# 讀取數據 X, y
iris = datasets.load_iris()
X = iris.data
y = iris.target
print (X, y)
# 把數據分成訓練數據和測試數據(默認25為測試數據,75%為訓練數據)#random_state=2003為隨機數種子,作用參https://www.jianshu.com/p/4deb2cb2502f
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=2003)
# 構建KNN模型, K值(n_neighbors)為3、 并做訓練(fit)
clf = KNeighborsClassifier(n_neighbors=3)
clf.fit(X_train, y_train)
# 計算準確率
from sklearn.metrics import accuracy_score
correct = np.count_nonzero((clf.predict(X_test)==y_test)==True)
print ("Accuracy is: %.3f" %(correct/len(X_test)))
#accuracy_score(y_test, clf.predict(X_test))
2.從零開始自己寫一個KNN算法
# 讀取相應的庫,并導入數據
from sklearn import datasets
from collections import Counter # 為了做投票
from sklearn.model_selection import train_test_split
import numpy as np
# 導入iris數據
iris = datasets.load_iris()
X = iris.data
y = iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=2003)
#歐式距離函數 與 分類函數
def euc_dis(instance1, instance2):
"""
計算兩個樣本instance1和instance2之間的歐式距離
instance1: 第一個樣本, array型
instance2: 第二個樣本, array型
"""
# TODO
dist = np.sqrt(sum((instance1 - instance2)**2))
return dist
def knn_classify(X, y, testInstance, k):
"""
給定一個測試數據testInstance, 通過KNN算法來預測它的標簽。
X: 訓練數據的特征
y: 訓練數據的標簽
testInstance: 測試數據,這里假定一個測試數據 array型
k: 選擇多少個neighbors?
"""
# TODO 返回testInstance的預測標簽 = {0,1,2}
distances = [euc_dis(x, testInstance) for x in X]
kneighbors = np.argsort(distances)[:k]
count = Counter(y[kneighbors])
return count.most_common()[0][0]
#預測結果
predictions = [knn_classify(X_train, y_train, data, 3) for data in X_test]
correct = np.count_nonzero((predictions==y_test)==True)
#accuracy_score(y_test, clf.predict(X_test))
print ("Accuracy is: %.3f" %(correct/len(X_test)))
總結
以上是生活随笔為你收集整理的knn的python代码_KNN-python代码实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pythongui选哪个方案好_谈谈py
- 下一篇: python re模块下载_python