首页 > 编程语言 >数据分享|PYTHON用决策树分类预测糖尿病和可视化实例|附代码数据

数据分享|PYTHON用决策树分类预测糖尿病和可视化实例|附代码数据

时间:2023-06-05 23:13:01浏览次数:48  
标签:语言 PYTHON 回归 可视化 数据 预测 决策树

全文下载链接:http://tecdat.cn/?p=23848

最近我们被客户要求撰写关于决策树的研究报告,包括一些图形和统计输出。

在本文中,决策树是对例子进行分类的一种简单表示。它是一种有监督的机器学习技术,数据根据某个参数被连续分割。决策树分析可以帮助解决分类和回归问题 ( 点击文末“阅读原文”获取完整代码数据******** ) 。

决策树算法将数据集分解成更小的子集;同时,相关的决策树也在逐步发展。决策树由节点(测试某个属性的值)、边/分支(对应于测试的结果并连接到下一个节点或叶子)和叶子节点(预测结果的终端节点)组成,使其成为一个完整的结构。

扩展:GBDT (Gradient Boosting Decision Tree) 梯度提升决策树

GBDT (Gradient Boosting Decision Tree) 梯度提升决策树。DT-Decision Tree决策树,GB是Gradient Boosting,是一种学习策略,GBDT的含义就是用Gradient Boosting的策略训练出来的DT模型。

在这篇文章中,我们将学习Python中决策树的实现,使用scikit learn包。

对于我们的分析,我们选择了一个非常相关和独特的数据集,该数据集适用于医学科学领域,它将有助于预测病人是否患有糖尿病 ( 查看文末了解数据免费获取方式 ) ,基于数据集中采集的变量。这些信息来自国家糖尿病、消化道和肾脏疾病研究所,包括预测变量,如病人的BMI、怀孕情况、胰岛素水平、年龄等。让我们直接用决策树算法来解决这个问题,进行分类。

用Python实现决策树

对于任何数据分析问题,我们首先要清理数据集,删除数据中的所有空值和缺失值。在这种情况下,我们不是在处理错误的数据,这使我们省去了这一步。 

  1. 为我们的决策树分析导入所需的库并拉入所需的数据
 
# 加载库
from sklearn.model_selection import train_test_split #导入 train_test_split 函数
from sklearn import metrics #导入scikit-learn模块以计算准确率

# 载入数据集
data = pd.read_csv("diabs.csv", header=None, names=col_names)

让我们看看这个数据集的前几行是什么样子的

 
pima.head()

图片

  1. 在加载数据后,我们了解结构和变量,确定目标变量和特征变量(分别为因变量和自变量)。
 
#在特征和目标变量中拆分数据集
X = pima[feature] # 特征
y = pima.label # 目标变量

3. 我们把数据按70:30的比例分成训练集和测试集。

 
# 将数据集分成训练集和测试集
train_test_split(X, y, test_size=0.3, random_state=1) # 70%的训练和30%的测试

标准做法,你可以根据需要调整70:30至80:20。 


点击标题查阅往期内容

图片

R语言用逻辑回归、决策树和随机森林对信贷数据集进行分类预测

图片

左右滑动查看更多

图片

01

图片

02

图片

03

图片

04

图片

  1. 使用scikit learn进行决策树分析
 
# 创建决策树分类器对象
clf = DecisionTreeClassifier()

5. 估计分类器预测结果的准确程度。准确度是通过比较实际测试集值和预测值来计算的。

 
# 模型准确率,分类器正确的概率是多少?
print("准确率:",metrics.accuracy_score(y_test, y_pred))

图片

我们的决策树算法有67.53%的准确性。这么高的数值通常被认为是好的模型。 

  1. 现在我们已经创建了一棵决策树,看看它在可视化的时候是什么样子的

决策树的可视化。

 
Image(graph.create_png())

图片

Python输出

你会注意到,在这个决策树图中,每个内部节点都有一个分割数据的决策规则。

衡量通过决策树分析创建的节点的不纯度

Gini指的是Gini比,衡量决策树中节点的不纯度。人们可以认为,当一个节点的所有记录都属于同一类别时,该节点是纯的。这样的节点被称为叶子节点。

