生物信息学竞赛:糖尿病数据挖掘

糖尿病数据挖掘

    • 一理:机器学习量化分析糖尿病致病因子
      • 下载:临床数据
      • 线性回归预测糖尿病
      • LightGBM 预测糖尿病
      • 糖尿病因子分析
      • 变量相关性分析
    • 一文:当前科学理解慢病之王的解决方案
      • 是什么
      • 怎么治疗
      • 怎么预防

 


一理:机器学习量化分析糖尿病致病因子

 


下载:临床数据

这是一所大学统计系提供的数据:https://statistics.sciences.ncsu.edu/

数据集在审核中,也可以在官网下载。

数据下载:https://www4.stat.ncsu.edu/~boos/var.select/diabetes.html


点击 the original data set 获取原数据:


全选,把这些数据复制下来,保存到本地 .txt 文件。

再从 .txt 文件中全选,复制到 .excel 文件。
 


线性回归预测糖尿病

最小回归预测糖尿病论文:https://web.stanford.edu/~hastie/Papers/LARS/LeastAngle_2002.pdf

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets, linear_model
from sklearn.metrics import mean_squared_error, r2_score,mean_absolute_error, median_absolute_error
from sklearn.model_selection import train_test_splitreadFileName="original_data.xlsx"         # 原始数据
# readFileName="processed_data.xlsx"      # 处理过的数据(提供数据的机构修剪了原始数据,方差不会太大)
# 读取excel
data=pd.read_excel(readFileName)
X=data.loc[:,"AGE":"S6"]
y=data["y"]# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 创建线性回归对象
regr = linear_model.LinearRegression()
# 使用训练集训练模型
regr.fit(X_train,y_train)# 使用测试集进行预测
y_pred = regr.predict(X_test)# 平均绝对误差:真实值 - 预测值的绝对值,累加,除以样本量
MAE = mean_absolute_error(y_test,y_pred)# 中值绝对误差:俩队数相减得到差值,求中位数
MedianAE = median_absolute_error(y_test, y_pred) 
r2 = r2_score(y_test, y_pred)
dict1 = {"y_predict": y_pred, "y_test": y_test}
df1 = pd.DataFrame(dict1)
df1.to_excel("MAE.xlsx")
print("MAE", MAE)
print("median_absolute_error", MedianAE)# 解释方差得分:1 是完美预测
print('r2: %.4f' % r2)

输出:

original_data
MAE 41.54836328325207
r2: 0.4

 


LightGBM 预测糖尿病

import lightgbm as lgb
import pandas as pd
from sklearn import model_selection
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score, mean_absolute_error,median_absolute_errorreadFileName = "original_data.xlsx"           # 原始数据
# readFileName = "processed_data.xlsx"        # 处理过的数据(提供数据的机构修剪了原始数据,方差不会太大)# 读取excel
data = pd.read_excel(readFileName)
X = data.loc[:, "AGE": "S6"]
y = data["y"]# 划分训练集和测试集
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.3, random_state=42)# lightgbm
model = lgb.LGBMRegressor()
model.fit(X, y)
y_pred = model.predict(X_test)MAE = mean_absolute_error(y_test, y_pred)
# 中值绝对误差
MedianAE = median_absolute_error(y_test, y_pred) 
r2 = r2_score(y_test, y_pred)

输出:

original_data
MAE 14.273899805021866
r2: 0.9

模型提升了 2 倍。
 


糖尿病因子分析

糖尿病因子分析,如性别。根据统计,男性患病率 9.6%,女性患病率 9.0%,性别差异不大。

反倒是年龄,年龄越大,患病概率越高:

所以,年龄越大,饮食越要控制,减少糖分摄入。

