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)

在这里插入图片描述

坚持学习,整理复盘

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/196590.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 每日一题 Day 3||深度优先搜索(DFS)

1038. 从二叉搜索树到更大和树 给定一个二叉搜索树 root (BST),请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和。 提醒一下, 二叉搜索树 满足下列约束条件: 节点的左子树仅包含键 小于 节点键的节点。节点的右子树仅…

【23-24 秋学期】NNDL 作业12 优化算法2D可视化

简要介绍图中的优化算法,编程实现并2D可视化 1. 被优化函数 2. 被优化函数 3. 解释不同轨迹的形成原因 分析各个算法的优缺点 REF:图灵社区-图书 (ituring.com.cn) 深度学习入门:基于Python的理论与实现 NNDL 作业11:优化算…

Redis系列之incr和decr命令是线程安全的?

Redis是一个单线程的服务,所以正常来说redis的命令是会排队执行的。incr/decr命令是redis提供的可以实现递增递减的命令,所以这两个命令也是具有原子性的?是线程安全的?这个也是互联网公司面试的常见题,话不多说&#…

Leetcode 108 将有序数组转换为二叉搜索树

题意理解: 我们需要根据一个数组来构建一个二叉搜索树,且该二叉搜索树也是高度平衡二叉树。 什么是高度平衡二叉树呢? 即对于每个节点来说,左右子树高度差不超过1 思路:我们总是从数组的中间位置作为根节点构建该树,这…

AcW730.机器人跳跃问题(二分法)-Java版

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;//由题目可知,无论能量大与小,都满足 e 2 * e - h[i]; //初始能量越大,最终的结果越大,要找到一个满足条件的最小值 //可以根据二分的向左找模板: /*if(check(mid)) r mid;els…

茄子科技张韶全:跨多云大数据平台DataCake在OceanBase的实践

11 月 16 日,OceanBase 在北京顺利举办 2023 年度发布会,正式宣布:将持续践行“一体化”产品战略,为关键业务负载打造一体化数据库。其中,在“数字化转型升级实践专场”,我们有幸邀请到了茄子科技大数据技术…

一个Blazor+WinForm+MAUI+PDA实现的条码比对系统

条码比对系统是由单机版桌面软件和Android版的PDA扫码软件组成,桌面软件采用Blazor与WinForm进行混合开发,PDA扫码软件采用MAUI进行开发,这个项目都是基于.NET技术进行构建,这也是将近期学习Blazor和MAUI这两门技术应用到实践当中…

刷题系列——排序算法

参考:README - 十大经典排序算法 1)排序算法分为内部外部排序两种,这个之前并不了解,外部排序需要访问外存的这个就是指需要额外内存比如另一个list或者dict存储中间结果。 2)稳定性:排序后 2 个相等键值…

openGauss训练营培训课程第1课时

课时1:openGauss全景介绍 1、介绍 openGauss 全景 1.1.openGauss总体架构介绍 本章节主要介绍了openGauss发展的历史,现状以及未来。对当前的DataPod和DataKit 2种openGauss当前主推的场景化产品进行了介绍。同时对openGauss的整个逻辑模块的视图进行了讲解。 …

算法通关村第十三关-黄金挑战数论问题

计数质数 描述 : 给定整数 n ,返回 所有小于非负整数 n 的质数的数量 。 题目 : LeetCode 204.计数质数 : 204. 计数质数 分析 : 解决这个题有一个有效的方法,叫埃氏筛 , 后来又产生了线性筛,奇数筛等改进的方法。 基本思想是如果 x是…

12.04 二叉树中等题

513. 找树左下角的值 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1 思路:找到最低层中最左侧的节点值,比较适合层序遍历,返回最…

【动态规划】LeetCode-198/LCR089.打家劫舍

🎈算法那些事专栏说明:这是一个记录刷题日常的专栏,每个文章标题前都会写明这道题使用的算法。专栏每日计划至少更新1道题目,在这立下Flag🚩 🏠个人主页:Jammingpro 📕专栏链接&…

MS85163实时时钟/日历可Pin to Pin兼容PCF8563

MS85163/MS85163M是一款CMOS实时时钟(RTC) 和日历电路,针对低功耗进行了优化,内置了可编程的时钟输出、中断输出和低电压检测器。可Pin to Pin兼容PCF8563。所有寄存器地址和数据都通过两线双向I 2C总线进行串行传输,最大总线传输速度为 400k…

2023年【上海市安全员C3证】新版试题及上海市安全员C3证试题及解析

题库来源:安全生产模拟考试一点通公众号小程序 上海市安全员C3证新版试题是安全生产模拟考试一点通总题库中生成的一套上海市安全员C3证试题及解析,安全生产模拟考试一点通上上海市安全员C3证作业手机同步练习。2023年【上海市安全员C3证】新版试题及上…

干货分享:盘点8款优秀的自动化测试工具

如今,作为一名软件测试工程师,几乎所有人都需要具备自动化测试相关的知识,并且懂得如何去利用工具,来为企业减少时间成本和错误成本。这是为什么呢? 在以前,测试人员一般都只需要扮演终端用户,…

用Python创建日历详细指南与实用示例

更多Python学习内容:ipengtao.com 大家好,我是彭涛,今天为大家分享 用Python创建日历详细指南与实用示例,全文4800字,阅读大约15分钟。 在日常生活和工作中,创建和管理日历是一项关键任务。Python提供了丰富…

【ArcGIS Pro微课1000例】0047:深度学习--棕榈树提取全流程

一、创建训练样本 对汤加科洛瓦伊种植园每棵棕榈树的健康状况进行清查和评估,这需要花费大量的时间和劳动力。 为简化此过程,将在 ArcGIS Pro 中使用深度学习模型来识别树木,然后根据植被绿度的测量值计算其健康状况。 第一步是找到显示汤加科洛瓦伊的影像,该影像具有足够…

无需服务器,无需魔法,拥有一个微信机器人就是这么简单

前情提要 还没看过的朋友可以看一下上一篇文章《拥有一个微信机器人总共需要几步?》在这篇文章里,我们提到,创建微信机器人需要一个大前提--你得有一台服务器。现在,不再需要了!没错,上一篇提到的Serverles…

巧借C++算法实现冒泡排序算法

目录 引言冒泡排序原理具体实现步骤示例代码时间复杂度和稳定性优化可能性结束语 引言 作为计算机专业出身的开发者,以及从事软件开发相关的小伙伴,想必对C语言并不陌生,它是一门非常厉害的编程语言,不仅是基于程序底层的语言&a…

JavaSE基础50题:9. 求1~100内的所有素数

【概述】 素数&#xff1a;只能被1和自己整除。 素数的判断方法&#xff1a; 我们把非素数都写成 ab 的形式&#xff0c;如&#xff1a; 16 116 16 28 24 124 24 212 24 38 24 46 同样&#xff0c;我们发现&#xff0c;a 和 b 其中一定会有一个数字 < 根号n&#xff0…