当前位置:   article > 正文

sklearn线性回归及原理介绍_sklearn中线性回归的参数求解原理

sklearn中线性回归的参数求解原理

1 一次线性回归

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

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

 如何评价模型? 

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

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

1.2代码实现方式

  1. import pandas as pd
  2. import numpy as np
  3. x=np.linspace(1,16,16)
  4. y=2*x+2*np.random.rand()
  5. df1=pd.DataFrame({
  6. 'x': x,
  7. 'y': y
  8. })
  9. print(df1)
  10. df2=df1[:-2]
  11. print(df2)
  12. #--------------最小二乘回归----------------
  13. from sklearn.linear_model import LinearRegression
  14. model=LinearRegression()
  15. x=np.array(df2['x']).reshape([-1,1])
  16. y=np.array(df2['y']).reshape([-1,1])
  17. model.fit(x,y)
  18. predict1=model.predict(np.array([16]).reshape([-1,1]))
  19. print('最小二乘',predict1)
  20. #---------岭回归----------
  21. from sklearn.linear_model import Ridge
  22. model2=Ridge(alpha=.5)
  23. model2.fit(x,y)
  24. predict2=model2.predict(np.array([16]).reshape([-1,1]))
  25. print('岭回归的结果是',predict2)
  26. #-------Lasso回归------------
  27. from sklearn.linear_model import Lasso
  28. model3=Lasso(alpha=.5)
  29. model3.fit(x,y)
  30. predict3=model3.predict(np.array([16]).reshape([-1,1]))
  31. print('Lasso回归的结果',predict3)

 

2 复杂线性回归

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

 

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

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

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

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

方式,通过 : 

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

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

  1. import numpy as np
  2. from sklearn.preprocessing import PolynomialFeatures
  3. from sklearn.linear_model import LinearRegression
  4. from sklearn.pipeline import Pipeline
  5. x=np.arange(100)
  6. print(x)
  7. model=Pipeline( [
  8. ('poluy',PolynomialFeatures(degree=3)) ,
  9. ('linear',LinearRegression(fit_intercept=False)) ]
  10. )
  11. y=2+2*x+3*x**2+x**3
  12. x=np.array(x).reshape([-1,1])
  13. y=np.array(y).reshape([-1,1])
  14. model=model.fit(x,y)
  15. coe=model.named_steps['linear'].coef_
  16. print(coe)

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/412065
推荐阅读
相关标签
  

闽ICP备14008679号