python机器学习之(sklearn)岭回归
1.岭回归今天看了会L2正则化,大致的意思就是在惩戒函数中加入高次项的惩戒项,用来减小线性回归中高次项的系数,避免过拟合的状态。这样就产生了一种具有正则化的线性回归模型------岭回归。2.岭回归在sklearn中的apisklearn.linear_model.Ridge(alpha=1.0)#具有正则化的线性最小二乘法#alpha 表示正则化力度#coel_ 表示回归系数from sklea
·
1.岭回归
今天看了会L2正则化,大致的意思就是在惩戒函数中加入高次项的惩戒项,用来减小线性回归中高次项的系数,避免过拟合的状态。这样就产生了一种具有正则化的线性回归模型------岭回归。
2.岭回归在sklearn中的api
sklearn.linear_model.Ridge(alpha=1.0)
#具有正则化的线性最小二乘法
#alpha 表示正则化力度
#coel_ 表示回归系数
from sklearn.linear_model import Ridge
3.岭回归模型案例
# 岭回归降求解预测结果
ri = Ridge(alpha=1.0)#实例化岭回归对象
ri.fit(x_train, y_train)#输入训练数据
print("特征值", ri.coef_)
# 预测测试集的房子价格
ri_y_predict = std_y.inverse_transform(ri.predict(x_test))
print("梯度下降每个房子的预测价格:", ri_y_predict)
print("正规方程均方误差:", mean_squared_error(std_y.inverse_transform(y_test), y_predict))
print("梯度下降均方误差:", mean_squared_error(std_y.inverse_transform(y_test), SGD_y_predict))
print("岭回归误差:", mean_squared_error(std_y.inverse_transform(y_test), ri_y_predict))
结果如下:(看着结果确实是好一点)
最后附上全部代码:正规方程,梯度下降和岭回归模型
from sklearn.datasets import load_boston
from sklearn.linear_model import LinearRegression,SGDRegressor
from sklearn.linear_model import Ridge
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import mean_squared_error
def regress():
# 获取数据
lb = load_boston()
# 分割数据集为训练集和测试集
x_train, x_test, y_train, y_test = train_test_split(lb.data, lb.target, test_size=0.25)
# 进行标准化处理,特征值和目标值都需要分别进行特征化处理
# 特征值进行标准化
std_x = StandardScaler()
x_train = std_x.fit_transform(x_train)
x_test = std_x.transform(x_test)
# 目标值进行标准化
std_y = StandardScaler()
y_train = std_y.fit_transform(y_train.reshape(-1,1))
y_test = std_y.transform(y_test.reshape(-1,1))
# estimator预测
#正规方程求解方式预测结果
lr = LinearRegression()
lr.fit(x_train, y_train)
print("特征值:",lr.coef_)
# 预测测试集的房子价格
y_predict = std_y.inverse_transform(lr.predict(x_test))
print("正规方程求解每个房子的预测价格:",y_predict)
#梯度下降求解预测结果
SGD=SGDRegressor()
SGD.fit(x_train, y_train)
print("特征值",SGD.coef_)
# 预测测试集的房子价格
SGD_y_predict = std_y.inverse_transform(SGD.predict(x_test))
print("梯度下降每个房子的预测价格:", SGD_y_predict)
# 岭回归降求解预测结果
ri = Ridge(alpha=1.0)
ri.fit(x_train, y_train)
print("特征值", ri.coef_)
# 预测测试集的房子价格
ri_y_predict = std_y.inverse_transform(ri.predict(x_test))
print("梯度下降每个房子的预测价格:", ri_y_predict)
print("正规方程均方误差:", mean_squared_error(std_y.inverse_transform(y_test), y_predict))
print("梯度下降均方误差:", mean_squared_error(std_y.inverse_transform(y_test), SGD_y_predict))
print("岭回归误差:", mean_squared_error(std_y.inverse_transform(y_test), ri_y_predict))
return None
if __name__ == "__main__":
regress()
更多推荐
所有评论(0)