python中的线性回归
对于统计模型来说,最简单也最经典的模型要数线性回归模型,它可以满足统计建模的所有标准流程,并且适用范围也非常广。R里面是使用lm函数来做回归,而在python里面有几个包都提供了这一功能,首先介绍sklearn包中的回归函数,然后介绍statsmodels包中的回归函数。前者适合于机器学习中的预测,不需要太多中间结果的观察。后者适合于分析,需要对中间结果,例如系数,残差以及效果做判断的时候使用。
- 第一步:加载各种包
In [228]:
%pylab inline
import pandas as pd
import matplotlib.pylab as ply
import statsmodels.api as sm
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
import statsmodels.formula.api as sm
- 第二步:读取数据并画图
In [222]:
df = pd.read_csv('iris.csv')
lmdf = df[['Petal_Length','Petal_Width']]
lmdf.plot(kind='scatter',x=0,y=1)
Out[222]:
- 第三步:使用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]:
In [226]:
linear_fit.score(X,y) # R2
Out[226]:
In [214]:
yhat = linear_fit.predict(X=lmdf[['Petal_Length']])
mean_squared_error(lmdf['Petal_Width'],yhat) #MSE
Out[214]:
- 第四步:观察回归效果
In [196]:
plt.scatter(lmdf['Petal_Length'],lmdf['Petal_Width'])
plt.plot(lmdf['Petal_Length'],yhat)
Out[196]:
- 使用statmodels包的过程和结果,可以使用和R类似的公式实施
In [229]:
linear_model = sm.ols(formula='Petal_Width ~ Petal_Length', data=lmdf)
results = linear_model.fit()
results.summary()
Out[229]:
我是数据科学的门外汉。但是最近看了两篇TED的演讲,消灭传染病,玩转社交网络。都是信息获取和分析的很有价值的应用。如果博主感兴趣,推荐给博主看一下。我很想知道建立这样有价值的应用是不是很复杂或者很容易实现?非常感谢!
回复删除谢谢,请推荐我看看吧。
删除谢谢您的回复,期待更多的交流
回复删除http://video.sina.com.cn/p/edu/news/2014-04-09/094063718759.html
http://v.163.com/movie/2014/5/7/6/M9PEEVPH4_M9PH34376.html
ted 消灭传染病;ted 玩转婚恋网
或者在百度都能搜到