线性回归csv数据集_【Python数据科学手册】专题:线性回归

线性回归模型是解决回归任务的好起点。

你可能对线性回归模型最简单的形式(即对数据拟合一条直线)已经很熟悉了,不过经过扩展,这些模型可以对更复杂的数据行为进行建模。

首先导入常用的程序库:

%matplotlib inlineimport matplotlib.pyplot as pltimport seaborn as sns; sns.set()import numpy as np
01

 简单线性回归

首先来介绍最广为人知的线性回归模型——将数据拟合成一条直线。直线拟合的模型方程为y=ax+by=ax+b,其中aa是直线斜率,bb是直线截距。

下面的数据,它们是从斜率为2、截距为-5 的直线中抽取的散点

rng = np.random.RandomState(1)x = 10 * rng.rand(50)y = 2 * x - 5 + rng.randn(50)plt.scatter(x, y);
c3238aff8e0e553a2d480e2ba5edd0ad.png

用Scikit-Learn 的LinearRegression 评估器来拟合数据,并获得最佳拟合直线

from sklearn.linear_model import LinearRegressionmodel = LinearRegression(fit_intercept=True)model.fit(x[:, np.newaxis], y)xfit = np.linspace(0, 10, 1000)yfit = model.predict(xfit[:, np.newaxis])plt.scatter(x, y)plt.plot(xfit, yfit);
c8c59461785d7a86f0f585ab9e5c240d.png

数据的斜率和截距都在模型的拟合参数中,Scikit-Learn 通常会在参数后面加一条下划线,即coef_ 和intercept_:

print("Model slope:    ", model.coef_[0])print("Model intercept:", model.intercept_)
b2a10df6c27de3be99f06ddce7de99a4.png

可以看到,拟合结果与真实值非常接近。

LinearRegression 评估器能做的可远不止这些——除了简单的直线拟合,它还可以处理多维度的线性回归模型:

y=a0+a1x1+a2x2+

里面有多个x 变量。从几何学的角度看,这个模型是拟合三维空间中的一个平面,或者是为更高维度的数据点拟合一个超平面。

rng = np.random.RandomState(1)X = 10 * rng.rand(100, 3)y = 0.5 + np.dot(X, [1.5, -2., 1.])model.fit(X, y)print(model.intercept_)print(model.coef_)

0.5
[ 1.5 -2.   1. ]

其中y 变量是由3个随机的x变量线性组合而成,线性回归模型还原了方程的系数。

通过这种方式,就可以用一个LinearRegression 评估器拟合数据的回归直线、平面和超平面了。

局限性: 变量限制在线性关系上

02

基函数回归

可以通过基函数对原始数据进行变换,从而将变量间的线性回归模型转换为非线性回归模型。

这个方法的多维模型是:y=a0+a1x1+a2x2+a3x3+

其中一维的输入变量xx转换成了三维变量x₁,x₂,x₃。让xn=fn(x),这里的fn(x)是转换数据的函数。

假如fn(x)=xn,那么模型就会变成多项式回归:y=a0+a1x+a2x2+a3x3+

需要注意的是,这个模型仍然是一个线性模型,也就是说系数

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值