【机器学习】机器学习学习笔记 - 监督学习 - 多项式回归决策树回归 - 03

多项式回归

  • 解决线性回归的准备性不足问题(线性回归只能是直线,多项式回归引入多项式可以是曲线)
  • 通过对预测值进行多项式转换, 使得回归模型可以是非线性的
  • 多项式回归的优点是可以处理非线性的数据
  • 多项式回归的缺点是它对数据进行了多项式转换

pdf在线免费转word文档 https://orcc.online/pdf

# 曲线多项式的次数设置为2
polynomial = PolynomialFeatures(degree=2)# 多项式回归
poly_linear_model = linear_model.LinearRegression()
# 多项式参数
# 多项式转换结果
X_train_transformed = polynomial.fit_transform(X_train)
# 训练模型
poly_linear_model.fit(X_train_transformed, y_train)# 多项式转换测试数据
X_test_transformed = polynomial.fit_transform(X_test)
# 通过转换的测试数据预测数据
y_test_poly_pred = poly_linear_model.predict(X_test_transformed)
print(y_test_poly_pred)

决策树回归

  • 集成学习(Ensemble Learning) 旨在通过组合多个基本模型(弱学习器)的预测创建一个强学习器(强学习器)
  • Boosting(提升) 和 Bagging(袋装) 都是集成学习的思想
  • Bagging(袋装) 原始数据集随机采样, 然后将采样的数据集分别训练多个决策树模型, 最后将这些决策树模型的预测结果进行投票(投票:分类, 回归:平均), 得到最终的预测结果
  • Boosting(提升) 通过迭代的方式, 训练多个决策树模型, 最后将这些决策树模型的预测结果进行加权平均, 得到最终的预测结果
  • bagging: 适用于高方差、低偏差的数据集 (random forest 随机森林)
  • boosting: 适用于高偏差、低方差的数据集 (AdaBoost 自适应增强)
  • 偏差: 预测结果的准确性
  • 方差: 预测结果的离散程度
决策树回归 decision tree regression
from sklearn.tree import DecisionTreeRegressor# 训练模型
# 决策树回归
# max_depth 树的深度, 设定位4,防止任意深度过深,导致过拟合
dt_regressor = DecisionTreeRegressor(max_depth=4)
dt_regressor.fit(X_train, y_train)y_pred_dt = dt_regressor.predict(X_test)
mse = mean_squared_error(y_test, y_pred_dt)
evs = explained_variance_score(y_test, y_pred_dt)
print("#### Decision Tree performance ####")
print("Mean squared error (均方误差/平均平方误差 (越小越好)) = ", round(mse, 2))
print("Explained variance score (解释方差分 (0-1) 1 接近表示解释能力越好) =", round(evs, 2))# 决策树特征权重
def plot_feature_importances(feature_importances, title, feature_names):# 将重要性值标准化feature_importances = 100.0 * (feature_importances / max(feature_importances))# 将得分从高到低排序index_sorted = np.flipud(np.argsort(feature_importances))# 让X坐标轴上的标签居中显示pos = np.arange(index_sorted.shape[0]) + 0.5# 画条形图plt.figure()plt.bar(pos, feature_importances[index_sorted], align='center')print(pos, index_sorted, feature_importances)plt.xticks(pos, [feature_names[i] for i in index_sorted])plt.ylabel('Relative Importance')plt.title(title)plt.show()# print(dt_regressor.feature_importances_)
# print(dt_regressor.feature_importances_)
plot_feature_importances(dt_regressor.feature_importances_, 'Decision Tree regressor', data_columns)
自适应决策树回归 adaboost regressor
from sklearn.ensemble import AdaBoostRegressor# AdaBoost: adaptive boosting (自适应增强)
# n_estimators 基学习器的个数
ab_regressor = AdaBoostRegressor(DecisionTreeRegressor(max_depth=4), n_estimators=400, random_state=7)
ab_regressor.fit(X_train, y_train)y_pred_ab = ab_regressor.predict(X_test)
mse = mean_squared_error(y_test, y_pred_ab)
evs = explained_variance_score(y_test, y_pred_ab)
print("#### AdaBoost performance ####")
print("Mean squared error (均方误差/平均平方误差 (越小越好)) = ", round(mse, 2))
print("Explained variance score (解释方差分 (0-1) 1 接近表示解释能力越好) =", round(evs, 2))def plot_feature_importances(feature_importances, title, feature_names):# 将重要性值标准化feature_importances = 100.0 * (feature_importances / max(feature_importances))# 将得分从高到低排序index_sorted = np.flipud(np.argsort(feature_importances))# 让X坐标轴上的标签居中显示pos = np.arange(index_sorted.shape[0]) + 0.5# 画条形图plt.figure()plt.bar(pos, feature_importances[index_sorted], align='center')print(pos, index_sorted, feature_importances)plt.xticks(pos, [feature_names[i] for i in index_sorted])plt.ylabel('Relative Importance')plt.title(title)plt.show()plot_feature_importances(ab_regressor.feature_importances_, 'AdaBoost regressor', data_columns)
随机森林回归 random forest regressor
from sklearn.ensemble import RandomForestRegressor# 训练模型
# 随机森林回归
# 随机森林回归, n_estimators 决策树的个数, max_depth 决策树的深度, min_samples_split 决策树的最小样本数
rf_regressor = RandomForestRegressor(n_estimators=1000, max_depth=4, min_samples_split=2)
rf_regressor.fit(X_train, y_train)y_pred_rf = rf_regressor.predict(X_test)
mse = mean_squared_error(y_test, y_pred_rf)
evs = explained_variance_score(y_test, y_pred_rf)
print("#### Random Forest Regressor performance ####")
print("Mean squared error (均方误差/平均平方误差 (越小越好)) = ", round(mse, 2))
print("Explained variance score (解释方差分 (0-1) 1 接近表示解释能力越好) =", round(evs, 2))def plot_feature_importances(feature_importances, title, feature_names):# 将重要性值标准化feature_importances = 100.0 * (feature_importances / max(feature_importances))# 将得分从高到低排序index_sorted = np.flipud(np.argsort(feature_importances))# 让X坐标轴上的标签居中显示pos = np.arange(index_sorted.shape[0]) + 0.5# 画条形图plt.figure()plt.bar(pos, feature_importances[index_sorted], align='center')print(pos, index_sorted, feature_importances)plt.xticks(pos, [feature_names[i] for i in index_sorted])plt.ylabel('Relative Importance')plt.title(title)plt.show()# print(dt_regressor.feature_importances_)
# print(dt_regressor.feature_importances_)
plot_feature_importances(rf_regressor.feature_importances_, 'random forest regressor', data_columns)

