回歸分析是研究自變量和因變量之間數(shù)量變化關(guān)系的一種分析方法蜡镶。
回歸分析包括線性回歸和非線性回歸血巍。線性回歸包括簡單線性回歸和多重線性回歸。
現(xiàn)有一份某超市的廣告費用和銷售額的數(shù)據(jù)殃饿,求廣告費用和銷售額之間的線性關(guān)系茄唐。
數(shù)據(jù)源:https://pan.baidu.com/s/1a9vrAcz2CxaqG1EFJSqMZg
代碼如下:
一、導(dǎo)入數(shù)據(jù)
import pandas as pd
import numpy as np
#導(dǎo)入數(shù)據(jù)
data=pd.read_csv('C:/Users/86138/Desktop/PDABook/wu/5.10.2 簡單線性回歸分析/線性回歸.csv')
#查看數(shù)據(jù)基本信息
print(data.head())
print(data.info())
#修改列名
data.columns=['yuefen','guanggao','xiaoshoue']
#指定x舀锨、y
x=np.array(data['guanggao']).reshape(-1,1)
y=np.array(data['xiaoshoue']).reshape(-1,1)
輸出
二岭洲、繪制散點圖
#繪制散點圖
import matplotlib.pyplot as plt
plt.scatter(x,y)
plt.show()
輸出
從散點圖可看出,兩者有明顯的線性關(guān)系坎匿。
三盾剩、計算相關(guān)系數(shù)
a=data['guanggao'].corr(data['xiaoshoue'])
print(a)
輸出相關(guān)系數(shù)為0.94雷激,高度相關(guān)。
四告私、建立模型
#建立模型
from sklearn.linear_model import LinearRegression
IrModel=LinearRegression()
IrModel.fit(x,y)
print(IrModel.coef_) #系數(shù)
print(IrModel.intercept_) #截距屎暇,常數(shù)項
輸出
所以,銷售額y與廣告費用x之間的線性關(guān)系為:
y=17.32x + 291.90
模型擬合度:
print(IrModel.score(x,y)) #模型擬合度R方
得到R方為0.88驻粟,擬合效果非常不錯根悼。R方越接近1,表示回歸模型擬合效果越好蜀撑。
(R方的值等于y值和模型計算出來的y_值的相關(guān)系數(shù)R的平方)
預(yù)測:
pred_y=IrModel.predict(pred_x) #預(yù)測挤巡,輸入要預(yù)測的pred_x值,得到預(yù)測y值
print(pred_y)
第一次運行時報錯:
這是由于在新版的sklearn中酷麦,所有的數(shù)據(jù)都應(yīng)該是二維矩陣矿卑,哪怕它只是單獨一行或一列(比如前面做預(yù)測時,僅僅只用了一個樣本數(shù)據(jù))沃饶,所以需要使用.reshape(1,-1)進(jìn)行轉(zhuǎn)換母廷,具體操作如下。
需改為