Advertisement

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

阅读量:

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

如果想了解具体原理及Python代码实现简单的KNN相关内容,则可参考<>

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

1. sklearn.neighbors.KNeighborsClassifier参数介绍

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

正文:

1. sklearn.neighbors.KNeighborsClassifier参数介绍

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

基于Scikit-learn库提供的机器学习工具包中,默认情况下,
KNeighborsClassifier类实现了基于k近邻的分类器,
其核心功能模块包括多个可调用接口,
支持多种距离度量方式以及加权投票策略,
并提供了多种计算算法选择以优化性能表现。

_type sklearn.neighbors.KNeighborsClassifier(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:权重参数,在处理数据分布不均衡的情况下具有特殊作用,在具体实现中通常提供三种模式:其中一种是默认采用均匀分配策略;另一种则是允许用户根据需求进行个性化配置;还有一种是基于样本间距离远近来动态调整权重。(如何设置建议参考官方文档)

_algorithm:当然这里寻找距离最近的k个数据点的算法不仅仅只是基于欧式距离那么简单了,默认情况下可以选择balltree...(这个算法我不了解具体原理),默认值的意思是说程序会根据数据特征自行选择合适的方式进行处理。

leaf_size=30:和选择的balltree算法有关,叶子节点数。

n_jobs=None:并行多少个数据去搜索最近邻点。

其余参数基本无需做过多调整,因此也不必一一详细说明。实际上K值对模型性能有很大影响,并非选择数值越大越好

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

在scikit-learn自带的数据集中存在一个用于二分类任务处理的乳腺癌数据集,在该数据库中可以找到专门针对这种类型问题的数据支持资源

复制代码
 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)
    
    
    
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-07-13/BcZjQYr7GpsDf05lbMkn8d429viW.png)

计算结果:

prediction [0 0 0 1 0 0 0 0 0 0]
accuracy 0.9

全部评论 (0)

还没有任何评论哟~