import lightgbm as lgb
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn import model_selection
from sklearn.model_selection import train_test_split
from sklearn.metrics import r2_score
from sklearn.ensemble import RandomForestRegressor# readFileName="original_data.xlsx"
readFileName="processed_data.xlsx"
# 读取excel
data=pd.read_excel(readFileName)
X=data.loc[:,"AGE":"S6"]
y=data["y"]# 划分训练集和测试集
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.3, random_state=42)# lightgbm
model=lgb.LGBMRegressor(max_depth=13)
# model=lgb.LGBMRegressor()
model.fit(X, y)y_pred = model.predict(X_test)
# rms = (np.mean((y - y_pred)**2))**0.5
MAE=sum(abs(y_test - y_pred))/len(y_test)
score=1/(1+MAE)
# print ("RF RMS", rms)
print("MAE",MAE)
print("score:",score)# Explained variance score: 1 is perfect prediction
print('r2: %.4f' % r2_score(y_test,y_pred))feature_importances=model.feature_importances_
names=X.columns
list_feature_importances=list(zip(feature_importances,names))
df_feature_importances=pd.DataFrame(list_feature_importances)
# df_feature_importances.to_excel("catboost_110变量重要性.xlsx")
df_feature_importances.to_excel("lightgbm变量重要性.xlsx")n_features=X.shape[1]
plt.barh(range(n_features),model.feature_importances_,align='center')
plt.yticks(np.arange(n_features),X.columns)
plt.title("lightgbm feature importance")
plt.xlabel('Feature Importance')
plt.ylabel('Feature')
plt.show()
# plt.savefig("featureImportance_original_data.png")
plt.savefig("featureImportance_processed_data.png")

输出:

MAE 13.823899600226756
score: 0.06745863281377751
r2: 0.9388


Age(年龄)、性别(Sex)、Body mass index(体质指数)、Average Blood Pressure(平均血压)、S1~S6一年后疾病级数指标。

影响糖尿病的致病因素,主要是 BMI、S5(血压)、AGE(年龄),BMI 指数高(肥胖)是导致糖尿病最重要的风险因素。
 


变量相关性分析

# 变量相关性
def Relation(df1,method,fileName):# 共线性分析cor=df1.corr(method)cor.to_excel("correlation_table.xlsx")cor.loc[:,:]=np.tril(cor,k=-1)cor=cor.stack()# 仅仅列出高相关系数,数据呈现结构化high_cor=cor[(cor>0.6)|(cor<-0.6)]# 转换为dataframe结构df_high_cor=pd.DataFrame(high_cor)# 保存到Exceldf_high_cor.to_excel(fileName)Relation(data,'pearson',"high_correlation_pearson.xlsx")   # 数据正态分布
Relation(data,'spearman',"high_correlation_spearman.xlsx") # 数据不是正态分布

完整代码:

import lightgbm as lgb
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn import model_selection
from sklearn.model_selection import train_test_split
from sklearn.metrics import r2_score
from sklearn.ensemble import RandomForestRegressor# readFileName="original_data.xlsx"
readFileName="processed_data.xlsx"
# 读取excel
data=pd.read_excel(readFileName)
X=data.loc[:,"AGE":"S6"]
y=data["y"]# 划分训练集和测试集
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.3, random_state=42)# lightgbm
model=lgb.LGBMRegressor(max_depth=13)
# model=lgb.LGBMRegressor()
model.fit(X, y)y_pred = model.predict(X_test)
# rms = (np.mean((y - y_pred)**2))**0.5
MAE=sum(abs(y_test - y_pred))/len(y_test)
score=1/(1+MAE)
# print ("RF RMS", rms)
print("MAE",MAE)
print("score:",score)# Explained variance score: 1 is perfect prediction
print('r2: %.4f' % r2_score(y_test,y_pred))feature_importances=model.feature_importances_
names=X.columns
list_feature_importances=list(zip(feature_importances,names))
df_feature_importances=pd.DataFrame(list_feature_importances)
# df_feature_importances.to_excel("catboost_110变量重要性.xlsx")
df_feature_importances.to_excel("lightgbm变量重要性.xlsx")n_features=X.shape[1]
plt.barh(range(n_features),model.feature_importances_,align='center')
plt.yticks(np.arange(n_features),X.columns)
plt.title("lightgbm feature importance")
plt.xlabel('Feature Importance')
plt.ylabel('Feature')
plt.show()
# plt.savefig("featureImportance_original_data.png")
plt.savefig("featureImportance_processed_data.png")def Relation(df1,method,fileName):cor=df1.corr(method)cor.to_excel("correlation_table.xlsx")cor.loc[:,:]=np.tril(cor,k=-1)cor=cor.stack()# 仅仅列出高相关系数,数据呈现结构化high_cor=cor[(cor>0.6)|(cor<-0.6)]df_high_cor=pd.DataFrame(high_cor)df_high_cor.to_excel(fileName)Relation(data,'pearson',"high_correlation_pearson.xlsx")
Relation(data,'spearman',"high_correlation_spearman.xlsx")

