案件
1,現(xiàn)有冰激凌店一年的歷史銷售數(shù)據
2,數(shù)據包括單日的銷售量、氣溫、周幾(問題:如何用這些數(shù)據預測冰激凌的銷量?)
模擬實驗與分析
將數(shù)據存儲為csv格式,導入python。并畫出散點圖,觀察氣溫和銷售量的關系。
[Python] 純文本查看 復制代碼
1
2
3
4
5
6
7
8
9
|
import pandas as pd
icecream = pd.read_csv( "icecream.csv" )
import matplotlib.pyplot as plt
import pylab
plt.rcParams[ 'font.sans-serif' ] = [ 'SimHei' ]
plt.scatter(icecream.iloc[:, 1 ],icecream.iloc[:, 0 ])
plt.xlabel( "氣溫" )
plt.ylabel( "銷售量" )
pylab.show()
|
計算兩者間的相關系數(shù)。
[Python] 純文本查看 復制代碼
1
|
icecream.iloc[:, 0 : 2 ].corr()
|
結果為:
[Python] 純文本查看 復制代碼
1
2
3
4
|
銷售量 氣溫[ / align]
銷售量 1.000000 0.844211
氣溫 0.844211 1.000000
|
銷售量和氣溫的相關系數(shù)為0.84,結合散點圖,認為兩者相關。下面用回歸分析的方法,通過氣溫來預測冰激凌銷量。
[Python] 純文本查看 復制代碼
01
02
03
04
05
06
07
08
09
10
11
12
|
from sklearn.linear_model import LinearRegression
model = LinearRegression()
feature_cols = [ '氣溫' ]
X = icecream[feature_cols]
y = icecream.銷售量
model.fit(X,y)
plt.scatter(icecream.氣溫, icecream.銷售量)
plt.plot(icecream.氣溫, model.predict(X) , color = 'blue' )
plt.xlabel( '氣溫' )
plt.ylabel( '銷售量' )
plt.show()
print ( "截距與斜率:" ,model.intercept_,model.coef_)
|
[Python] 純文本查看 復制代碼
1
|
截距與斜率: 57.1673282152 [ 5.21607823 ]
|
于是,散點圖中的線函數(shù)式為y=5.2X+57.2。所以,當氣溫為25度時,預測的銷售量為5.2*25+57.2=187.52,約188個。
幾個小概念回歸分析:預測數(shù)據時的簡便手法。在此例中,銷售量為反應變量,也叫因變量,氣溫為解釋變量,也叫自變量。雖然影響銷售量的因素除了氣溫外還有很多,但回歸分析中我們要把現(xiàn)實情況簡化并公式化,這個過程叫做建模。本例中只用1個解釋變量進行模型化稱為一元線性回歸,如果反應變量同時受到多個解釋變量的影響,稱為多元線性回歸。
|