文章目录

  • 前言
  • 一、 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框架实现线性回归,多项式回归和支持向量机的项目实战相关推荐

  1. 订单支付和评论——基于Django框架的天天生鲜电商网站项目系列博客(十五)

    系列文章目录 需求分析--基于Django框架的天天生鲜电商网站项目系列博客(一) 网站框架搭建--基于Django框架的天天生鲜电商网站项目系列博客(二) 用户注册模块--基于Django框架的天天 ...

  2. 网站框架搭建——基于Django框架的天天生鲜电商网站项目系列博客(二)

    系列文章目录 需求分析--基于Django框架的天天生鲜电商网站项目系列博客(一) 网站框架搭建--基于Django框架的天天生鲜电商网站项目系列博客(二) 用户注册模块--基于Django框架的天天 ...

  3. 全力升级篇-基于Mongodb与Nginx负载均衡打造共享单车项目实战 最新完整项目升级版

    全力升级篇-基于Mongodb与Nginx负载均衡打造共享单车项目实战 最新完整项目升级版 课程作为全新的升级项目课程,基于Nginx负载均衡,Flume与Kafka,Mongodb和Redis等技术 ...

  4. 基于ssm框架实现网上购物管理系统【附项目源码+论文说明】

    基于ssm框架实现网上购物管理系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个网上购物系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发.在 ...

  5. javaWeb基于SSM框架开发的社区医疗数据管理系统【项目源码+数据库脚本+报告】

    一.项目简介 本项目是一套基于SSM框架开发的社区医疗数据管理系统,主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者. 包含:项目源码.数据库脚本等,该项目可以直接作为 ...

  6. 【项目实战】Python基于孤立森林算法(IsolationForest)实现数据异常值检测项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+代码讲解),如需数据+代码+文档+代码讲解可以直接到文章最后获取. 1.项目背景 孤立森林是基于Ensemble的快速异常检测方法,具有线性时间复 ...

  7. 【项目实战】Python实现多元线性回归模型(statsmodels OLS算法)项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 回归问题是一类预测连续值的问题,而能满足这样要求的数学模型称作回 ...

  8. tcc分布式事务框架源码解析系列(四)之项目实战

    通过之前的几篇文章我相信您已经搭建好了运行环境,本次的项目实战是依照happylifeplat-tcc-demo项目来演练,也是非常经典的分布式事务场景:支付成功,进行订单状态的更新,扣除用户账户,库 ...

  9. Python实现直方图梯度提升分类模型(HistGradientBoostingClassifier算法)并基于网格搜索进行优化同时绘制PDP依赖图项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 基于直方图的梯度提升分类树.此估算器对缺失值 (NaN) 具有原 ...

  10. 基于springBoot框架开发短视频去水印源码项目+IntelliJ IDEA运行测试+本地实现功能

    一:创建一个springboot的maven项目包 新建:File–new–project 下载1.8jdk 以及 Maven 我这里下载的是 Maven 3.6.1 GroupID是项目组织唯一的标 ...

最新文章

  1. Docker 容器技术 — 容器存储
  2. 语音特征提取: MFCC的理解
  3. 聊一聊ABP vNext的模块化系统
  4. 西建大历年电子与通信工程复试真题_学姐分享2020年西安电子科技大学电子与通信工程考研初复试经验指导...
  5. zookeeper一键启动关闭JAVA_HOME在PATH中找不到报错踩坑记
  6. 解决IDEA GIT密码输入错误后,报Authentication failed ... 不再弹出输入框,提交更新失败
  7. VS2010连接MySql数据库时无法选择mysql database数据源
  8. python opencv3 特征提取与描述 DoG SIFT hessian surf
  9. jQuery的实现,去掉传入html代码两端的空格:
  10. java反编译能拿到源码吗_大牛带你解读Spring源码,编写自定义标签,您能学会吗?
  11. 资源管理器计算机目录,资源管理器可以以什么方式显示计算机内所有文件的详细图表...
  12. 四面阿里失败,因得到P8指点痛心修炼3个月,收到字节35*14offer(Java岗)
  13. NBUT - 1077 骨牌铺方格 【递推】
  14. 关于云开发数据库的使用经验和建议
  15. invalid type code: AC异常
  16. 网络训练时出现loss为nan的情况(已解决)
  17. 解决Intellij IDEA Debug 多模块下断点目标源问题
  18. 分析电路中三极管的作用 (入门)
  19. 【实验四 循环结构】7-4 sdut-C语言实验-求阶乘(循环结构)
  20. (一一二)图文混排中特殊文字的点击与事件处理

热门文章

  1. 让kbmmw 4.8 支持ios 64
  2. salt 安装MySQL-python和过程
  3. Node.js与Golang使用感受与小结【二】
  4. /etc/init.crs enable\disable 状态
  5. 用vmware workstation做双机集群的详细过程(三)
  6. 第2章 理解memcached的内存存储
  7. 关于“多目的地址的pix防火墙nat”的总结
  8. widnows监控linux 内存,在windows下监控linux的cpu和内存
  9. python xpath 中文乱码_Python爬虫实战 批量下载高清美女图片!让你们开开眼!
  10. rgb矩阵Android程序,Android ColorMatrixColorFilter