1. 程式人生 > 其它 >Python學習筆記——線性迴歸

Python學習筆記——線性迴歸

技術標籤:資料分析python資料分析

用Python進行線性迴歸並計算R方

1. 虛構資料,關於頁面渲染速度和人們購物金額的關係。我們想在網頁載入所需時間和人們在網頁上的購物金額之間構造一種線性關係。

%matplotlib inline
import numpy as np
from pylab import *
pagespeeds=np.random.normal(3.0,1.0,1000) #使用正太分佈隨機生成,均值為3,標準差為1,共1000個數據
purchaseamount=100-(pagespeeds+np.random.normal(1,0.1,1000))*3 #我們在原資料中構造一種絕對的線性關係
scatter(pagespeeds,purchaseamount) #畫出散點圖

執行結果:
在這裡插入圖片描述

2. 下面看看是否能夠用最小二乘法即最大似然法找出最優擬合直線

匯入Scipy中的stats包

from scipy import stats
slope,intercept, r_value, p_value, std_err=stats.linregress(pagespeeds,purchaseamount)
r_squre=r_value**2
r_squre

執行結果:
0.9906504913372373

我們看到R方的結果為0.99,幾乎等於1,說明擬合效果非常好,沒什麼驚訝的,因為我們已經確切知道有線性關係。

下面來繪製這條直線

import matplotlib.pyplot as plt
def predict(x):
    return slope*x+intercept #我們不適用觀測資料,使用預測資料,slope和intercept都是之前的linregress得到的
fitline=predict(pagespeeds) #使用pagespeeds作為引數,返回一個列表fitline作為Y軸資料
plt.scatter(pagespeeds,purchaseamount) #先表示散點圖
plt.plot(pagespeeds,fitline,c='r') #製作擬合直線
plt.
show()

執行結果:
在這裡插入圖片描述

從上圖可知,我們的直線確實是很好地擬合,它位於散點圖的中間,可以完美預測新值。