第一、迴歸分析的步驟
01 根據預測目標,確定自變量和因變量
02 繪製散點圖,確定迴歸模型類型
03 估計模型參數,建立迴歸模型
04 對迴歸模型進行檢驗
迴歸方程的精度就是用來表示實際觀測點和迴歸方程的擬合程度的指標,使用判定係數來度量。
判定係數=相關係數R平方=ESS/TSS=1-RSS/TSS
其中:具體公式見圖
TSS 總離差平方和
ESS 迴歸平方和
RSS 殘差平方和
05 利用迴歸模型進行預測
第二、sklearn 建模
leModel=sklearn.linear_model.LinearRegression()
訓練模型:
lrModel.fit(x,y)
模型評估:
lrModel.score(x,y)
模型預測:
lrModel.predict(x)
第三、代碼實踐
import numpy
import pandas
data = pandas.read_csv('D:\\DATA\\pycase\\number2\\Data2.csv')
# 根據預測目標,確定自變量現金和因變量流水
# 0 確定自變量因素,對數據標籤進行維度的合併,此處按照渠道序列篩選分組統計(因爲有跨期影響)
Data=data.groupby(
by=['廣告商']
)['現金','流水'].agg({
'現金': numpy.sum,
'流水': numpy.sum
})
# 1 數據質量分析
explore=Data.describe()
Data=Data[(Data.現金>0)&(Data.流水>0)]
# 2 數據變換,渠道之間的數據量級差距太大,進行簡單的函數轉換,這倆根據散點圖,採用log對數函數
# 測試 range(Data.index)
# Data.columns.size
# Data.iloc[0,0]=math.log(Data.iloc[0,0])
# math.log(Data.iloc[0,0])
# 測試 Data.loc[indexs].values
import math
I=range(Data.index.size)
J=range(Data.columns.size)
i=0
j=0
for i in I:
for j in J:
# 逐個數據取對數
Data.iloc[i,j]=math.sqrt(Data.iloc[i,j])
# 0-1 標準化 from sklearn.preprocessing import MinMaxScaler
# scaler=MinMaxScaler()
# Data[['現金', '流水']]=scaler.fit_transform(Data[['現金', '流水']].values.reshape(-1,1))
# 3 屬性規約
# 選擇數據的自變量和因變量
x=Data['現金']
y=Data['流水']
# 繪製散點圖,確定迴歸模型的類型
from matplotlib import pyplot as plt
plt.scatter(x,y)
# 4 估計模型參數,建立迴歸模型
# 對數據進行類型轉化
y=y.values.reshape(-1, 1)
x=x.values.reshape(-1, 1)
from sklearn.linear_model import LinearRegression
lrModel = LinearRegression()
lrModel.fit(x, y)
# 5 對模型進行檢驗
lrModel.score(x,y)
# 6 利用迴歸模型進行預測
lrModel.predict([[500000],[400000],[300000]])
#查看截距
alpha = lrModel.intercept_[0]
#查看參數
beta = lrModel.coef_[0][0]
alpha + beta*numpy.array([500000, 400000, 300000])