在我们上面的结果中,由于结果的复杂性,完整的决策树很难解释。修剪一棵树对于结果的理解和优化它是至关重要的。这种优化可以通过以下三种方式之一进行。

  • 标准:默认="gini"
  • splitter:字符串,可选(默认="best")或分割策略。选择分割策略。可以选择 "best"来选择最佳分割,或者选择 "random"来选择最佳随机分割。
  • max_depth: int或None,可选(默认=None)或树的最大深度
    这个参数决定了树的最大深度。这个变量的数值越高,就会导致过度拟合,数值越低,就会导致拟合不足。

在我们的案例中,我们将改变树的最大深度作为预修剪的控制变量。让我们试试max_depth=3。

 
# 创建决策树分类器对象
DecisionTree( max_depth=3)

图片

在Pre-pruning上,决策树算法的准确率提高到77.05%,明显优于之前的模型。

决策树在Python中的实现

 
Image(graph.create_png())

结果:

图片

Python输出

这个修剪过的模型的结果看起来很容易解释。有了这个,我们就能够对数据进行分类,并预测一个人是否患有糖尿病。但是,决策树并不是你可以用来提取这些信息的唯一技术,你还可以探索其他各种方法。

如果你想学习和实现这些算法,那么你应该探索通过辅助方法学习,并得到专业人士的1对1指导。拓端数据科学职业轨道计划保证了1:1的指导,项目驱动的方法,职业辅导,提供实习工作项目保证,来帮助你将职业生涯转变为数据驱动和决策的角色。请联系我们以了解更多信息!

数据获取

在下面公众号后台回复“糖尿病数据”,可免费获取完整数据。


图片

本文摘选 《 PYTHON用决策树分类预测糖尿病和可视化实例 》 ,点击“阅读原文”获取全文完代码和数据资料。

图片

点击标题查阅往期内容

样条曲线、决策树、Adaboost、梯度提升(GBM)算法进行回归、分类和动态可视化
SAS分类决策树预测贷款申请评分剪枝和结果可视化
分类回归决策树交互式修剪和更美观地可视化分析细胞图像分割数据集
PYTHON用户流失数据挖掘:建立逻辑回归、XGBOOST、随机森林、决策树、支持向量机、朴素贝叶斯和KMEANS聚类用户画像
PYTHON集成机器学习:用ADABOOST、决策树、逻辑回归集成模型分类和回归和网格搜索超参数优化
Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析
PYTHON集成机器学习:用ADABOOST、决策树、逻辑回归集成模型分类和回归和网格搜索超参数优化
R语言集成模型:提升树boosting、随机森林、约束最小二乘法加权平均模型融合分析时间序列数据
Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析
R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化
R语言基于树的方法:决策树,随机森林,Bagging,增强树
R语言用逻辑回归、决策树和随机森林对信贷数据集进行分类预测
spss modeler用决策树神经网络预测ST的股票
R语言中使用线性模型、回归决策树自动组合特征因子水平
R语言中自编基尼系数的CART回归决策树的实现
R语言用rle,svm和rpart决策树进行时间序列预测
python在Scikit-learn中用决策树和随机森林预测NBA获胜者
python中使用scikit-learn和pandas决策树进行iris鸢尾花数据分类建模和交叉验证
R语言里的非线性模型:多项式回归、局部样条、平滑样条、 广义相加模型GAM分析
R语言用标准最小二乘OLS,广义相加模型GAM ,样条函数进行逻辑回归LOGISTIC分类
R语言ISLR工资数据进行多项式回归和样条回归分析
R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型
R语言用泊松Poisson回归、GAM样条曲线模型预测骑自行车者的数量
R语言分位数回归、GAM样条曲线、指数平滑和SARIMA对电力负荷时间序列预测R语言样条曲线、决策树、Adaboost、梯度提升(GBM)算法进行回归、分类和动态可视化
如何用R语言在机器学习中建立集成模型?
R语言ARMA-EGARCH模型、集成预测算法对SPX实际波动率进行预测在python 深度学习Keras中计算神经网络集成模型R语言ARIMA集成模型预测时间序列分析R语言基于Bagging分类的逻辑回归(Logistic Regression)、决策树、森林分析心脏病患者
R语言基于树的方法:决策树,随机森林,Bagging,增强树
R语言基于Bootstrap的线性回归预测置信区间估计方法
R语言使用bootstrap和增量法计算广义线性模型(GLM)预测置信区间
R语言样条曲线、决策树、Adaboost、梯度提升(GBM)算法进行回归、分类和动态可视化
Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析
R语言随机森林RandomForest、逻辑回归Logisitc预测心脏病数据和可视化分析
R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化
Matlab建立SVM,KNN和朴素贝叶斯模型分类绘制ROC曲线
matlab使用分位数随机森林(QRF)回归树检测异常值

