回归与梯度下降

本文介绍了如何使用Python的sklearn库实现线性回归,包括手动计算斜率、通过两个点拟合直线以及利用sklearn进行回归分析。还展示了岭回归和LASSO回归的实现,并涉及了数据集的创建和模型参数的调整。
摘要由CSDN通过智能技术生成

1.线性回归sklearn实现

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
#生成位于区间(-6,6)的等间距的100个点
x = np.linspace(-6,6,100)
#生成对应的函数值
y = 0.5 * x + 2
#绘制直线图形
plt.plot(x,y)

#绘制过(2,3)和(6,5)的图形
x1 = np.array([2,6])
y1 = np.array([3,5])
#绘制直线图形
plt.plot(x1,y1)

#已知两点求斜率
x = np.array([2,6])
y = np.array([3,5])
k = (y[1] - y[0])/(x[1] - x[0])
print(k)

利用sklearn线性回归求直线斜率

#导入sklearn中的线性回归模块
from sklearn.linear_model import LinearRegression
#线性回归模型实例化
lr = LinearRegression()
x = np.array([2,6])
y = np.array([3,5])
x = x.reshape(-1,1)#或者:x = np.array([2],[6])
#模型训练
lr.fit(x,y)
print("过两点(2,3)与(6,5)的直线的斜率为:{},截距项为{:.2f}".format(lr.coef_,lr.intercept_))
#模型预测
x_test = np.array([3,4,5]).reshape(-1,1)
y_predict = lr.predict(x_test)
#模型评估--计算R方值
lr.score(x,y)
#计算模型lr的均方差
from sklearn.metrics import mean_squared_error
y = 0.5 * x_test + 2
mean_squared_error(y,y_predict)
#假设有第3个点,坐标为(3,6)
x2 = np.array([[2],[3],[6]])
y2 = np.array([3,6,5])
#绘制三个点的散点图
plt.scatter(x2,y2,s=180,c='r')
#利用线性回归模型拟合一条均方误差最小的直线
lr_2 = LinearRegression()
lr_2.fit(x2,y2)
y2_predict = lr_2.predict(x_test)
#绘制拟合出的直线
z = np.linspace(0,6,100)
z_predict = lr_2.predict(z.reshape(-1,1))
plt.plot(z,z_predict,lw=5,c='g')
plt.scatter(x2,y2,s=180,c='r')
#利用sklearn生成100条具有1个特征的回归分析数据集
from sklearn.datasets import make_regression
x_3,y_3 = make_regression(n_samples=100, n_features=1)
plt.scatter(x_3,y_3)
x_3,y_3 = make_regression(n_samples=100, n_features=1,noise=50,random_state=8)
plt.scatter(x_3,y_3)
from sklearn.datasets import make_regression
#利用sklearn生成100条具有1个特征的回归分析数据集
x_3,y_3 = make_regression(n_samples=100,n_features=1)
plt.scatter(x_3,y_3)
x_3,y_3 = make_regression(n_samples=100,n_features=1,noise=50,bias=100,random_state=8)
plt.scatter(x_3,y_3)
#利用线性回归模型对数据x_3,y_3进行拟合
#模型实例化
reg = LinearRegression()
#模型训练
reg.fit(x_3,y_3)
#绘制回归直线
z = np.linspace(-3,3,200).reshape(-1,1)
plt.scatter(x_3,y_3,c='orange',s=30)
plt.plot(z, reg.predict(z),c='g')
plt.title('Linear Regression')
print('回归直线的斜率是:{:.2f}'.format(reg.coef_[0]))
print('回归直线的截距是:{:.2f}'.format(reg.intercept_))

岭回归的sklearn实现

LASSO回归的sklearn实现

调参

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值