KNN算法实战-健康医疗

健康医疗

标题显示

算法建模

  • knn 算法建模构建微观数据和疾病之间的关系
  • knn 调整超参数,准确率提升
  • 数据归一化、标准化,提升更加明显

算法实战

导入包


import numpy as np
import pandas as pd
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.model_selection import GridSearchCV

加载数据

data = pd.read_csv('./cancer.csv', sep='\t')
data.head()

在这里插入图片描述

获取有用的数据

# 返回值
y = data['Diagnosis']
X = data.iloc[:, 2:]
display(X.head(), y.head())

在这里插入图片描述

拆分数据

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2,
                                                    random_state=100)
display(X_train.shape, X_test.shape)

在这里插入图片描述

网格搜索超参数

estimator = KNeighborsClassifier()
params = dict(n_neighbors=np.arange(1, 30),
              weights=['uniform', 'distance'],
              p=[1, 2])
Gcv = GridSearchCV(estimator, params, cv=6, scoring='accuracy')
Gcv.fit(X_train, y_train)

在这里插入图片描述
获取超参数:
Gcv.best_params_
获取最好模型的参数
Gcv.score(X_test,y_test)

gCV.best_score_
gCV.best_params_

在这里插入图片描述

模型预测

# 获取最佳的模型
model = gCV.best_estimator_
y_pred = model.predict(x_test)
print('算法预测值:',y_pred[:20])
print('真实值',y_test[:20].values)

预测模型和真实值

计算模型的分数

from sklearn.metrics import accuracy_score
accuracy_score(y_test,y_pred)
(y_test==y_pred).mean()
gCV.score(x_test,y_test)

在这里插入图片描述

以上的方法获取的模型分数是一样


归一化处理

归一化:是一种数据处理方法,用于将数据缩放到一个统一的范围,通常是[0,1]或[-1,1]:以下是最常用的两种归一化处理的方式:

方式一,min-max归一化(线性缩放):min_max归一化将数据线性缩放到[0-1]的范围,对于给定的一组数据x,min-max归一化的计算公式为:
在这里插入图片描述

from sklearn.preprocessing import MinMaxScaler
mss = MinMaxScaler()
x_normal = mss.fit_transform(x)
x_normal

数据拆分建模并且进行训练

x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.2,random_state=100)
estimator = KNeighborsClassifier()
params = dict(n_neighbors=np.arange(1,30),
              weights=['uniform','distance'],
              p = [1,2])
gCV = GridSearchCV(estimator,params,cv=6,scoring='accuracy')
gCV.fit(x_train,y_train)

归一化后的模型
获取当前模型的分数
在这里插入图片描述


方式二:Z-Score归一化(标准化):Z-Score 归一化将原始数据转换为均值为0,标准方差为1的标准正态分布。对于给定的一组数据X,Z-Score归一化的计算公式为:

在这里插入图片描述
其中,x表示数据集的均值
在这里插入图片描述
表示数据集中的标准差

from sklearn.preprocessing import StandardScaler
sd = StandardScaler()
x_norm = sd.fit_transform(x)
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.2,random_state=100)
estimator = KNeighborsClassifier()
params = dict(n_neighbors=np.arange(1,30),
              weights=['uniform','distance'],
              p = [1,2])
gCV = GridSearchCV(estimator,params,cv=6,scoring='accuracy')
gCV.fit(x_train,y_train)

在这里插入图片描述

坚持学习,整理复盘

### 关于推荐有趣的 KNN 算法数据集 KNN算法是一种简单而有效的分类方法,在许多实际应用中表现出色。为了更好地理解和实践该算法,选择合适的数据集至关重要。以下是几个适合用于探索和实验KNN算法的有趣数据集: #### 1. 鸢尾花数据集 (Iris Dataset) 这是最经典的小型数据集之一,常被用来作为入门级案例来演示各种机器学习模型的工作方式[^2]。此数据集包含了三种不同类型的鸢尾花卉样本及其四个特征变量(萼片长度、萼片宽度、花瓣长度以及花瓣宽度)。通过这些数值属性,可以尝试利用KNN算法完成物种识别的任务。 #### 2. 手写数字识别 MNIST 数据集 MNIST 是另一个广泛使用的基准数据库,其中含有大量手写的黑白图像表示阿拉伯数字0到9之间的字符。尽管它的规模较大且维度较高,但对于初学者来说仍然是非常友好的起点。使用KNN对此类高维空间中的模式进行分析能够帮助加深对该技术的理解[^3]。 #### 3. Wine Quality Data Set 葡萄酒质量评估是一个回归性质的问题,但是也可以转换成多类别分类任务来进行处理。该数据集中记录了红白两种酒的各项理化指标参数,并给出了相应的评分等级标签。因此非常适合应用于研究如何调整距离度量标准或者加权方案等因素对于最终性能的影响效果等方面的研究工作之中[^1]。 #### 4. Breast Cancer Wisconsin Diagnostic Database 乳腺癌诊断问题是生物医学领域内的一个重要课题。在这个特定本的数据集合里提供了有关肿瘤细胞核显微镜下测量所得的一系列统计特性描述信息。采用KNN方法可以帮助我们判断某个未知病例更接近良性还是恶性群体从而做出初步推测结论。 以上提到的所有资源都可以从UCI Machine Learning Repository 或 Kaggle 平台轻松获取并下载下来供个人练习之用。希望它们能激发起您进一步深入探究的兴趣! ```python from sklearn.datasets import load_iris, fetch_openml import pandas as pd # 加载 Iris 数据集 data = load_iris() df_iris = pd.DataFrame(data.data, columns=data.feature_names) # 下载 MNIST 数字图片数据集 mnist = fetch_openml('mnist_784', version=1) X_mnist, y_mnist = mnist["data"], mnist["target"] print("Iris DataFrame Shape:", df_iris.shape) print("MNIST Features and Labels Shapes:", X_mnist.shape, y_mnist.shape) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿龙的代码在报错

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值