机器学习_线性回归

使用Sklearn实现Ridge,LASSO和ElasticNet

导入模块

import numpy as np
import matplotlib.pyplot as plt
from sklearn import linear_model

加载数据的函数

def loaddata(txt_path):
	data = np.loadtxt(txt_path,delimiter=',')
	n = data.shape[1]-1  # 特征数
	X = data[:, 0:n]
	y = data[:, -1].reshape(-1,1)
	return X,y

X,y = loaddata('data/data1.txt')

1.线性回归(最小二乘实现)

# linear_model中的LinearRegression()方法可以实现线性回归
model1 = linear_model.LinearRegresstion()
# fit()方法可以加载训练数据并进行训练
model1.fit(X,y)

intercept_属性可以输出 θ 0 \theta_0 θ0 的值,coef_属性可以输出 θ 1 ~ θ n \theta_1 ~ \theta_n θ1θn 的值

# 输出系数
print(model1.coef_)
# 输出截距
print(model1.intercept_)

画图

plt.scatter(X,y)
y_hat = model1.predict(X)
plt.plot(X,y_hat)

2.Ridge

linear_model中的Ridge方法可以实现Ridge回归
注:这里的 α \alpha α表示正则化强度 相当于 λ \lambda λ
normalize设置为True表示对训练数据进行标准化

model2 = linear_model.Ridge(alpha=0.01,normalize=True)
model2.fit(X,y)

print(model2.coef_)
print(model2.intercept_)

plt.scatter(X,y)
y_hat = model2.predict(X)
plt.plot(X,y_hat)

3.LASSO

linear_model中的Lasso()方法可以实现Lasso回归
注:这里的 α \alpha α表示正则化强度 相当于 λ \lambda λ
normalize设置为True表示对训练数据进行标准化

model3 = linear_model.Lasso(alpha=0.01,normalize=True)
model3.fit(X,y)

print(model3.coef_)
print(model3.intercept_)

plt.scatter(X,y)
y_hat = model3.predict(X)
plt.plot(X,y_hat)

4.ElasticNet

linear_model中的ElasticNet()方法可以实现弹性网回归
注:这里的 α \alpha α表示正则化强度 相当于 λ \lambda λ
normalize设置为True表示对训练数据进行标准化

model4 = linear_model.ElasticNet(alpha=0.01,normalize=True)
model4.fit(X,y)

print(model4.coef_)
print(model4.intercept_)

plt.scatter(X,y)
y_hat = model4.predict(X)
plt.plot(X,y_hat)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值