基于sklearn框架实现线性回归,多项式回归和支持向量机的项目实战
文章目录
- 前言
- 一、 Vanilla linear regression
- 二、Support Vector Machines (for regression)
- 三,Polynomial regression
前言
在本实验中,您实现了多个简单机器学习的回归算法。 尽管它很简单,但是该算法非常强大,可以满足您的许多机器学习需求。 因此,研究人员想出各种技巧使其更有效也就不足为奇了。 在本实验中,我们将研究其中的一些。 但是,让我们首先修改基本模型。
提示:以下是本篇文章正文内容,下面案例可供参考
一、 Vanilla linear regression
为了重现性,让我们设置随机生成器的种子:
import numpy as np# make numpy randomisation predictable
np.random.seed(0)
然后,让我们导入scikit库中包含的波士顿房价数据集:
from sklearn.datasets import load_boston# load dataset
boston = load_boston()
并将数据集分为两部分:80%训练集和20%测试集。
# partition the dataset into training and test sets
rnd_indices = np.random.permutation(boston.data.shape[0])
train_size = int(boston.data.shape[0] * 0.8)
train_indices = rnd_indices[:train_size]
test_indices = rnd_indices[train_size:]train_data = boston.data[train_indices, :]
test_data = boston.data[test_indices, :]
train_target = boston.target[train_indices]
test_target = boston.target[test_indices]
最后,是时候训练我们的线性回归模型了:
from sklearn.linear_model import LinearRegression# fit a linear regressor
lin_reg = LinearRegression()
lin_reg.fit(train_data, train_target)
修改以下代码以同时打印训练和测试RMSE。
train_predict = lin_reg.predict(train_data)
train_rmse = np.sqrt(((train_target - train_predict) ** 2).mean())
print(train_rmse)
特征放缩
我们研究的第一个技巧是数据清理技术,这是一个很普遍的技术。 在将训练集提供给您喜欢的机器算法之前,最好对输入特征进行标准化。 这意味着对其进行缩放,以使它们的值或多或少地落在同一范围内。 scikit库提供两种不同的缩放方法:最小-最大缩放和标准缩放。
让我们尝试选择标准的缩放方法并编写一些示例代码:
scaler = StandardScaler()
scaler.fit(train_data)
scaled_train_data = scaler.transform(train_data)
scaled_test_data = scaler.transform(test_data)
正则化线性模型
机器学习算法受噪声和离群值的影响。 最重要的是,我们正在使用的模型可能对于眼前的问题过于强大,最终过度拟合。 为了避免这种情况,我们可以限制学习努力的结果,并避免为模型的权重选择极端值。 这称为正则化,可在ML频谱中找到许多应用程序。
在这里,我们看一下线性模型的两种选择:岭回归和套索回归。
用scikit编码它们非常容易。 这是一个例子:
# fit a ridge regressor
alpha_ridge = 1
ridge_reg = Ridge(alpha_ridge, solver="cholesky")
ridge_reg.fit(train_data, train_target)# fit a lasso regressor
alpha_lasso = 1
lasso_reg = Lasso(alpha_lasso)
lasso_reg.fit(train_data, train_target)
二、Support Vector Machines (for regression)
支持向量机(SVM)不仅可以用于分类,还可以用于回归! 此外,它们已经提供了一种隐式方式,可通过更改边距epsilon的宽度来规范化结果。
练习4.1。 修改以下代码,以在波士顿房价数据集上训练SVM回归器。 打印培训并测试RMSE。
# fit a support vector machine regressor
epsilon_svm = 1
svm_reg = LinearSVR(epsilon_svm)
svm_reg.fit(train_data, train_target)
三,Polynomial regression
线性回归很好,但有时数据集需要非线性模型。 在这方面,机器学习文献提供了相当多的非线性回归算法。 这里我们看一个最简单的多项式回归。
在实现算法之前,让我们创建一个综合数据集:
n = 100
data = 12 * np.random.rand(n, 1) - 3.9
target = 0.09 * (data**3) + 0.3 * (data**2) - 4.1 * data - 2.4 + 4.79 * np.random.randn(n, 1)
多项式回归背后的想法是扩大输入要素的数量。 我们通过采用现有的并相互相乘来做到这一点。 更正式地说,我们为给定的输入特征创建任意数量的多项式。
scikit包允许我们用以下几行代码来实现:
# fit a quadratic regressor
poly_features = PolynomialFeatures(degree=2, include_bias=False)
poly_train_data = poly_features.fit_transform(train_data)
lin_reg = LinearRegression()
lin_reg.fit(poly_train_data, train_target)
上面的代码创建二次特征,即二阶多项式。 如果需要更强大的模型,可以选择更高的学位。 当然,这将创建越来越多特征,可能使我们的模型过拟合。
最后,我们可以修改SVM代码以进行多项式回归。 注意,SVM将常规特征作为输入,并使用多项式内核对其进行操作:
svm_reg = SVR(kernel="poly", degree=2, C=100, epsilon=0.1)
svm_reg.fit(train_data, np.ravel(train_target))
提示:您可以修改下面的代码并打印四个单独的图。
plt.figure()
plt.plot(train_data, train_target, "*", train_data, lin_train_predict, ".", test_data, test_target, "*", test_data, lin_test_predict, ".")
基于sklearn框架实现线性回归,多项式回归和支持向量机的项目实战相关推荐
- 订单支付和评论——基于Django框架的天天生鲜电商网站项目系列博客(十五)
系列文章目录 需求分析--基于Django框架的天天生鲜电商网站项目系列博客(一) 网站框架搭建--基于Django框架的天天生鲜电商网站项目系列博客(二) 用户注册模块--基于Django框架的天天 ...
- 网站框架搭建——基于Django框架的天天生鲜电商网站项目系列博客(二)
系列文章目录 需求分析--基于Django框架的天天生鲜电商网站项目系列博客(一) 网站框架搭建--基于Django框架的天天生鲜电商网站项目系列博客(二) 用户注册模块--基于Django框架的天天 ...
- 全力升级篇-基于Mongodb与Nginx负载均衡打造共享单车项目实战 最新完整项目升级版
全力升级篇-基于Mongodb与Nginx负载均衡打造共享单车项目实战 最新完整项目升级版 课程作为全新的升级项目课程,基于Nginx负载均衡,Flume与Kafka,Mongodb和Redis等技术 ...
- 基于ssm框架实现网上购物管理系统【附项目源码+论文说明】
基于ssm框架实现网上购物管理系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个网上购物系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发.在 ...
- javaWeb基于SSM框架开发的社区医疗数据管理系统【项目源码+数据库脚本+报告】
一.项目简介 本项目是一套基于SSM框架开发的社区医疗数据管理系统,主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者. 包含:项目源码.数据库脚本等,该项目可以直接作为 ...
- 【项目实战】Python基于孤立森林算法(IsolationForest)实现数据异常值检测项目实战
说明:这是一个机器学习实战项目(附带数据+代码+文档+代码讲解),如需数据+代码+文档+代码讲解可以直接到文章最后获取. 1.项目背景 孤立森林是基于Ensemble的快速异常检测方法,具有线性时间复 ...
- 【项目实战】Python实现多元线性回归模型(statsmodels OLS算法)项目实战
说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 回归问题是一类预测连续值的问题,而能满足这样要求的数学模型称作回 ...
- tcc分布式事务框架源码解析系列(四)之项目实战
通过之前的几篇文章我相信您已经搭建好了运行环境,本次的项目实战是依照happylifeplat-tcc-demo项目来演练,也是非常经典的分布式事务场景:支付成功,进行订单状态的更新,扣除用户账户,库 ...
- Python实现直方图梯度提升分类模型(HistGradientBoostingClassifier算法)并基于网格搜索进行优化同时绘制PDP依赖图项目实战
说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 基于直方图的梯度提升分类树.此估算器对缺失值 (NaN) 具有原 ...
- 基于springBoot框架开发短视频去水印源码项目+IntelliJ IDEA运行测试+本地实现功能
一:创建一个springboot的maven项目包 新建:File–new–project 下载1.8jdk 以及 Maven 我这里下载的是 Maven 3.6.1 GroupID是项目组织唯一的标 ...
最新文章
- Docker 容器技术 — 容器存储
- 语音特征提取: MFCC的理解
- 聊一聊ABP vNext的模块化系统
- 西建大历年电子与通信工程复试真题_学姐分享2020年西安电子科技大学电子与通信工程考研初复试经验指导...
- zookeeper一键启动关闭JAVA_HOME在PATH中找不到报错踩坑记
- 解决IDEA GIT密码输入错误后,报Authentication failed ... 不再弹出输入框,提交更新失败
- VS2010连接MySql数据库时无法选择mysql database数据源
- python opencv3 特征提取与描述 DoG SIFT hessian surf
- jQuery的实现,去掉传入html代码两端的空格:
- java反编译能拿到源码吗_大牛带你解读Spring源码,编写自定义标签,您能学会吗?
- 资源管理器计算机目录,资源管理器可以以什么方式显示计算机内所有文件的详细图表...
- 四面阿里失败,因得到P8指点痛心修炼3个月,收到字节35*14offer(Java岗)
- NBUT - 1077 骨牌铺方格 【递推】
- 关于云开发数据库的使用经验和建议
- invalid type code: AC异常
- 网络训练时出现loss为nan的情况(已解决)
- 解决Intellij IDEA Debug 多模块下断点目标源问题
- 分析电路中三极管的作用 (入门)
- 【实验四 循环结构】7-4 sdut-C语言实验-求阶乘(循环结构)
- (一一二)图文混排中特殊文字的点击与事件处理
热门文章
- 让kbmmw 4.8 支持ios 64
- salt 安装MySQL-python和过程
- Node.js与Golang使用感受与小结【二】
- /etc/init.crs enable\disable 状态
- 用vmware workstation做双机集群的详细过程(三)
- 第2章 理解memcached的内存存储
- 关于“多目的地址的pix防火墙nat”的总结
- widnows监控linux 内存,在windows下监控linux的cpu和内存
- python xpath 中文乱码_Python爬虫实战 批量下载高清美女图片!让你们开开眼!
- rgb矩阵Android程序,Android ColorMatrixColorFilter