相关性最高的是 S1、S2。

 


一文:当前科学理解慢病之王的解决方案

中国是重大的慢病市场,糖尿病是慢病之王。

数据来自真实的临床机构,毕竟机器学习受数据影响,数据不够量、不够均衡就会产生偏差。

  • 国际糖尿病联合会:https://idf.org/

  • 英国糖尿病组织官网:http://www.diabetes.org.uk/

科学是一个社会行为。所谓科学知识,其实是当前这一代科学家的集体共识,仅此而已。

当前科学理解,是一线科学家穷尽人类目前所有的知识,对一个事物最好的判断。对科学家来说,它是新研究的出发点和讨论的基本线;对一般公众来说,它可能是认知的天花板。

一般人得病后都喜欢吃贵的补品,鹿茸、虎骨、熊掌、人参、阿胶、海参、鱼翅、虫草。

比如虫草,而现在整个学术界的共识就是,虫草不仅没用,而且可能有害。

如果冬虫夏草真的没用,为什么还有那么多人趋之若鹜呢?

如果用博弈论来看,现在的市场就是一个两因素市场。

要想打破这个均衡,只对少数人科普是不够的。

第一,互联网并不是一个是非不分、黑白不明的地方,事实上很多的网站会列举了冬虫夏草的种种功效,包括补肾益精、止血化痰、补虚……一直到抑癌抗癌、美容养颜等等一共12 项功能,简直就是神药;再加上价格贵,大家都信了。

冬虫夏草,你知道它没用,这只是一个因素,这还不足以让你彻底不买它。

还有一个因素是 “很多人认为它很值钱”。

所以,买冬虫夏草并不是为了自己吃,而是作为一个贵重礼品送人。人们不一定认同它的功效,但是人们认同它的价格。

除非哪天,社会习俗把 “冬虫夏草没用” 变成一个公共知识,以至于送冬虫夏草就等于是对智商的侮辱才行。

嗨,冬虫夏草和燕窝等各类补品,就是一个“中国式”大骗局。

每年的九月到第二年四月是金丝燕的繁殖期。这期间,它们用来建巢的唾液很丰富,雌燕和雄燕会一起建巢,就是用唾液和其他东西混合在一起,形成一个杯子状的窝。

古代人的判断标准就是物以稀为贵,稀有的吃了就对身体有好处。

于是,悬崖上的燕窝比屋檐下的燕窝吃了更长寿,金丝燕呕血做出来的血燕窝更是稀奇,于是它就能卖出天价。

中国是印尼燕窝出口的最大目的地,但是印尼当地采燕窝的农民说,根本没有血燕窝这种东西。

当地有从内地来的黑心商人收购来燕窝后,把燕窝用燕子的粪便再熏蒸五天,这时候,燕窝有些部分会变红,而后就被当作血燕窝来卖,价格会贵很多。

这些人就是摸准了有相当多的人对什么是健康、什么是营养这方面的认识,还停留在1000年前的水平,才敢这样下狠手的。

燕窝有什么神奇功效吗?一个也没有。

普通功效呢?多吃的话可以解饱、治饿,除此之外就没有其他特别的了。

其实这个道理也一样适用于鹿茸、虎骨、熊掌、人参、阿胶、海参、鱼翅、虫草等传统上认为的滋补品。

