这篇文章是利用sklearn实现KNN算法,如何调整参数,实战代码。
如果要看具体原理和python代码实现简单的KNN转这里:https://blog.csdn.net/qq_40589051/article/details/98482987
---------目录----------
1. sklearn.neighbors.KNeighborsClassifier参数介绍
2. 利用sklearn中的自带库的实战代码分析(乳腺癌诊断)
正文:
1. sklearn.neighbors.KNeighborsClassifier参数介绍
官网文档中对这个类的定义是这样的:
class sklearn.neighbors.
KNeighborsClassifier
(n_neighbors=5, weights=’uniform’, algorithm=’auto’, leaf_size=30, p=2, metric=’minkowski’, metric_params=None, n_jobs=None, **kwargs)
n_neighbors:K值的大小,默认值为5
weights:权重,适合在数据不平衡的时候使用,有三种模式,默认的uniform就是权重平等,其他可以自定义或者是选择距离越近权重越大的方式。(如何设置见官网文档)
algorithm:当然这里寻找距离最近的k个数据点的算法就不是用欧式距离之类的那么简单了,可以选择balltree...(这个算法我不知道是什么,没了解过),默认值的意思是根据数据值程序会自行选择的意思。
leaf_size=30:和选择的balltree算法有关,叶子节点数。
n_jobs=None:并行多少个数据去搜索最近邻点。
剩下的参数基本是不怎么改动的,所以就不一一介绍了。其实K值是非常影响正确率的,并不是越高越好哦~
2. 利用sklearn中的自带库的实战代码分析(乳腺癌诊断)
sklearn自带数据库中有个用于二分类的乳腺癌数据包,用knn进行分类的代码如下。
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_breast_cancer
import numpy as np
data = np.array(load_breast_cancer()['data'][10:])
lable = np.array(load_breast_cancer()['target'][10:])
data_test = np.array(load_breast_cancer()['data'][0:10])
lable_test = np.array(load_breast_cancer()['target'][0:10])
model = KNeighborsClassifier(n_neighbors=4)
model.fit(data,lable)
res = model.predict(data_test)
print('prediction',res)
acc = model.score(data_test,lable_test)
print("accuracy",acc)
计算结果:
prediction [0 0 0 1 0 0 0 0 0 0]
accuracy 0.9
来源:CSDN
作者:皮卡猪猪
链接:https://blog.csdn.net/qq_40589051/article/details/82222006