4、python簡單線性迴歸代碼案例(完整)

第一、迴歸分析的步驟

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])

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章