今天是讀《python數(shù)據(jù)分析基礎(chǔ)》的第16天,今天的讀書筆記內(nèi)容為使用statsmodels模塊對(duì)數(shù)據(jù)進(jìn)行最小二乘線性回歸。
代碼如下(詳細(xì)內(nèi)容請(qǐng)見(jiàn)代碼備注):
注:
1.數(shù)據(jù)來(lái)源于
https://github.com/cbrownley/foundations-for-analytics-with-python/tree/master/statistics/winequality-both.csv
2.運(yùn)用statsmodels模塊進(jìn)行最小二乘回歸可參考此內(nèi)容http://www.statsmodels.org/stable/generated/statsmodels.regression.linear_model.OLS.html#statsmodels.regression.linear_model.OLS
#運(yùn)用wine變量進(jìn)行線性回歸并預(yù)測(cè)葡萄酒的評(píng)分
import pandas as pd
import statsmodels.api as sma
import matplotlib.pyplot as plt
inputExcel=r'目標(biāo)文件'
wine=pd.read_csv(inputExcel)
#、將列標(biāo)題的空格用下劃線替代
wine.columns=wine.columns.str.replace(' ','_')
#將wine的最后10行數(shù)據(jù)并剔除'tpye'字段和'quality'字段作為測(cè)試集
wineLast=wine.tail(10)
#生成自變量并添加常數(shù)項(xiàng)
wineTest=sma.add_constant(wineLast[wineLast.columns.difference(['type','quality'])])
#將wine第一行到倒數(shù)第11行的數(shù)據(jù)作為訓(xùn)練集,并為自變量加上常數(shù)項(xiàng)
wineHead=wine.iloc[0:-10,:]
#生成自變量并添加常數(shù)項(xiàng)
wineTrainInd=sma.add_constant(wineHead[wineHead.columns.difference(['type','quality'])])
#生成因變量
wineTrainDep=wineHead['quality']
#調(diào)用statsmodels模塊的api.ols進(jìn)行最小二乘線性回歸
lm=sma.OLS(wineTrainDep,wineTrainInd)
#生成回歸結(jié)果
res=lm.fit()
#顯示模型結(jié)果
print(res.summary())
#輸出測(cè)試結(jié)果
predict=res.predict(wineTest)