目錄
-
- 一: 背景:
- 二:資料概況分析:
- 三:單變量分析:
- 四:相關性分析和可視化:
- 五:回歸分析:
1: 分析的目的:
對各類因素投入産出比做出評估。
2: 分析的資料:
電視廣告,線上,線下,門店内,微信管道等促銷投入和銷售額之間的關系。
3:資料的說明:

4: 分析流程:
1:檢視資料的前5條記錄:
2:檢視資料的基本資訊:
3:統計各個列哪些存在空值,以及空值的數量:
由于缺失的不多,後期考慮直接删除。
1:資料分布資訊:
各個列的最大值,平均值,中位數,衆數等。
2:使用describe不會統計字元串類型的,是以單獨檢視event列:
發現分為四種促銷:
3: 檢視四種促銷分别對應的營業額是多少?
4:檢視四種促銷分别對應的廣告投放量是多少?
5:one hot 編碼:獨熱碼:
注意:對于person來說這種字元串類型的,我們要進行線性分析,肯定要轉化成數字。如果我們使用0 1 2 3 來區分四種,實際上就是付給每個列一個權重,而這些權重會影響我們的分析。是以是不可取的。
獨熱碼是用向量來存儲列,每列的值就是相等的:
而pandas中可以使用get_dummies方法,将其中的字元串類型的列,轉化成啞變量,即獨熱碼的形式存儲。
1: 檢視每個列之間的相關性:
注意:此時求出來的相關性,并不代表一定相關。是否真正的相關,需要我們根據這幾個列,建構線性回歸模型,進行訓練,然後得到權重,我們才能得出結論。
2:檢視與revenue相關的列的排序:
注意sort_values隻有一列也需要指定按照哪一列進行排序。
3:使用seaborn檢視local_TV與銷售額之間的關系:
#可視化分析
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
#線性關系可視化
#斜率與相關系數有關
sns.regplot('local_tv','revenue',store)
發現:local_TV與銷售額之間存在一次線性關系。
4: 檢視人員和銷售額之間的關系:
5: 檢視instore(門店内海報)與限售額之間的關系:
發現是牽強的一次性關系。
1: 去除空值,然後劃分測試集和訓練集:
# 1:導入線性回歸分析的包和劃分測試集和訓練集的包
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
# 2:去除存在空值的行
store.dropna(inplace=True)
y = store['revenue']
x=store[['local_tv','person','instore']]
# 3: 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(x, y)
2:進行歸一化和線性模型進行拟合:
# 1: 導入歸一化函數
from sklearn.preprocessing import StandardScaler
# 2:建立歸一化對象
ss = StandardScaler()
# 3:對訓練集進行歸一化處理和訓練
X_train = ss.fit_transform(X_train)
# 4: 對于測試集也進行歸一化
X_test = ss.transform(X_test)
# 1:建立線性模型對象
model = LinearRegression()
# 2:利用訓練集進行拟合
model.fit(X_train, y_train)
# 3:列印自變量系數
print(model.coef_)
# 4: 列印截距
print(model.intercept_)
列印結果:
# 1: 利用測試集進行測試
y_predict = model.predict(X_test)
from sklearn.metrics import mean_squared_error
from math import sqrt
# 2: 擷取均方誤差的開跟值
sqrt(mean_squared_error(y_true=y_test, y_pred=y_predict))