标签:语言,PYTHON,回归,可视化,数据,预测,决策树
From: https://www.cnblogs.com/tecdat/p/17459217.html

相关文章

  • 什么决策树
    决策树是一种基于树形结构的机器学习算法,用于解决分类和回归问题。它通过构建一棵树来对输入数据进行判断和预测。决策树的构建过程是从根节点开始,根据特征的取值将数据集划分为不同的子集,然后再对每个子集递归地进行划分,直到满足停止条件。在构建过程中,决策树通过选择最优的特征......
  • Python程序与设计
    2-27在命令行窗口中启动的Python解释器中实现在Python自带的IDLE中实现print("Helloworld")编码规范每个import语句只导入一个模块,尽量避免一次导入多个模块不要在行尾添加分号“:”,也不要用分号将两条命令放在同一行建议每行不超过80个字符使用必要的空行可以增加代码的可读性运算......
  • vscode技巧----屏蔽python类型错误提示
    有一段python代码如下:fromwin32com.shellimportshellfromwin32com.shellimportshellcon结果出现类型错误的提示:在网上搜了一些方法都没有解决,而实际运行代码时,又不会出错,所以干脆就把这个告警提示屏蔽掉即可,如下所示:fromwin32com.shellimportshell......
  • Python爬取郑州安居客租房数据采集分析
    一、选题背景在现在,虽然我国实行楼市调控,使得总体的房价稳定下来,但是我国房价还是处于一个高水平之上。在这种情况下,大批在郑奋斗的年轻人选择租房,所以此次数据分析可以使在郑的年轻人了解郑州租房现状,让年轻人在租房时可以选到更加适合的房源。二、爬虫设计方案1、爬虫网址郑......
  • Python自动化运维
    2-27在命令行窗口中启动的Python解释器中实现在Python自带的IDLE中实现print("Helloworld")编码规范每个import语句只导入一个模块,尽量避免一次导入多个模块不要在行尾添加分号“:”,也不要用分号将两条命令放在同一行建议每行不超过80个字符使用必要的空行可以增加代码的可读性运算......
  • 实验6 turtle绘图与python库应用编程体验
    实验任务一task1_1fromturtleimport*defmove(x,y):penup()goto(x,y)pendown()defdraw(n,size=100):foriinrange(n):fd(size)left(360/n)defmain():pensize(2)pencolor('red')move(-200,0)......
  • 【Python网络爬虫课程设计】B站up主——老番茄视频数据爬取+数据可视化分析
    一、选题背景1.背景随着大数据时代的来临,网络爬虫在互联网中的地位将越来越重要。互联网中的数据是海量的,如何自动高效地获取互联网中我们感兴趣的信息并为我们所用是一个重要的问题,而爬虫技术就是为了解决这些问题而生的。对于身为数据科学与大数据技术专业的学生来说,网络......
  • python学习框架
    Python简介与安装Python的历史与特点Python的安装与配置Python基础语法变量与数据类型运算符与表达式控制结构(条件判断与循环)函数与模块错误处理与异常Python数据结构列表(List)元组(Tuple)集合(Set)字典(Dictionary)Python面向对象编程类与对象继承与多态封......
  • 实验6 turtle绘图与python库应用编程体验
    实验任务1:使用turtle绘制基础图形task1_1.py实验源码:1fromturtleimport*23defmove(x,y):4penup()5goto(x,y)6pendown()78defdraw(n,size=100):9foriinrange(n):10fd(size)11left(360/n)12......
  • python 常用的内置函数
    1、sorted() 排序l=sorted([1,2,3,6,34,20,18])print(l)2、help()会经常使用python自带函数或模块,一些不常用的函数或是模块的用途不是很清楚,这时候就需要用到help函数来查看帮助。3、dir()dir()函数的参数是你传入的对象,它会返回对象的属性和方法print(dir(l......