sklearn线性回归及原理介绍

1 一次线性回归

误差服从均值为0方差为θ2的高斯分布 

 损失函数,用于定义和衡量模型的误差,实际点到预测平面的垂直距离。

 如何评价模型? 

决定系数 R方 ,衡量数据和回归线的贴近程度。

r*2=LinearRegression().score(test_x,test_y) 

1.2代码实现方式

import  pandas as pd
import  numpy as np

x=np.linspace(1,16,16)
y=2*x+2*np.random.rand()
df1=pd.DataFrame({
    'x': x,
    'y': y
})

print(df1)
df2=df1[:-2]
print(df2)

#--------------最小二乘回归----------------
from sklearn.linear_model import  LinearRegression
model=LinearRegression()
x=np.array(df2['x']).reshape([-1,1])
y=np.array(df2['y']).reshape([-1,1])
model.fit(x,y)
predict1=model.predict(np.array([16]).reshape([-1,1]))
print('最小二乘',predict1)
#---------岭回归----------
from sklearn.linear_model import  Ridge
model2=Ridge(alpha=.5)
model2.fit(x,y)
predict2=model2.predict(np.array([16]).reshape([-1,1]))
print('岭回归的结果是',predict2)
#-------Lasso回归------------
from sklearn.linear_model import  Lasso
model3=Lasso(alpha=.5)
model3.fit(x,y)
predict3=model3.predict(np.array([16]).reshape([-1,1]))
print('Lasso回归的结果',predict3)

 

2 复杂线性回归

  通过构造系数的 polynomial features 来扩展一个简单的线性回归。在标准线性回归的情况下,你可能有一个类似于二维数据的模型:

 

如果我们想把抛物面拟合成数据而不是平面,我们可以结合二阶多项式的特征,使模型看起来像这样:

观察到这 还是一个线性模型 (这有时候是令人惊讶的): 看到这个,想象创造一个新的变量

有了这些重新标记的数据,我们可以将问题写成

我们看到,所得的 polynomial regression 与我们上文所述线性模型是同一类(即关于  是线性的),因此可以用同样的方法解决。通过用这些基函数建立的高维空间中的线性拟合,该模型具有灵活性,可以适应更广泛的数据范围。

方式,通过 : 

poly=PolynomialFeatures(degree=2)
p1=poly.fit_transform(x)

的方式,把x1,x2转变成      p1=[1,x1,x2,x1^2,x1x2,x2^2]

import numpy as np                                                
from sklearn.preprocessing import  PolynomialFeatures             
from sklearn.linear_model import LinearRegression                 
from sklearn.pipeline import Pipeline                             
x=np.arange(100)                                                  
print(x)                                                          
                                                                  
model=Pipeline(  [                                                
    ('poluy',PolynomialFeatures(degree=3)) ,                      
    ('linear',LinearRegression(fit_intercept=False))   ]          
)                                                                 
y=2+2*x+3*x**2+x**3                                               
x=np.array(x).reshape([-1,1])                                     
y=np.array(y).reshape([-1,1])                                     
                                                                  
model=model.fit(x,y)                                              
coe=model.named_steps['linear'].coef_                             
print(coe)                                                        
                                                                  

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值