IT免费在线工具网 https://orcc.online

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/827483.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】顺序表的实现(C语言)

数据结构中的顺序表是一种线性表,它使用一段连续的物理空间来存储数据。顺序表中的元素在逻辑上相邻,在物理存储空间中也相邻。顺序表的存储结构具有随机存取的特性,可以支持快速的随机访问,但插入和删除操作需要移动大量元素&…

kanzi工程辅助解析

背景:实际开发过程中,使用kanzi studio工程,遇到一个很大的问题,就是在多工程,多预设件,复杂绑定算式情况下,很难梳理接口绑定情况,而且kanzi自带的查找很不好用。尤其是拿到一个新工程&#xf…

春季打卡圣地|超出片的成都文创产业园

春季拍照还在去人民公园、青龙湖吗?这个春天来点不一样的,就在金牛区的成都文创产业园——国际数字影像产业园旁,沙河源公园占地面积约150亩,地下室面积约4000平方米,这里的花能让摄影爱好者们拍个够。 国际数字影像产…

FFmpeg源码编译

msys2 依赖环境安装 依赖环境安装编译X264编译 fdk-aac文件处理编译x265编译FFmpeg 依赖环境安装 编译X264 用于h264 AVC视频格式编码 CCcl ./configure --enable-shared #指定使用cl,编译成动态链接库 make -j32 #使用32线程进行编码 make install命令一 关于第一条命令执…

Cocos Creator 节点的位置旋转与缩放详解

前言 Cocos Creator 是一款面向游戏开发者的跨平台游戏开发工具,它基于 JavaScript 和 TypeScript,并提供了丰富的游戏开发功能和工具。在游戏开发过程中,节点的位置、旋转和缩放是非常重要的操作,它们直接影响到游戏对象在游戏场…

springboot @Validated的概念以及实战

在 Spring Boot 开发中,Validated 注解是用于开启和利用 Spring 的验证框架的一种方式,特别是在处理控制层的输入验证时。本篇技术博客将详细介绍 Validated 注解的概念和使用方法,并通过实际的应用示例来展示如何在项目中实现有效的数据验证…

攻击者使用新型隐写术攻击,针对全球320个组织

隐写术是一种将数据隐藏在看似无害的文件中的技术,使用户和安全产品无法检测到它们。 近期,Positive Technologies 发现了TA558 黑客组织正在开展的一项新活动,使用隐写术将恶意代码隐藏在图像内,从而将各种恶意软件工具传递到目…

XiaodiSec day036 Learn Note 小迪安全学习笔记

