【Python机器学习】KNN分类算法 ——KNeighborsClassifier函数实现

构造函数

 KNeighborsClassifier(n_neighbors=5, weights='uniform', 
                      algorithm='auto', leaf_size=30, 
                      p=2, metric='minkowski', 
                      metric_params=None, n_jobs=1, **kwargs)

n_neighbors: 默认值为5,表示查询k个最近邻的数目
algorithm: {‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’},指定用于计算最近邻的算法,auto表示试图采用最适合的算法计算最近邻
leaf_size: 传递给‘ball_tree’或‘kd_tree’的叶子大小
metric: 用于树的距离度量。默认’minkowski与P = 2(即欧氏度量)
n_jobs: 并行工作的数量,如果设为-1,则作业的数量被设置为CPU内核的数量

fit函数训练模型

fit函数的参数传入训练输入数据和输出数据

score函数计算精度

参数与fit函数参数相同

predict函数进行预测

参数传入测试集数据

实例:对iris数据集构建KNN模型并预测

#K邻近算法
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors = 5)
knn.fit(X_train,y_train)
X_new=np.array([[5,2.9,1,0.2]])
print("X_new.shape:{}".format(X_new.shape))
prediction = knn.predict(X_new)
#print("Prediction:{}".format(prediction))
print("Prediction target name:{}".format(iris_datasets['target_names'][prediction]))

#评估模型
y_pred=knn.predict(X_test)
print("Test set predictions:\n {}".format(y_pred))
#查看预测精度
print("Test score: {:.2f}".format(np.mean(y_pred == y_test)))
print("Test set score: {:.2f}".format(knn.score(X_test,y_test)))

运行结果:

X_new.shape:(1, 4)
Prediction target name:['setosa']
Test set predictions:
 [2 1 0 2 0 2 0 1 1 1 2 1 1 1 1 0 1 1 0 0 2 1 0 0 2 0 0 1 1 0 2 1 0 2 2 1 0
 2]
Test score: 0.97
Test set score: 0.97

你可能感兴趣的:(Python,python,机器学习,分类,算法)