利用sklearn实现KNN--乳腺癌诊断代码实战与分析

这篇文章是利用sklearn实现KNN算法,如何调整参数,实战代码。

如果要看具体原理和python代码实现简单的KNN转这里:https://blog.csdn.net/qq_40589051/article/details/98482987

---------目录----------

1. sklearn.neighbors.KNeighborsClassifier参数介绍

2. 利用sklearn中的自带库的实战代码分析(乳腺癌诊断)

正文:

1. sklearn.neighbors.KNeighborsClassifier参数介绍

官网文档中对这个类的定义是这样的:

https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsClassifier.html#sklearn.neighbors.KNeighborsClassifier

class sklearn.neighbors.KNeighborsClassifier(n_neighbors=5weights=’uniform’algorithm=’auto’leaf_size=30p=2metric=’minkowski’metric_params=Nonen_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

你可能感兴趣的:(机器学习)