XiaodiSec day036 Learn Note 小迪安全学习笔记 记录得比较凌乱,不尽详细 day36 XSS 老 XSS 所适用的环境是 IE 浏览器,早碰不到了 mxss 是比较老的漏洞,适用的环境是老版本的 QQ uxss 早已修复,攻击浏览器 swf 的 xss pdf…

展会媒体邀约资源,媒体宣传服务执行

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 在组织展会时,媒体宣传服务的执行是提升展会知名度和影响力的关键环节。 确定目标媒体:根据展会的主题和目标受众,选择适合的媒体进行邀请。这可能包…

ICommentService

目录 1、 ICommentService 1.1、 * 获取文章下的评论 1.2、 * 获取文章下的评论 1.3、 * 根据主键查询评论 1.4、 * 更新评论状态 2、 * options的接口

docker 虚拟化与docker的概念

一、云计算的三种服务模式 laas、pass、saas 1.1 IaaS: Infrastructure-as-a-Service(基础设施即服务) 第一层叫做IaaS,有时候也叫做Hardware-as-a-Service,几年前如果你想在办公室或者公司的网站上运行一些企业应用&#xff0c…

将彩色图转化为灰度图及其原理介绍

彩色图介绍 彩色图像是一种包含颜色信息的图像,通常由红色、绿色和蓝色(RGB)三个颜色通道组成。这三种颜色通道可以叠加在一起来形成各种不同的颜色。 彩色图像中的每个像素都有三个数值,分别表示红色、绿色和蓝色通道的强度或亮…

vue 关键字变红

1.html <div v-html"replaceKeywordColor(item.title)" ></div> 2.js //value为搜索框内绑定的值 replaceKeywordColor(val) {if (val?.includes(this.value) && this.value ! ) {return val.replace(this.value,<font color"red&…

RuoYi-Vue-Plus (SaToken 注解鉴权)

一、SaInterceptor 注解鉴权和路由拦截鉴权 拦截器&#xff1a;SaInterceptor 实现类位置&#xff1a; cn.dev33.satoken.interceptor.SaInterceptor 功能&#xff1a;Sa-Token 综合拦截器&#xff0c;提供注解鉴权和路由拦截鉴权能力 /*** 创建一个 Sa-Token 综合拦截器&…

重学java 19.面向对象 继承 上

走不出的那段阴霾&#xff0c;很多时候只不过是&#xff0c;我们把它当成了唯一 —— 24.4.22 面向对象整体知识导向&#xff1a; 知识梳理&#xff1a; 1.知道继承的好处 2.会使用继承 3.继承之后成员变量和成员方法的访问特点 4.方法的重写&#xff0c;知道方法重写的使用场景…

从构成看自来水厂自动化控制系统的创新与发展

自来水厂自动化控制系统涵盖了多个关键组成部分&#xff0c;包括水管理云平台、供水监控系统以及供水调度平台。 系统内嵌了一系列自主创新的核心算法&#xff0c;这些算法结合了数学建模、机器仿真和流体力学等多元数据模型&#xff0c;以优化设备间的关联和控制关系&#xf…

python爬虫 - 爬取html中的script数据(爬取新闻 36kr.com)

文章目录 1. 分析页面内容数据格式2. 使用re.findall方法&#xff0c;爬取新闻3. 使用re.search 方法&#xff0c;爬取新闻 1. 分析页面内容数据格式 打开 https://36kr.com/ 按F12&#xff08;或 在网页上右键 --> 检查&#xff08;Inspect&#xff09;&#xff09; 找…

CANFD帧能否唤醒CAN网络

前言 本文的撰写起因是源于AUTOSAR技术群中一位朋友的提问。他提出的问题是关于AUTOSAR网络管理功能是否支持CAN FD报文的实现。 朋友:Autosar网络管理功能有用CANFD报文实现的吗? 我:有啊,Autosar网络管理不限制报文类型是标准CAN还是CANFD 朋友:数据收发还是8字节的方式…

大珩PPT助手一键颜色设置

大珩PPT助手最新推出的一键设置文字颜色和背景色功能&#xff0c;为用户在创建演示文稿时带来了更便捷、高效的体验。这一功能使用户能够轻松调整演示文稿中文字的颜色和幻灯片的背景色&#xff0c;以满足不同场合和主题的需要。 以下是该功能的几个关键特点和优势&#xff1a…

Python多继承机制与MRO深度解析

Python多继承机制与MRO深度解析 在Python的面向对象编程中&#xff0c;多继承是一个强大的特性&#xff0c;它允许一个类继承自多个父类&#xff0c;从而集成多个父类的属性和方法。然而&#xff0c;多继承也带来了一个复杂的问题&#xff1a;当子类调用一个方法时&#xff0c…