回归算法:线性回归
线性回归通过一个或者多个自变量与因变量之间之间进行建模的回归分析。其中特点为一个或多个称为回归系数的模型参数的线性组合
由于在预测过程中,并非是完全线性的函数,对于部分测试点存在偏差,我们只是找到一个比较好的函数能够保证基本上所有的点都在这个线性函数的上下浮动,因此存在一定的误差--------称为损失函数(用于描述误差大小)
![](https://i-blog.csdnimg.cn/blog_migrate/0badd8dbbb70eec54c3a46ae6141d073.png)
为解决这个问题我们可以用两种方法去处理:
①正规方程
②梯度下降
接下来,我们讲解一下这两个方法:
API:
•
sklearn.linear_model.
LinearRegression
•
正规方程
•
sklearn.linear_model.
SGDRegressor
•
梯度下降
解释:
coef_:就是就是W值,即权重
•
sklearn.linear_model.LinearRegression
()
•
普通最小二乘线性回归
•
•
coef
_
:回归系数
•
•
sklearn.linear_model.SGDRegressor
(
)
•
通过使用
SGD
最小化线性模型
•
•
coef
_
:回归系数
代码:
from sklearn.datasets import load_boston
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression, SGDRegressor
from sklearn.metrics import mean_squared_error
def mylinear():
"""
线性回归进行房价预测
"""
# 获取数据
lb = load_boston()
# 数据处理
x_train, x_test, y_train, y_test = train_test_split(lb.data, lb.target, test_size=0.25)
# 特征工程 两组数据进行标准化处理(因为两组数据维度不同,分开处理)
sd = StandardScaler()
# 特征值得处理
x_train = sd.fit_transform(x_train)
x_test = sd.transform(x_test)
# 目标值的处理 : 需要建立新的处理对象
sd_y = StandardScaler()
y_train = sd_y.fit_transform(y_train.reshape(-1, 1))
y_test = sd_y.transform(y_test.reshape(-1, 1))
# estimator测试
# ①正规方程求解
lr = LinearRegression()
lr.fit(x_train, y_train)
print(lr.coef_)
# 房价预测
y_lr_predict = sd_y.inverse_transform(lr.predict(x_test))
print("真实价格:", sd_y.inverse_transform(y_test))
print("11111111111111111111")
print("正规方程测试集预测结果:", y_lr_predict)
# 回归评估
result1 = mean_squared_error(sd_y.inverse_transform(y_test), y_lr_predict)
print("正规方程的评估:", result1)
# ①梯度下降求解
sgd = SGDRegressor()
sgd.fit(x_train, y_train)
print(sgd.coef_)
# 房价预测
y_sdg_predict = sd_y.inverse_transform(sgd.predict(x_test))
print("真实价格:", sd_y.inverse_transform(y_test))
print("11111111111111111111")
print("梯度下降测试集预测结果:", y_sdg_predict)
# 回归评估
result2 = mean_squared_error(sd_y.inverse_transform(y_test), y_sdg_predict)
print("梯度下降的评估:", result2)
def main():
mylinear()
if __name__ == '__main__':
main()
关于性能评估:
利用的是均方误差评价机制
API :
•
sklearn.metrics.
mean_squared_error
解释:
•
mean_squared_error
(
y_true
,
y_pred
)
•
均方误差回归损失
•
y_true
:
真实值
•
y_pred
:
预测值
•
return:
浮点数结果