案例之 波士顿房价预测(线性回归之正规方程/ 梯度下降!!)
1. 案例说明一、案例演示 正规方程法 线性回归对象 完成 波士顿房价预测二、回顾1. 线性回归算法 属于 有监督学习之 有特征有标签且标签是连续的2. 线性回归分类:一元线性回归1个特征列1个标签列.多元线性回归多个特征列1个标签列.3. 线性回归解释:它是用线性公式来描述 特征 和 标签之问关系的方便做预测公式如下:一元线性回归ywxb多元线性回归yw1x1 w2x2 w3x3 …wnxn b w的转置x b4. 如何衡量线性回归模型的好坏思路预测值和真实值之问的误差误差越小模型越好. 》损失函数具体方案1.最小二乘每个样本误差平方和2.均方误差MSE每个样本误差平方和/ 样本总数3.均方根误差(RMSE)每个(样本)误差平方和/样本总数 的 平方根4.平均绝对误差(MAE)每个(样本)误差绝对值和/样本总数5. 如何让损失函数最小思路1梯度下降法全梯度下降(FGD)、随机梯度下降(SGD)、小批量梯度下降(推荐)(Min-Batch)、随机平均梯度下降(SAG)思路2正规方程法6. 机器学习开发流程1.加载数据2.数据的预处理3.特征工程特征提取、特征与处理、特征降维、特征选择、特征组合4.模型训练5.模型预测6.模型评估2. 代码示例 案例演示 正规方程法 线性回归对象 完成 波士顿房价预测 回顾 线性回归算法 属于 有监督学习之 有特征有标签且标签是连续的 线性回归分类: 一元线性回归1个特征列1个标签列. 多元线性回归多个特征列1个标签列. 线性回归大白话解释: 它是用线性公式来描述 特征 和 标签之问关系的方便做预测公式如下: 一元线性回归yw*xb 多元线性回归yw1*x1 w2*x2 w3*x3 ...wn*xn b w的转置*x b 如何衡量线性回归模型的好坏 思路预测值和真实值之问的误差误差越小模型越好. 》损失函数 具体方案 1.最小二乘每个样本误差平方和 2.均方误差MSE每个样本误差平方和/ 样本总数 3.均方根误差(RMSE)每个(样本)误差平方和/样本总数 的 平方根 4.平均绝对误差(MAE)每个(样本)误差绝对值和/样本总数 如何让损失函数最小 思路1梯度下降法全梯度下降(FGD)、随机梯度下降(SGD)、小批量梯度下降(推荐)(Min-Batch)、随机平均梯度下降(SAG) 思路2正规方程法 机器学习开发流程 1.加载数据 2.数据的预处理 3.特征工程特征提取、特征与处理、特征降维、特征选择、特征组合 4.模型训练 5.模型预测 6.模型评估 # 导包# from sklearn.datasets import load_boston # 数据fromsklearn.preprocessingimportStandardScaler# 特征标准化fromsklearn.model_selectionimporttrain_test_split# 数据集划分fromsklearn.linear_modelimportLinearRegression# 正规方程的回归模型fromsklearn.linear_modelimportSGDRegressor# 梯度下降的回归模型fromsklearn.metricsimportmean_squared_error,root_mean_squared_error,mean_absolute_error# 均方误差评估importpandasaspdimportnumpyasnp# 1.加载波士顿房价数据data_urlhttp://lib.stat.cmu.edu/datasets/bostonraw_dfpd.read_csv(data_url,sep\s,skiprows22,headerNone)datanp.hstack([raw_df.values[::2,:],raw_df.values[1::2,:2]])#hstack()水平拼接数组targetraw_df.values[1::2,2]# print(f特征{data.shape}) # 特征(506, 13)# print(f标签{target.shape})# 标签(506,)# print(f特征数据{data[:5]})# 特征数据[[0.00632 18.0 2.31 0.538 6.575 1.0 0.0 0.0 0.4608 1.0 0.0 0.0 0.0 ]]# print(f标签数据{target[:5]})# 标签数据[11.93 21.6 17.8 18.9 18.7]# 2.数据的预处理切分训练集和测试集# 参1:特征数据参2:标签数据参3:测试集占训练集的比例参4:随机种子x_train,x_test,y_train,y_testtrain_test_split(data,target,test_size0.2,random_state23)# 3.特征工程特征提取、特征与处理、特征降维、特征选择、特征组合# 3.1 创建标准化对象transferStandardScaler()# 3.2 对训练集和测试集进行标准化处理x_traintransfer.fit_transform(x_train)x_testtransfer.transform(x_test)# 4.模型训练# 4.1 创建模型对象# 方式一创建线性回归 正规方程 模型对象!!!# estimator LinearRegression(fit_intercept True)#fit_intercept是否需要截距(Bais偏置)默认是True# 方式二创建线性回归 梯度下降 模型对象!!!# 参1fit_intercept是否计算截距# 参2learning_rate学习率模式constant常量模式 即不会发生改变# 参3eta0学习率的值estimatorSGDRegressor(fit_interceptTrue,learning_rateconstant,eta00.01)# 4.2 模型训练estimator.fit(x_train,y_train)# 4.3 打印模型计算出的 w(权重weight) 和 b(截距bais)print(f权重 w:{estimator.coef_})print(f截距 b:{estimator.intercept_})# 5.模型预测y_predictestimator.predict(x_test)print(f预测结果{y_predict})# 6.模型评估# 参1测试集的标签数据参2预测结果# MSE均方误差MSE每个样本误差平方和/ 样本总数print(f均方误差{mean_squared_error(y_test,y_predict)})# RMSE均方根误差(RMSE)每个(样本)误差平方和/样本总数 的 平方根print(f均方根误差{root_mean_squared_error(y_test,y_predict)})# MAE平均绝对误差(MAE)每个(样本)误差绝对值和/样本总数print(f平均绝对误差{mean_absolute_error(y_test,y_predict)})