【阿旭机器学习实战】【36】糖尿病预测---决策树建模及其可视化
【阿旭机器学习实战】系列文章主要介绍机器学习的各种算法模型及其实战案例,欢迎点赞,关注共同学习交流。
【阿旭机器学习实战】【36】糖尿病预测—决策树建模及其可视化
目录
- 【阿旭机器学习实战】【36】糖尿病预测---决策树建模及其可视化
- 1. 导入数据并查看数据
- 2. 训练决策树模型及其可视化
- 2.1 决策树模型
- 2.2 可视化训练好的决策树模型
- 2.2 使用随机森林模型
1. 导入数据并查看数据
关注GZH:阿旭算法与机器学习,回复:“ML36”即可获取本文数据集、源码与项目文档
# 导入数据包
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn import metrics
import matplotlib.pyplot as plt
import matplotlib as matplot
import seaborn as sns
%matplotlib inline
col_names = ['pregnant', 'glucose', 'bp', 'skin', 'insulin', 'bmi', 'pedigree', 'age', 'label']
df = pd.read_csv("pima-indians-diabetes.csv", header=None, names=col_names)
df.head()
pregnant | glucose | bp | skin | insulin | bmi | pedigree | age | label | |
---|---|---|---|---|---|---|---|---|---|
0 | 6 | 148 | 72 | 35 | 0 | 33.6 | 0.627 | 50 | 1 |
1 | 1 | 85 | 66 | 29 | 0 | 26.6 | 0.351 | 31 | 0 |
2 | 8 | 183 | 64 | 0 | 0 | 23.3 | 0.672 | 32 | 1 |
3 | 1 | 89 | 66 | 23 | 94 | 28.1 | 0.167 | 21 | 0 |
4 | 0 | 137 | 40 | 35 | 168 | 43.1 | 2.288 | 33 | 1 |
# 相关性矩阵
corr = df.iloc[:,:-1].corr()
#corr = (corr)
sns.heatmap(corr, xticklabels=corr.columns.values,yticklabels=corr.columns.values)corr
pregnant | glucose | bp | skin | insulin | bmi | pedigree | age | |
---|---|---|---|---|---|---|---|---|
pregnant | 1.000000 | 0.129459 | 0.141282 | -0.081672 | -0.073535 | 0.017683 | -0.033523 | 0.544341 |
glucose | 0.129459 | 1.000000 | 0.152590 | 0.057328 | 0.331357 | 0.221071 | 0.137337 | 0.263514 |
bp | 0.141282 | 0.152590 | 1.000000 | 0.207371 | 0.088933 | 0.281805 | 0.041265 | 0.239528 |
skin | -0.081672 | 0.057328 | 0.207371 | 1.000000 | 0.436783 | 0.392573 | 0.183928 | -0.113970 |
insulin | -0.073535 | 0.331357 | 0.088933 | 0.436783 | 1.000000 | 0.197859 | 0.185071 | -0.042163 |
bmi | 0.017683 | 0.221071 | 0.281805 | 0.392573 | 0.197859 | 1.000000 | 0.140647 | 0.036242 |
pedigree | -0.033523 | 0.137337 | 0.041265 | 0.183928 | 0.185071 | 0.140647 | 1.000000 | 0.033561 |
age | 0.544341 | 0.263514 | 0.239528 | -0.113970 | -0.042163 | 0.036242 | 0.033561 | 1.000000 |
2. 训练决策树模型及其可视化
# 选择预测所需的特征
feature_cols = ['pregnant', 'insulin', 'bmi', 'age','glucose','bp','pedigree']
X = pima[feature_cols] # 特征
y = pima.label # 类别标签
# 将数据分为训练和测试数据
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1) # 70% training and 30% test
2.1 决策树模型
# 创建决策树分类器
clf = DecisionTreeClassifier(criterion='entropy')# 训练模型
clf = clf.fit(X_train,y_train)# 使用训练好的模型做预测
y_pred = clf.predict(X_test)
# 模型的准确性
print("Accuracy:",metrics.accuracy_score(y_test, y_pred))
Accuracy: 0.7489177489177489
2.2 可视化训练好的决策树模型
注意: 需要使用如下命令安装额外两个包用于画决策树的图
conda install python-graphviz
conda install pydotplus
from sklearn.tree import export_graphviz
from six import StringIO
from IPython.display import Image
import pydotplus
from sklearn import treedot_data = StringIO()
export_graphviz(clf, out_file=dot_data, filled=True, rounded=True,special_characters=True,feature_names = feature_cols,class_names=['0','1'])
graph = pydotplus.graph_from_dot_data(dot_data.getvalue())
graph.write_png('diabetes.png')
Image(graph.create_png())
# 创建新的决策树, 限定树的最大深度, 减少过拟合
clf = tree.DecisionTreeClassifier(criterion='entropy',max_depth=4, # 定义树的深度, 可以用来防止过拟合min_weight_fraction_leaf=0.01 # 定义叶子节点最少需要包含多少个样本(使用百分比表达), 防止过拟合)# 训练模型
clf.fit(X_train,y_train)# 预测
y_pred = clf.predict(X_test)# 模型的性能
print("Accuracy:",metrics.accuracy_score(y_test, y_pred))
Accuracy: 0.7705627705627706
from six import StringIO
from IPython.display import Image
from sklearn.tree import export_graphviz
import pydotplus
dot_data = StringIO()
export_graphviz(clf, out_file=dot_data, filled=True, rounded=True,special_characters=True, feature_names = feature_cols,class_names=['0','1'])
graph = pydotplus.graph_from_dot_data(dot_data.getvalue())
graph.write_png('diabetes2.png')
Image(graph.create_png())
2.2 使用随机森林模型
from sklearn.ensemble import RandomForestClassifier# 随机森林, 通过调整参数来获取更好的结果
rf = RandomForestClassifier(criterion='entropy',n_estimators=1, max_depth=5, # 定义树的深度, 可以用来防止过拟合min_samples_split=10, # 定义至少多少个样本的情况下才继续分叉#min_weight_fraction_leaf=0.02 # 定义叶子节点最少需要包含多少个样本(使用百分比表达), 防止过拟合)# 训练模型
rf.fit(X_train, y_train)# 做预测
y_pred = rf.predict(X_test)# 模型的准确率
print("Accuracy:",metrics.accuracy_score(y_test, y_pred))
Accuracy: 0.7402597402597403
如果文章对你有帮助,感谢点赞+关注!
关注下方GZH:阿旭算法与机器学习,回复:“ML36”即可获取本文数据集、源码与项目文档,欢迎共同学习交流
【阿旭机器学习实战】【36】糖尿病预测---决策树建模及其可视化相关推荐
- 【阿旭机器学习实战】【13】决策树分类模型实战:泰坦尼克号生存预测
[阿旭机器学习实战]系列文章主要介绍机器学习的各种算法模型及其实战案例,欢迎点赞,关注共同学习交流. 本文用机器学习中的决策树分类模型对泰坦尼克号生存项目进行预测. 关于决策树的详细介绍及原理参见前一 ...
- 【阿旭机器学习实战】【6】普通线性线性回归原理及糖尿病进展预测实战
[阿旭机器学习实战]系列文章主要介绍机器学习的各种算法模型及其实战案例,欢迎点赞,关注共同学习交流. 本文对机器学习中的线性回归模型原理进行了简单介绍,并且通过实战案例糖尿病进展预测,介绍了其基本使用 ...
- 【阿旭机器学习实战】【15】人脸自动补全(多目标回归),并比较5种不同模型的预测效果
[阿旭机器学习实战]系列文章主要介绍机器学习的各种算法模型及其实战案例,欢迎点赞,关注共同学习交流. 本文通过5种不同的机器学习模型:KNN回归模型,线性回归,岭回归,lasso回归,极端随机森林回归 ...
- 【阿旭机器学习实战】【24】信用卡用户流失预测实战
[阿旭机器学习实战]系列文章主要介绍机器学习的各种算法模型及其实战案例,欢迎点赞,关注共同学习交流. 本文针对某国外匿名化处理后的信用卡真实数据集,通过建模判断该用户是否已经流失,包括特征处理与分类模 ...
- 疯狂的机器学习实战-银行营销预测
机器学习实战-银行营销预测 问题: 数据集: 链接:https://pan.baidu.com/s/1TUOLr8jFbT38p_iUh1iBsQ 提取码:1234 银行营销数据集 这些数据与葡萄牙银 ...
- 【阿旭机器学习实战】【11】文本分类实战:利用朴素贝叶斯模型进行邮件分类
[阿旭机器学习实战]系列文章主要介绍机器学习的各种算法模型及其实战案例,欢迎点赞,关注共同学习交流. 本文主要介绍如何使用朴素贝叶斯模型进行邮件分类,置于朴素贝叶斯模型的原理及分类,可以参考我的上一篇 ...
- 【阿旭机器学习实战】【16】KMeans算法介绍及实战:利用KMeans进行足球队分类
[阿旭机器学习实战]系列文章主要介绍机器学习的各种算法模型及其实战案例,欢迎点赞,关注共同学习交流. 本文对机器学习中的KMeans算法原理进行了简单介绍,并且通过实战案例:足球队分类详细介绍了其使用 ...
- 【阿旭机器学习实战】【27】贝叶斯模型:新闻分类实战----CounterVecorizer与TfidVectorizer构建特征向量对比
[阿旭机器学习实战]系列文章主要介绍机器学习的各种算法模型及其实战案例,欢迎点赞,关注共同学习交流. 本文介绍了新闻分类实战案例,并通过两种方法CounterVecorizer与TfidVectori ...
- 【阿旭机器学习实战】【10】朴素贝叶斯模型原理及3种贝叶斯模型对比:高斯分布朴素贝叶斯、多项式分布朴素贝叶斯、伯努利分布朴素贝叶斯
[阿旭机器学习实战]系列文章主要介绍机器学习的各种算法模型及其实战案例,欢迎点赞,关注共同学习交流. 本文介绍了机器学习中的朴素贝叶斯的基本原理,并对3种贝叶斯模型根据鸢尾花实例进行了比较. 目录 朴 ...
最新文章
- 真菌其实是长歪了的动物
- TaskExecutor设计与实现
- PHP内核探索:Zend引擎
- python的日志简单使用
- Spring MVC之表单标签
- hadoop集群中客户端修改、删除文件失败
- 【RippleNet】(一)preprocessor.py【未完】
- Asp.net(C#)给图片加上水印效果
- Castle 整合.NET Remoting
- python2.x提示这个错误:UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position
- GridView选中,编辑,取消,删除代码
- VISSIM二次开发(Python)大作业总结1
- PS2021中使用Nik插件崩溃闪退|Nik Collection不兼容cc2021闪退的解决方法
- Oracle Database 11g SQL开发指南store模式脚本
- LuoguP3356 火星探险问题(费用流)
- 如何生成一个APP_ID
- SDCC编译器学习旅之一
- 软考试题中经常混淆的概念
- 微信支付宝H5收款码扫码转账个人通道仿原生接口带备注可回调成功率9成以上
- 12.10中兴通讯科技园研发大楼发生42岁工程师跳楼事件
热门文章
- IE10及其以下版本不支持Javascript Map对象(“Map”未定义)
- 代购最新骗局曝光:出国买货视频拍摄地竟是国内山寨商场
- 小程序反编译 g is not defined_适合闺蜜聚会发的小句子,呆萌可爱,忍不住点赞!...
- 机器学习中学习库sklearn跟TensorFlow的区别
- ubuntu18.04 apt源的添加、修改
- Corel 会声会影 2023 旗舰版雨糖科技v26.0.0.163特别版新功能介绍
- 2021-2027全球与中国宠物寄养市场现状及未来发展趋势
- java使用drawtext重叠_Java Graphics.drawText方法代碼示例
- HDU6208 The Dominator of Strings【字符串】
- MySQL配置文件解析