赞
踩
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)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。