Advertisement

机器学习之sklearn-KNN近邻算法分类小案例(乳腺癌预测最优模型)

阅读量:

(案例):用sklearn包实现knn分类小案例,通过交叉验证网格搜索获取最优参数模型,进行参数评估。
导包:
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split,GridSearchCV
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import f1_score,precision_score,recall_score,roc_auc_score,roc_curve
import matplotlib.pyplot as plt
import matplotlib as mpl
设置字符集,防止中文乱码
mpl.rcParams[‘font.sans-serif’]=[u’simHei’]
mpl.rcParams[‘axes.unicode_minus’]=False

数据获取部分: 1. 首先导入乳腺癌相关数据 data_breast_cancer = load_breast_cancer() 2. 然后获取特征值 X = data_breast_cancer.data 3. 接着获取目标值 y = data_breast_cancer.target 4. 最后将数据集划分为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=122)

数据处理:

  1. 进行标准化处理
    scaler = StandardScaler()
  2. 拟合训练集以计算均值与标准差
    scaler.fit(X_train)
  3. 分别对训练集与测试集进行标准化转换
    X_train_scaled = scaler.transform(X_train)
    X_test_scaled = scaler.transform(X_test)

确定最佳模型超参:
超参配置字典如下:
parameters={
n_neighbors取值范围为3至10之间, #k值选择
权重计算方式选'距离加权'或'均匀加权', #权重计算方式
p取值范围为1至6之间 #选择计算公式
}

2.实例化分类器
knn=KNeighborsClassifier()

  1. 实现基于网格搜索的交叉验证过程:采用三折交叉验证策略。
    gc = GridSearchCV(knn, param_grid=parameters, cv=3, n_jobs=1)

训练数据建模:
gc.fit(X_train_std,y_train)

模型评估

数据可视化方面:ROC曲线绘制

ROC曲线可视化:

在这里插入图片描述

结果展示:
最佳分类器模型:采用KNeighborsClassifier算法,在以下条件下进行参数配置——algorithm设置为'auto'、leaf_size设为30、metric选用了minkowski距离度量方法、metric_params设为空值、n_jobs保持默认计算资源分配状态、n_neighbors设定为3个邻居节点以及p赋值为1;并且通过加权距离作为权重函数进行计算得出最佳分类器配置方案。
最佳参数设置包括n_neighbors=3、p=1以及加权距离作为距离度量标准;最高准确率为0.9698;预测准确率达到0.9766;精确率为0.9821;召回率为0.9821;F-测度值也为0.9821;AUC评估得分为0.9741。
在第X次测试中(X分别为从第①组至第⑩组),真实值与预测结果一致均为[①]的情况出现次数最多;而在真实值为②的情况下(如测试编号分别为④和⑧),系统仍能正确输出对应的预测结果[②]以供参考使用

全部评论 (0)

还没有任何评论哟~