因为它们都不是提纯过的物质,所以物质结构和大部分生物体差异并不大。

如果要体现出特别的功效,就要把那一点点微不足道的差异放大再放大,放大到和生物体的组成成分截然不同的时候,就有可能不一样了。

比如,有的人发烧时,啃柳树皮能退烧,但必须啃春天的,啃秋天的就没用。

为什么呢?因为水杨酸在春天的柳树皮中的含量是秋天的几百倍。也就是说,功效不在柳树皮,而在水杨酸,你能不能把水杨酸从柳树皮中提纯出来才是关键。

你不提纯,怎么能期待一种微量物质有什么功效呢?

我们再来看鹿茸、虎骨、熊掌、人参、阿胶、海参、鱼翅,它们根本没有希望成为成功的商品(真的有功效、畅销全球)。

它们之所以依然常见于市场,主要就是生产者利用消费者的无知进行诈骗。

有名人故事做背景,再把功效用古代医学解释一番,燕窝自然是很受欢迎的。

中国几乎没有燕窝生产,全部依靠进口燕窝,据统计,燕窝总进口量是 80 吨左右,而中国每年燕窝产品的消费是 600 多吨,多出的 520 吨都是什么呢?

燕窝风味饮品。这个道理就像,番茄酱里没有番茄但也叫番茄酱,椰汁里没有椰子但也叫椰汁是一样的。

吃补品对身体可能不仅没有好处,还有坏处,对身体好的反而是最基础的规律作息、饮食均衡、合理运动。

 


是什么

即使是在医学如此发达的今天,糖尿病仍然是一种几乎无法根治、无法逆转的疾病。绝大多数时候,人们能够期待的最好结果,也无非是“控制”,尽量延缓病情恶化的程度。

最后,糖尿病本身并不致死,但是会引发各种致命的疾病。

这就是所谓的“糖尿病并发症”。一个糖尿病患者如果得不到很好的治疗,几乎一定会在10年内患上各种各样的并发症。这些并发症不仅可能发生在全身各处,眼睛、双脚、肾脏、血管、心脏、大脑都有可能;而且非常痛苦难治,甚至连患者的寿命都会受到很大影响。
 


怎么治疗

型糖尿病,本质上都是负责降低血糖的胰岛素系统失灵的结果。因此自然而然的,提到糖尿病,人们首先想到的就是胰岛素。

在糖尿病治疗的市场上,销售额最大的品类也确实是胰岛素。

除此之外,几乎在全世界所有医院,任何一个患者被确诊 2型糖尿病(分1型、2型,2型居多)后,医生都会立刻为他开出一张二甲双胍的处方。每天全世界有超过1亿人,使用这种药物控制血糖。

至少截至目前,二甲双胍还是一种治疗糖尿病的处方药物,它也有不少副作用需要警惕,比如说,可能会导致腹痛腹泻、恶心呕吐等胃肠道反应;再比如说,可能会导致肾功能有问题的人的肾病加重,所以不建议你随便就去吃。

针对1型糖尿病,我们有各种胰岛素药物,未来还可能拥有升级版的生物胰腺;针对2型糖尿病,我们拥有“神药”二甲双胍,也有基于病理研发出来的各类“格列汀”、“格列净”药物。
 


怎么预防

糖尿病的复杂症状,其实归根结底都是血糖上升导致的。

人,就是喜欢甜的;大脑对糖上瘾,抵挡不住不是自控力低,而是无法克服人性的本能。

下面几个方法,既可以不那么痛苦的自律,也不会得糖尿病。

1、一顿饭吃了,土豆、白薯、山药、莲藕等,就不要吃米饭。

2、喝饮料时选择无糖的。

3、吃完整的水果,不要喝果汁。

吃完饭,走路溜达30分钟,消化一下。正常人稍微控制下,一般不会得糖尿病。
 


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

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

相关文章

VS Code插件之Debugger for Chrome

