网站建设找推推蛙,网站建设的发展序列,企业管理培训课程定制,影视公司需要的许可证【阿旭机器学习实战】系列文章主要介绍机器学习的各种算法模型及其实战案例#xff0c;欢迎点赞#xff0c;关注共同学习交流。 【阿旭机器学习实战】【36】糖尿病预测—决策树建模及其可视化 目录【阿旭机器学习实战】【36】糖尿病预测---决策树建模及其可视化1. 导入数据并… 【阿旭机器学习实战】系列文章主要介绍机器学习的各种算法模型及其实战案例欢迎点赞关注共同学习交流。 【阿旭机器学习实战】【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 inlinecol_names [pregnant, glucose, bp, skin, insulin, bmi, pedigree, age, label]
df pd.read_csv(pima-indians-diabetes.csv, headerNone, namescol_names)df.head()pregnantglucosebpskininsulinbmipedigreeagelabel061487235033.60.62750111856629026.60.35131028183640023.30.672321318966239428.10.16721040137403516843.12.288331
# 相关性矩阵
corr df.iloc[:,:-1].corr()
#corr (corr)
sns.heatmap(corr, xticklabelscorr.columns.values,yticklabelscorr.columns.values)corrpregnantglucosebpskininsulinbmipedigreeagepregnant1.0000000.1294590.141282-0.081672-0.0735350.017683-0.0335230.544341glucose0.1294591.0000000.1525900.0573280.3313570.2210710.1373370.263514bp0.1412820.1525901.0000000.2073710.0889330.2818050.0412650.239528skin-0.0816720.0573280.2073711.0000000.4367830.3925730.183928-0.113970insulin-0.0735350.3313570.0889330.4367831.0000000.1978590.185071-0.042163bmi0.0176830.2210710.2818050.3925730.1978591.0000000.1406470.036242pedigree-0.0335230.1373370.0412650.1839280.1850710.1406471.0000000.033561age0.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_size0.3, random_state1) # 70% training and 30% test2.1 决策树模型
# 创建决策树分类器
clf DecisionTreeClassifier(criterionentropy)# 训练模型
clf clf.fit(X_train,y_train)# 使用训练好的模型做预测
y_pred clf.predict(X_test)# 模型的准确性
print(Accuracy:,metrics.accuracy_score(y_test, y_pred))Accuracy: 0.74891774891774892.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_filedot_data, filledTrue, roundedTrue,special_charactersTrue,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(criterionentropy,max_depth4, # 定义树的深度, 可以用来防止过拟合min_weight_fraction_leaf0.01 # 定义叶子节点最少需要包含多少个样本(使用百分比表达), 防止过拟合)# 训练模型
clf.fit(X_train,y_train)# 预测
y_pred clf.predict(X_test)# 模型的性能
print(Accuracy:,metrics.accuracy_score(y_test, y_pred))Accuracy: 0.7705627705627706from six import StringIO
from IPython.display import Image
from sklearn.tree import export_graphviz
import pydotplus
dot_data StringIO()
export_graphviz(clf, out_filedot_data, filledTrue, roundedTrue,special_charactersTrue, 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(criterionentropy,n_estimators1, max_depth5, # 定义树的深度, 可以用来防止过拟合min_samples_split10, # 定义至少多少个样本的情况下才继续分叉#min_weight_fraction_leaf0.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”即可获取本文数据集、源码与项目文档欢迎共同学习交流