# 机器学习-sklearn实现线性回归模型对波士顿房价进行预测
#### 介绍
机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能。基于sklearn和numpy分别实现线性回归模型、逻辑回归模型、支持向量机、决策树、随机森林、集成学习、神经网络等在具体数据集上的代码实现。
机器学习算法编写流程:

#### 配置软件环境
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()中更改参数,选择不同的数据集、、训练集测试集划分比例、随机数种子、正则化方式、线性回归模型、损失函数等。

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 如下。


2. 可通过修改参数空间中的参数,选择不同的方法进行对比:
对比使用数据归一化和不使用数据归一化,正规方程和梯度下降算法性能是否有差异
修改随机梯度下降算法(SGDRegressor)的学习率(eta0),观察参数对模型性能的影响
计算模型在训练样本上性能和在测试样本上的性能,判断模型是过拟合还是欠拟合
数据集划分不同对模型性能是否有影响
使用其他线性回归模型,线性回归模型中除了 LinearRegression,还有 Ridge(岭回归)、Lasso、Polynomial regression(多项式回归)等模型,观察不同模型训练后的模型权重差异


海神之光.
- 粉丝: 6119
最新资源
- 国际AI治理的挑战与合作:多元视角的协同路径寻访.docx
- 互联网科研竞赛助力食品微生物学教学改革与实践探索.docx
- 霍尼韦尔Web解决方案方案解析与实践指南.docx
- 机器学习在材料科学中的应用研究.docx
- 基于大数据的能源智能调度系统架构设计与实现.docx
- 基于大数据的棋牌赛事运营模式研究.docx
- 基于改进灰狼优化算法的三维WSN覆盖优化探讨.docx
- 基于多模态感知的移动机器人动态路径规划算法研究.docx
- 基于精英保留的多目标灰狼算法改进策略研究.docx
- 基于轻量化技术的光伏电池表面缺陷检测算法研究.docx
- 基于工业互联网的设备智能运维与管理策略研究.docx
- 基于蚁群算法的深度Q网络在移动机器人路径规划中的应用研究.docx
- 计算机系统类课程教学改革研究.docx
- 路侧图像特征融合目标检测算法的研究.docx
- 可解释机器学习在岩溶介质渗透系数估算中的应用模型研究.docx
- 农业机械化进程中人工智能技术的融入与创新策略.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