号称2018最火的编辑器&#xff0c;不用用怎么行&#xff1f; 不多说直接开始踩坑之路。 要在vs中启动chrome控制台怎么办&#xff1f;vscode并没有集成环境&#xff0c;这里我们需要借助一个插件Debugger for Chrome。 选择左边安装包选项&#xff0c;点击商店搜索Debugger for…

Vscode对C/C++可视化的代码跟踪调试

文章目录 可视化的代码跟踪调试1、安装Visual Studio Code2、用vscode编译调试C\C 总结 可视化的代码跟踪调试 ubantu18.04的环境下&#xff0c;在命令行工具gdb调试基础上&#xff0c;利用可视化调试前端软件Visual Studio Code&#xff0c;&#xff08;后端依然依赖gcc、gdb…

VS Code真机测试步骤

VS Code真机测试步骤 前提&#xff1a;你的电脑跟你的手机是在同一个网络环境下。电脑连手机热点&#xff1b; 1&#xff0e; 在扩展里搜索live server&#xff0c;下载安装&#xff1b; 2&#xff0e; 打开cmd 命令窗口&#xff08;快捷键是winr&#xff09;&#xff1b; 输入…

VS Code调试C代码

1、前言 首先说明的是vscode是代码编辑器&#xff0c;并不是编译器&#xff0c;它本身并不能编译C语言。 在这里我们使用的是MinGW-w64作为C语言的编译器。MinGW-w64的前身是MinGW的全称是&#xff1a;Minimalist GNU on Windows。它实际上是将经典的开源 C语言 编译器 GCC 移…

VScode的代码截图插件CodeSnap

CodeSnap : 在 VS Code 中为您的代码截取漂亮的屏幕截图&#xff01; 插件名&#xff1a;CodeSnap官方地址&#xff1a;CodeSnap - Visual Studio Marketplace特征&#xff1a; 快速保存代码的屏幕截图将屏幕截图复制到剪贴板显示行号许多其他配置选项用法&#xff1a;选中需要…

Vscode——调试数据可视化插件debug-visualizer

debug-visualizer是一款极其优秀的调试数据可视化插件 安装方法 第一步&#xff1a;vscode插件库安装 debug-visualizer第二步&#xff1a;环境内输入 pip install vscodedebugvisualizer 使用方法 启动调试Ctrl Shift P 打开命令面板&#xff0c;输入 Debug Visualizer: …

VS Code 最好的 Git 可视化插件

&#x1f447;&#x1f447;关注后回复 “进群” &#xff0c;拉你进程序员交流群&#x1f447;&#x1f447; 作者丨小集 来源丨小集&#xff08;ID&#xff1a;zsxjtip&#xff09; Visual Studio Code 有几组 git 命令来为您的代码存储库执行和执行多项任务。但是&#xff0…

如何使用VScode软件测试接口

我们知道&#xff0c;Visual Studio Code&#xff08;简称VScode&#xff09;软件一般用于编写前端代码&#xff0c;但其实&#xff0c;它也可以很方便的用于接口测试&#xff0c;达到和postMan一样的效果。 怎么实现呢&#xff1f; 步骤如下&#xff1a; 1.安装 REST Clien…

视频特效软件有哪些?这些软件值得一试

大家平常在制作视频时&#xff0c;经常需要将多个视频拼接&#xff0c;但是如果两个视频中间没有什么转场过渡的话&#xff0c;会显得很单调。我们可以增加一些转场、音乐、特效&#xff0c;这样整支视频看起来效果会好很多。讲到视频特效&#xff0c;可能有些小伙伴会觉得它很…

python :超级大乐透

体育彩票 超级大乐透 dlt.py # codingutf-8 import randomdef xuanhao(total, count):element [x1 for x in range(total)]result []for i in range(count):res element[random.randint(0, len(element)-1)]element.remove(res)result.append(res)return result# 超级大乐透…

发卡网源码

简介&#xff1a;发卡网带代理功能&#xff0c;安装简单。 网盘地址&#xff1a;https://pan.baidu.com/s/1E3AtqCmBZPjXgaiUEXrM6Q 提取码:rsu4 展示&#xff1a;

