K近邻算法(二)

def KNN_classify(k, X_train, y_train, x):
    assert 1 <= k <= X_train.shape[0], "k must be valid"
    assert X_train.shape[0] == y_train.shape[0], \
        "the size of X_train must equal to the size of y_train"
    assert X_train.shape[1] == x.shape[0], \
        "the feature number of x must be equal to X_train"
    # 求距离
    distances = [sqrt(np.sum((x_train - x) ** 2)) for x_train in X_train]
    nearest = np.argsort(distances)
    topK_y = [y_train[i] for i in nearest[:k]]
    votes = Counter(topK_y)
    return votes.most_common(1)[0][0]

 sklearn 库的使用

from sklearn.neighbors import KNeighborsClassifier
KNN_classifier = KNeighborsClassifier(n_neighbors=5) 
#n_neighbors 即是k
KNN_classifier.fit(X_train, y_train) 
print(KNN_classifier.predict([x])) 
# 说明predict传入参数应为矩阵,为了是批量预测。 
# 若只有一个也要转成矩阵的形式 x.reshape(1,-1)

 

posted @ 2018-08-01 13:38  Lucky、Dog  阅读(235)  评论(0编辑  收藏  举报