当前位置: 首页 > news >正文

24/8/9算法笔记 决策树VS线性回归

from sklearn.tree import DecisionTreeRegressorfrom sklearn.linear_model import LinearRegressionfrom sklearn import datasetsfrom sklearn.model_selection import train_test_split
import numpy as np
X,y = datasets.load_diabetes(return_X_y=True)#糖尿病数据
X_train,X_test,y_train,y_test = train_test_split(X,y)
model = LinearRegression()
model.fit(X_train,y_train)
#上面得分更高,训练数据
#数据量足够大,一定是上面得分更加高
print('训练数据得分',model.score(X_train,y_train))
print('测试数据得分',model.score(X_test,y_test))

import matplotlib.pyplot as plt
plt.rcParams['font.family'] ='Fangsong'
plt.figure(figsize = (12,6))
max_depth = np.arange(1,16)
score=[]
score2=[]
for d in max_depth:model = DecisionTreeRegressor(max_depth=d)model.fit(X_train,y_train)score2.append(model.score(X_train,y_train))s = model.score(X_test,y_test)score.append(s)plt.plot(max_depth,score2,'g*-')#绿色的线是训练数据,随着树深度的增加得分变化
plt.plot(max_depth,score,'ro-')#'红色的是测试数据随深度的增加
plt.xlabel('树最大深度',fontsize = 18)
plt.ylabel('Score',fontsize = 18)
plt.title('决策树得分随着树深度变化',fontsize = 18)
plt.legend(['训练数据的得分','测试数据的得分'],fontsize=18)
print('最高分数',max(score))

决策树和线性回归是两种常用的机器学习算法,它们在很多方面有所不同:

  1. 模型类型

    • 决策树:是一种非参数的监督学习算法,用于分类和回归任务。它通过学习简单的决策规则从数据特征中推断出目标值。
    • 线性回归:是一种参数的监督学习算法,仅用于回归任务。它假设输入特征和输出变量之间存在线性关系。
  2. 处理数据的能力

    • 决策树可以处理数值和类别数据,而且不需要假设数据的分布。
    • 线性回归通常假设数据符合正态分布,并且主要处理数值数据。
  3. 模型解释性

    • 决策树模型易于理解和解释,可以可视化地展示决策过程。
    • 线性回归模型的解释性也很好,因为它基于权重系数来表示特征对预测结果的影响。
  4. 对非线性问题的处理

    • 决策树能够很好地处理非线性问题,因为它通过分割数据空间来捕捉复杂的模式。
    • 线性回归在处理非线性问题时表现不佳,因为它仅适用于线性关系。
  5. 过拟合风险

    • 决策树容易过拟合,尤其是当树变得非常深和复杂时。需要使用剪枝等技术来控制模型复杂度。
    • 线性回归通常不容易过拟合,除非特征数量接近或超过样本数量。
  6. 模型复杂度

    • 决策树的复杂度可以通过树的深度和叶子节点的数量来衡量。
    • 线性回归的复杂度通常较低,因为它只涉及特征的线性组合。
  7. 训练速度

    • 决策树通常训练速度较快,尤其是在使用像 CART 这样的算法时。
    • 线性回归的训练速度通常非常快,因为它只涉及解决一个优化问题。
  8. 预测速度

    • 决策树的预测速度通常较快,因为只需要进行一系列的比较操作。
    • 线性回归的预测速度也很快,因为它只涉及计算一个线性组合。
  9. 多输出问题

    • 决策树可以很容易地扩展到多输出问题,尽管需要对每个输出单独建模。
    • 线性回归也可以处理多输出问题,但每个输出需要一个独立的模型。
  10. 特征选择

    • 决策树在构建过程中可以进行特征选择,自动选择最有信息量的特征进行分裂。
    • 线性回归通常需要预先进行特征选择,以避免模型性能下降。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 景联文科技:破解数据标注行业痛点,引领高质量AI数据服务
  • 二、Matlab图像处理基础
  • PDF隐写思路
  • 如何使用open ai实现全站语义搜索?
  • 游戏手柄开发一款游戏
  • Python 复习 日志2024/8/9
  • 系统编程 day7 文件6
  • 【JavaEE】CAS原理
  • Beyond Compare解锁版下载及安装 (文件和文件夹比较工具)
  • Adobe Substance 3D Stager v1.2.2.5262 解锁版下载及安装教程( 3D场景设计和渲染软件)
  • 访问网站显示不安全如何处理
  • pinia-plugin-persistedstate 插件不生效
  • WPF Treeview开启虚拟化后如何找到TreeViewItem
  • Docker容器里centos、unbuntu无法使用 systemctl 命令
  • 更换到阿里云的 CentOS 7 镜像源
  • Google 是如何开发 Web 框架的
  • @angular/forms 源码解析之双向绑定
  • [译] React v16.8: 含有Hooks的版本
  • Angular6错误 Service: No provider for Renderer2
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • es6
  • JS字符串转数字方法总结
  • Laravel Telescope:优雅的应用调试工具
  • MySQL几个简单SQL的优化
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • Spring核心 Bean的高级装配
  • SQLServer之索引简介
  • Terraform入门 - 3. 变更基础设施
  • 从PHP迁移至Golang - 基础篇
  • 第2章 网络文档
  • 利用jquery编写加法运算验证码
  • 驱动程序原理
  • 三分钟教你同步 Visual Studio Code 设置
  •  一套莫尔斯电报听写、翻译系统
  • 再次简单明了总结flex布局,一看就懂...
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • ​​​【收录 Hello 算法】9.4 小结
  • ‌分布式计算技术与复杂算法优化:‌现代数据处理的基石
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (4)STL算法之比较
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (55)MOS管专题--->(10)MOS管的封装
  • (C语言)fread与fwrite详解
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (转)C#调用WebService 基础
  • .Mobi域名介绍
  • .NET CF命令行调试器MDbg入门(一)
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .net8.0与halcon编程环境构建
  • .Net小白的大学四年,内含面经
  • .ui文件相关