1. 程式人生 > >4、python簡單線性迴歸程式碼案例(完整)

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