Quantcast
Channel: 数据科学中的R和Python
Viewing all articles
Browse latest Browse all 85

python中的线性回归

$
0
0

python中的线性回归

对于统计模型来说,最简单也最经典的模型要数线性回归模型,它可以满足统计建模的所有标准流程,并且适用范围也非常广。R里面是使用lm函数来做回归,而在python里面有几个包都提供了这一功能,首先介绍sklearn包中的回归函数,然后介绍statsmodels包中的回归函数。前者适合于机器学习中的预测,不需要太多中间结果的观察。后者适合于分析,需要对中间结果,例如系数,残差以及效果做判断的时候使用。

  • 第一步:加载各种包
In [228]:
%pylabinline
importpandasaspd
importmatplotlib.pylabasply
importstatsmodels.apiassm
fromsklearn.linear_modelimportLinearRegression
fromsklearn.metricsimportmean_squared_error
importstatsmodels.formula.apiassm

Populating the interactive namespace from numpy and matplotlib

  • 第二步:读取数据并画图
In [222]:
df=pd.read_csv('iris.csv')
lmdf=df[['Petal_Length','Petal_Width']]
lmdf.plot(kind='scatter',x=0,y=1)
Out[222]:

<matplotlib.axes.AxesSubplot at 0x119b1f110>
  • 第三步:使用sklearn包中的函数进行回归
In [230]:
# 建立回归对象
linear_sk=LinearRegression()
X=lmdf[['Petal_Length']]
y=lmdf['Petal_Width']
linear_sk.fit(X,y)
linear_fit.intercept_,linear_fit.coef_# coef
Out[230]:

(-0.36651404521672837, array([ 0.41641913]))
In [226]:
linear_fit.score(X,y)# R2
Out[226]:

0.92690122792200369
In [214]:
yhat=linear_fit.predict(X=lmdf[['Petal_Length']])
mean_squared_error(lmdf['Petal_Width'],yhat)#MSE
Out[214]:

0.04228994631948424
  • 第四步:观察回归效果
In [196]:
plt.scatter(lmdf['Petal_Length'],lmdf['Petal_Width'])
plt.plot(lmdf['Petal_Length'],yhat)
Out[196]:

[<matplotlib.lines.Line2D at 0x11991a790>]
  • 使用statmodels包的过程和结果,可以使用和R类似的公式实施
In [229]:
linear_model=sm.ols(formula='Petal_Width ~ Petal_Length',data=lmdf)
results=linear_model.fit()
results.summary()
Out[229]:
OLS Regression Results
Dep. Variable:Petal_Width R-squared: 0.927
Model:OLS Adj. R-squared: 0.926
Method:Least Squares F-statistic: 1877.
Date:Sat, 18 Oct 2014 Prob (F-statistic):5.78e-86
Time:18:00:43 Log-Likelihood: 24.400
No. Observations: 150 AIC: -44.80
Df Residuals: 148 BIC: -38.78
Df Model: 1
coefstd errtP>|t|[95.0% Conf. Int.]
Intercept -0.3665 0.040 -9.188 0.000 -0.445 -0.288
Petal_Length 0.4164 0.010 43.320 0.000 0.397 0.435
Omnibus: 5.498 Durbin-Watson: 1.461
Prob(Omnibus): 0.064 Jarque-Bera (JB): 5.217
Skew: 0.353 Prob(JB): 0.0736
Kurtosis: 3.579 Cond. No. 10.3

Viewing all articles
Browse latest Browse all 85

Trending Articles