【阿旭机器学习实战】【36】糖尿病预测---决策树建模及其可视化

【阿旭机器学习实战】系列文章主要介绍机器学习的各种算法模型及其实战案例,欢迎点赞,关注共同学习交流。

【阿旭机器学习实战】【36】糖尿病预测—决策树建模及其可视化

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()
pregnantglucosebpskininsulinbmipedigreeagelabel
061487235033.60.627501
11856629026.60.351310
28183640023.30.672321
318966239428.10.167210
40137403516843.12.288331
# 相关性矩阵
corr = df.iloc[:,:-1].corr()
#corr = (corr)
sns.heatmap(corr, 
            xticklabels=corr.columns.values,
            yticklabels=corr.columns.values)

corr
pregnantglucosebpskininsulinbmipedigreeage
pregnant1.0000000.1294590.141282-0.081672-0.0735350.017683-0.0335230.544341
glucose0.1294591.0000000.1525900.0573280.3313570.2210710.1373370.263514
bp0.1412820.1525901.0000000.2073710.0889330.2818050.0412650.239528
skin-0.0816720.0573280.2073711.0000000.4367830.3925730.183928-0.113970
insulin-0.0735350.3313570.0889330.4367831.0000000.1978590.185071-0.042163
bmi0.0176830.2210710.2818050.3925730.1978591.0000000.1406470.036242
pedigree-0.0335230.1373370.0412650.1839280.1850710.1406471.0000000.033561
age0.5443410.2635140.239528-0.113970-0.0421630.0362420.0335611.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 tree

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('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”即可获取本文数据集、源码与项目文档,欢迎共同学习交流

  • 3
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可视化mmclassification的结果,你可以按照以下步骤进行操作: 1. 首先,你需要下载mmclassification的代码和模型。你可以通过引用中的下载链接来获取mmclassification的代码。该链接指向了mmclassification在GitHub上的仓库。 2. 如果你已经训练好了自己的模型,并且想要使用自己的模型进行可视化,那么你可以将模型文件放在mmclassification的默认模型目录中。该目录的路径可以在引用中找到。 3. 如果你想要使用已经训练好的模型进行可视化,你可以关注阿旭算法与机器学习公众号,并回复【mmlab实战1】,即可获取已经下载好的mmclassification源码和demo训练用的数据。数据文件已经放置在mmcls/data目录中,这些数据可以用于可视化结果的展示。你可以在引用中找到更多关于如何获取这些数据的信息。 4. 一旦你准备好了代码和数据,你可以使用mmclassification提供的可视化工具来展示模型的结果。具体的可视化方法可以在mmclassification的文档或代码中找到。你可以通过查看mmclassification的GitHub仓库或者阅读相关的文档来了解如何使用这些可视化工具。 5. 最后,你可以根据你的需要选择不同的可视化方式,比如绘制混淆矩阵、生成分类报告或绘制类别概率分布图等。这些方法都可以帮助你更好地理解和展示mmclassification的结果。 请注意,以上步骤仅仅是为了帮助你开始可视化mmclassification的结果,并非详尽的操作指南。具体的操作步骤可能会因为你的实际需求和环境而有所不同。为了获得更详细的信息和指导,请参考mmclassification的文档和代码。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【超详细】MMLab分类任务mmclassification:环境配置说明、训练、预测及模型结果可视化展示](https://blog.csdn.net/qq_42589613/article/details/129630044)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

阿_旭

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

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

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

打赏作者

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

抵扣说明:

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

余额充值