线性回归两种求解方式总结
使用梯度下降进行预测
from sklearn.datasets import load_boston # 波士顿房价数据集使用API
from sklearn.linear_model import LinearRegression,SGDRegressor ##回归预测时使用的API
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler ## 标准化API
def myLinear():
"""线性回归直接预测房子价格"""
# 获取数据
lb=load_boston()
# 分割数据集
x_train,x_text,y_train,y_text=train_test_split(lb.data,lb.target,test_size=0.25)
# 进行标准化处理
std_x=StandardScaler()
x_train=std_x.fit_transform(x_train)
x_text=std_x.transform((x_text))
#目标值
std_y=StandardScaler()
y_train=std_y.fit_transform(y_train)
y_text=std_y.transform(y_text)
#正规方程调用预测
lr=LinearRegression()
lr.fit(x_train,y_train)
print(lr.coef_)
# 预测测试集房子价格
y_predict=std_y.inverse_transform(lr.predict(x_text))
print("测试集每个房子的预测价格:",y_predict)
def tidu_boston():
"""线性回归直接预测房子价格"""
# 获取数据
lb=load_boston()
# 分割数据集
x_train,x_text,y_train,y_text=train_test_split(lb.data,lb.target,test_size=0.25)
# 进行标准化处理
std_x=StandardScaler()
x_train=std_x.fit_transform(x_train)
x_text=std_x.transform((x_text))
#目标值
std_y=StandardScaler()
y_train=std_y.fit_transform(y_train)
y_text=std_y.transform(y_text)
#梯度下降进行房价预测
sgd=SGDRegressor()
sgd.fit(x_train,y_train)
print(sgd.coef_)
# 预测测试集房子价格
y_predict=std_y.inverse_transform(sgd.predict(x_text))
print("测试集每个房子的预测价格:",y_predict)
if __name__ == '__main__':
# myLinear()
tidu_boston()
回归性能评估(均方误差)
api:sklearn.metrics.mean_squared_error
.mean_squared_error(y_true,y_pre)
- 均方误差回归损失
- y_true:真实值
- y_pre:预测值
- return:浮点数结果
注意:真实值,预测值为标准化之前的值
梯度下降代码:
from sklearn.datasets import load_boston # 波士顿房价数据集使用API
from sklearn.linear_model import LinearRegression,SGDRegressor ##回归预测时使用的API
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler ## 标准化API
from sklearn.metrics import mean_squared_error
def myLinear():
"""线性回归直接预测房子价格"""
# 获取数据
lb=load_boston()
# 分割数据集
x_train,x_text,y_train,y_text=train_test_split(lb.data,lb.target,test_size=0.25)
# 进行标准化处理
std_x=StandardScaler()
x_train=std_x.fit_transform(x_train)
x_text=std_x.transform((x_text))
#目标值
std_y=StandardScaler()
y_train=std_y.fit_transform(y_train)
y_text=std_y.transform(y_text)
#正规方程调用预测
lr=LinearRegression()
lr.fit(x_train,y_train)
print(lr.coef_)
# 预测测试集房子价格
y_predict=std_y.inverse_transform(lr.predict(x_text))
print("测试集每个房子的预测价格:",y_predict)
print("正规方程的均方差:",mean_squared_error(std_y.inverse_transform(y_text),y_predict))
def tidu_boston():
"""线性回归直接预测房子价格 """
# 获取数据
lb=load_boston()
# 分割数据集
x_train,x_text,y_train,y_text=train_test_split(lb.data,lb.target,test_size=0.25)
# 进行标准化处理
std_x=StandardScaler()
x_train=std_x.fit_transform(x_train)
x_text=std_x.transform((x_text))
#目标值
std_y=StandardScaler()
y_train=std_y.fit_transform(y_train)
y_text=std_y.transform(y_text)
#梯度下降进行房价预测
sgd=SGDRegressor()
sgd.fit(x_train,y_train)
print(sgd.coef_)
# 预测测试集房子价格
y_predict=std_y.inverse_transform(sgd.predict(x_text))
print("测试集每个房子的预测价格:",y_predict)
if __name__ == '__main__':
# myLinear()
tidu_boston()
梯度下降和正规方程对比
来源:CSDN
作者:Nothenhe
链接:https://blog.csdn.net/Nothenhe/article/details/104672605