最新鲸发卡企业发卡网系统源码+免授权

正文: 心心念念的鲸发卡来啦&#xff0c;企业发卡源码&#xff0c;鲸发卡。目前全网最稳定的发卡系统之一。 在运营版本&#xff0c;既然做就要把他当作一项事业来做。 程序开源无加密&#xff0c;完整运营级程序&#xff0c;非市面上垃圾程序BUG一堆。 此程序经过市场验证…

功能强大的发卡网源码+支付接口超多

正文: 有二十三个支付接口&#xff0c;三套前台模板。 由于还得更新其他源码&#xff0c;就填充了一个商品&#xff0c;UI看起来不错&#xff0c;脑补了下&#xff0c; 填充完商品后&#xff0c;应该会更好看。 程序: wwbwf.lanzouf.com/iigbh09ygu6b 图片:

【.NET AI Books 前言】Azure OpenAI Service 入门

本书是为 .NET 开发者而写的&#xff0c;让 .NET 开发者能快速掌握 Azure OpenAI Service 的使用技巧。 ChatGPT 的到来意味着我们已经置身于 AI 引起的全新变革中&#xff0c;作为开发者你可能将面临几种改变&#xff1a; GPT 模型到来后&#xff0c;如何去架构好企业解决方案…

github基本操作

目标 把本地的一个项目放到github上&#xff0c;方便浏览和管理 步骤 要将本地代码推送到 GitHub 上&#xff0c;您需要执行以下步骤&#xff1a; 1. 在 GitHub 上创建一个新的仓库。 2. 在本地计算机上使用 Git 命令行工具初始化一个新的 Git 仓库。 3. 将本地代码添加到 …

如何构造个人 AI 策略:从 AI 绘画的演进与 ChatGPT 现状出发?

持续关注 AI 相关探索&#xff1a;https://github.com/phodal/ai-research PS&#xff1a;就本文的结论而言&#xff0c;我相信你已经或多或少的有所体会了。也因此&#xff0c;本文更多的是展现一个思考的过程&#xff0c;而不是一个纯粹的结论。 AIGC 是什么&#xff1f;它是…

如何利用CPU Cache写出高性能代码,看这些图就够了!

世界就像个巨大的马戏团&#xff0c;它让你兴奋&#xff0c;却让我惶恐&#xff0c;因为我知道散场永远是——有限温存&#xff0c;无限辛酸。——卓别林 我们平时编写的代码最后都会交给CPU来执行&#xff0c;如何能巧妙利用CPU写出性能比较高的代码呢&#xff1f;看完这篇文章…

对视频剪辑应用灰度图像变换+Moviepy生成灰度视频处理遇到几个有意思的问题

一、引言 最近在学习图像处理的《直方图处理》&#xff0c;对直方图均衡处理效果感觉非常有用。 以前学习Moviepy音视频剪辑时&#xff0c;用的卓别林的一个黑白视频片段&#xff0c;感觉视频的噪点比较多&#xff0c;画面也整体偏暗&#xff0c;不禁想看看如果对其进行直方图…

大厂正在「去大厂化」

大厂逐渐不再是「大厂」。 撰文 | 佘宗明 大厂还值得去吗&#xff1f; 这成了摆在很多年轻人面前的问题。 搁几年前&#xff0c;这都不能称之为问题。 扁平化管理、快速上升空间、弹性工作制……比JK制服还诱惑。「财务自由」的召唤&#xff0c;更是胜却人间无数情怀。 那现在呢…

无心剑中译伊玛·拉扎罗斯《新巨人·自由女神》

文章目录 无心剑中译伊玛拉扎罗斯《新巨人自由女神》译友们中译伊玛拉扎罗斯《新巨人自由女神》1. 岩子版2. MNES版3. 天河版4. 铁冰版5. 好好做虾版6. 愚冠版卓别林十大经典语录卓别林最伟大的演讲《为自由而战斗》无心剑中译迈克尔杰克逊《自由无拘束》《被讨厌的勇气》- 什么…