# 机器学习-sklearn实现线性回归模型对波士顿房价进行预测
#### 介绍
机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能。基于sklearn和numpy分别实现线性回归模型、逻辑回归模型、支持向量机、决策树、随机森林、集成学习、神经网络等在具体数据集上的代码实现。
机器学习算法编写流程:
![机器学习算法编写流程](image0.png)
#### 配置软件环境
1. 安装 Python 及开发环境。
2. 安装 NumPy、Pandas、Matplotlib 库
3. 安装 Scikit-Learn、pytorch 库。
#### Scikit-Learn 库介绍与内容查询
Scikit 又称 Scikit-learn 库(简称 sklearn)是一个通用型开源机器学习库,它几乎涵盖了所有机器学习算法,并且搭建了高效的数据挖掘框架。
1. sklearn.datasets:加载获取流行数据集。
(1)datasets.load_*():获取小规模数据集,数据包含在 datasets 里。
sklearn.datasets.load_boston():加载并返回波士顿房价数据集,样本数量 506,特征 13。
(2)datasets.fetch_*(data_home=None):获取大规模数据集,需要从网络上下载,函数的第一个参数是 data_home,表示数据集下载的目录,默认是~/scikit_learn_data/。
(3)数据集返回值介绍
load 和 fetch 返回的数据类型是 datasets.base.Bunch(字典格式)
●data:特征数据数组,是[n_samples*n_features]的二维 numpy.ndarray 数组。
●target:标签数组,是[n_samples,]的一维 numpy.ndarray 数组。
●DESCR:数据描述。
●feature_names:特征名。
●target_names:标签名。
2. 数据集划分机器学习一般的数据集会划分为两个部分:
●训练数据:用干训练,构建模型。
●测试数据:在模型检验时使用,用于评估模型的泛化能力。
(1)划分比例:
训练集:70%、80%、75%。
测试集:30% 、20%、25%
(2)数据集划分 API 介绍
数据集划分方法有很多,如留出法、交叉法、自助法等。这里我们先介绍 sklearn 提供的留出法 ,
在 model_selection 模块中提供了 train_test_split 方法,可以设定数据划分数据集比例,并且保持类别标签比例不变,进行数据集划分。
sklearn.model_selection.train_test_split(*arrays,*options)
*arrays:
●X:数据集的特征值。
●y:数据集的标签值。
注意:若输入多个数组,数组的 shape[0]要相同,否则报错。
*options:
●test size:测试集的大小,一般为 float。默认为 0.25。
●random state:随机数种子,不同的种子会造成不同的随机采样结果。相同的种子采样结果相同。
●shuffle:是否打乱顺序。在进行数据集划分之前是否打乱数据顺序。默认为 True。
●stratify:分层采样。划分数据集时,是否与整个数据集中的标签比例一致。默认为 None。
*Returns(函数返回值):
训练集特征值 X_train,测试集特征值 X_test,训练标签 y_train,测试标签 y_test。
#### 代码内容说明
1. 采用 scikit-learn 中的 LinearRegression(最小二乘)线性回归模型对波士顿房价进行预测,分别使用正则方程和随机梯度下降方法建模。
(1)导入数据
a)查看数据集的描述、特征名、标签名、数据样本量等信息。
b)获取样本的特征数据和标签数据。
(2)划分数据(分成训练集和测试集)
(3)数据归一化
(4)训练模型
a)使用 sklearn 中线性回归的正规方程(LinearRegression)优化方法建模。
b)使用 sklearn 中线性回归的随机梯度下降(SGDRegressor)优化方法建模。
(5)模型评估(2 个模型)
评价指标:MSE 和 $R^2$值
2. 将得到的模型用于加利福尼亚房价数据集进行预测。数据集:sklearn.datasets.fetch_california_housing
只需要修改参数 data_name 为 california 即可~
#### 使用说明
需要在参数空间def get_arguments()中更改参数,选择不同的数据集、、训练集测试集划分比例、随机数种子、正则化方式、线性回归模型、损失函数等。
![参数空间](image1.png)
1. '--data_name',选择不同的数据集,可选择'boston', 'california',赋给default(即 default='boston' 选择波士顿房价数据集,default= 'california' 选择加利福尼亚房价数据集)
2. '--test_size', 训练集测试集划分比例,设置default=0.33, 即训练集的比例为33%,可根据需求修改
3. '--random_state', 随机数种子,default=42, 划分数据集的随机种子数为42,可根据需求修改
4. '--normalization',正则化方式,可选择 '0: no normalization,'
'1: rescale the data to [0, 1],'
'2: rescale the data to [-1, 1],'
'3: z-score normalization',即不需要正则化、最大最小标准化(将数值放缩到[0, 1]、数值放缩到[-1, 1])、z-score 标准化,可根据需求修改
5. '--Regression',线性回归模型,可选择''1: normal equation of LinearRegression,'
'2: SGD LinearRegression,'
'3: Ridge Regression,'
'4: Lasso Regression,'
'5: Polynomial Regression',即LinearRegression,还有 随机梯度下降SGD、Ridge(岭回归)、
Lasso、Polynomial regression(多项式回归)等模型,可根据需求选择赋给default
6. '--loss',损失类型,评价指标:MSE 和 $R^2$值,可根据需求修改
7. '--max_iteration',int,最大迭代次数,默认 200,本代码用设置1000,可根据需求修改
8. '--eta0',随机梯度下降算法(SGDRegressor)的学习率,本代码用设置0.01,可根据需求修改
6. '--alpha',float,L2 正则化项的强度(L2 正则化项在添加到损失时除以样本大小),本代码用设置0.5,可根据需求修改
7. '--degree',Polynomial regression(多项式回归)的阶数,只本代码用设置2,可根据需求修改
#### sklearn实现线性回归模型对波士顿房价进行预测-实现结果
1. 设置参数 test_size=0.33、random_state=42、normalization=3(数据归一化方式为 z-score标准化)、采用梯度下降算法拟合数据、损失函数使用 R2计算,多项式特征 degree=2、alpha=0.5。代码运行展示得到的数据集的描述、特征名、标签名、数据样本量等信息、线性模型的参数、模型 train loss 和 test loss 如下。
![输入图片说明](image2.png)
![输入图片说明](image3.png)
2. 可通过修改参数空间中的参数,选择不同的方法进行对比:
对比使用数据归一化和不使用数据归一化,正规方程和梯度下降算法性能是否有差异
修改随机梯度下降算法(SGDRegressor)的学习率(eta0),观察参数对模型性能的影响
计算模型在训练样本上性能和在测试样本上的性能,判断模型是过拟合还是欠拟合
数据集划分不同对模型性能是否有影响
使用其他线性回归模型,线性回归模型中除了 LinearRegression,还有 Ridge(岭回归)、Lasso、Polynomial regression(多项式回归)等模型,观察不同模型训练后的模型权重差异
![输入图片说明](image4.png)
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于sklearn实现线性回归模型对波士顿房价进行预测源码.zip基于sklearn实现线性回归模型对波士顿房价进行预测源码.zip基于sklearn实现线性回归模型对波士顿房价进行预测源码.zip基于sklearn实现线性回归模型对波士顿房价进行预测源码.zip基于sklearn实现线性回归模型对波士顿房价进行预测源码.zip基于sklearn实现线性回归模型对波士顿房价进行预测源码.zip基于sklearn实现线性回归模型对波士顿房价进行预测源码.zip基于sklearn实现线性回归模型对波士顿房价进行预测源码.zip
资源推荐
资源详情
资源评论
收起资源包目录
基于sklearn实现线性回归模型对波士顿房价进行预测源码.zip (12个子文件)
code
image2.png 217KB
image.png 13KB
LinearRegression_2.py 10KB
image1.png 133KB
image3.png 253KB
image0.png 44KB
image4.png 72KB
README.md 8KB
1-线性回归LinearRegression
【sklearn实现】线性回归模型对波士顿房价进行预测
1.py 91B
LinearRegression_2.py 10KB
LinearRegression.joblib 768B
.keep 0B
共 12 条
- 1
资源评论
FL1768317420
- 粉丝: 4312
- 资源: 4730
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- c51_2_2.c
- ASCII American Standard Code for Information Interchange
- 一个chm格式的 SQL 函数手册-SQL语言手册文档
- 计算当前月份的天数和剩余天数
- 基于ARM的指令调度和延迟分支
- 基于Vue和TypeScript的极简聊天应用设计源码 - HasChat
- 基于Vue2全家桶和Zcool数据的图片收集网站设计源码 - cool-picture
- 基于C和C++的二维绘制工具设计源码 - DrawPro
- Object.defineProperty 的 IE 补丁object-defineproperty-ie-master.zip
- 整卷预览.mhtml
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功