電子商務真難做?15分鐘幫你分析數據,提供企業級可行見解

擁有大量可用於學習數據科學的在線資源,本科生髮現很難與其他人區分開來,因為每個人都完成了相同的課程和相似的項目。在這種情況下,必須瞭解數據科學項目的典型工作流程,並在數據科學和機器學習之間劃清界限。一旦瞭解了這種區別,學生就可以構建端到端項目(對於數據科學概要而言更為重要),而不僅僅是專注於數學方面(更適合於機器學習概要)

電子商務真難做?15分鐘幫你分析數據,提供企業級可行見解

職位描述

該博客說明了數據科學家的典型工作流程以及隨後的所有必要步驟。

我們將使用基本的Python庫進行數據處理,使用基本的可視化庫進行數據可視化,並使用簡單的機器學習庫進行線性迴歸分析。

這不是最新的實現(SoTA),而是直觀的指南,用於說明數據科學工作流程的基礎。

請注意,我們將為此使用Google Colab。請按“ *”表示您喜歡它。

項目描述

在此博客文章的範圍內,假設您是一名自由數據科學家,並且被聘為紐約市在線服裝專業電子商務公司的合同工。這家電子商務公司在線銷售服裝,還提供店內風格和服裝建議會議。客戶進入商店,與個人造型師進行會談/會議,然後他們可以回家並在移動應用程序或網站上訂購所需的衣服。

電子商務真難做?15分鐘幫你分析數據,提供企業級可行見解

該公司正在嘗試決定是否將精力集中在他們的移動應用程序體驗或網站上。他們已經按合同僱用了您,以幫助他們解決問題!讓我們開始吧!

讓我們嘗試分析客戶數據(它是偽造的,不包含任何真實的信用卡號或電子郵件)。

導入包

<code>import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline/<code>

以下是一個代碼段,您可以將文件上傳到Colab 文件中。我們將在筆記本中使用的數據位於CSV文件中。該文件位於名為“ E-Commerce.csv”的同一文件夾中

<code>from google.colab import files
import os
uploaded = files.upload()
all_files = [(name, os.path.getmtime(name)) for name in os.listdir()]
latest_file = sorted(all_files, key=lambda x: -x[1])[0][0]
customers = pd.read_csv('Ecommerce Customers')
customers.head()/<code>

運行此代碼後,您應該會看到如下輸出:

電子商務真難做?15分鐘幫你分析數據,提供企業級可行見解

電子商務真難做?15分鐘幫你分析數據,提供企業級可行見解

現在,我們已經上傳了數據,並且已經看到了數據的“頭部”,我們將對其進行更多處理。

我們將使用“ describe()”和“ info()”函數。輸出應為以下內容

電子商務真難做?15分鐘幫你分析數據,提供企業級可行見解

探索性數據分析

現在我們已經處理了數據,讓我們對其進行探索。

我們將使用“ Seaborn”創建一個聯合圖並比較以下各列-“在網站上花費的時間”和“每年花費的金額”

電子商務真難做?15分鐘幫你分析數據,提供企業級可行見解

<code>sns.jointplot(data = customers,x ='網站停留時間',y ='每年花費的時間')/<code>

相關性有意義嗎?

讓我們在“應用程序上的時間”列中重複該過程。

<code>sns.jointplot(數據=客戶,x ='App上的時間',y ='每年花費的金額')/<code>
電子商務真難做?15分鐘幫你分析數據,提供企業級可行見解

現在,讓我們創建一個聯合圖,以比較“應用程序時間”和“成員資格長度”。

<code>sns.jointplot(x ='應用啟用時間',y ='會員資格',kind ='hex',數據=客戶)/<code>
電子商務真難做?15分鐘幫你分析數據,提供企業級可行見解

我們可以選擇創建一個對圖來一次執行多個比較,而不是一個一個地進行。

<code>sns.pairplot(客戶)/<code>

問:根據此圖,看起來與“年度花費”最相關的功能是什麼?

Ans —會員資格的長度

現在,讓我們還創建一個年度花費與會員期限的線性模型。

<code>sns.lmplot(x ='會員年限',y ='年消費額',數據=客戶)/<code>
電子商務真難做?15分鐘幫你分析數據,提供企業級可行見解

機器學習(基礎部分)

現在,我們已經對數據進行了一些探索,讓我們繼續將數據分為訓練和測試集。將變量X設置為等於客戶的數字特徵,將變量y設置為等於“年度支出”列。

我們將使用Scikit Learn的簡單線性迴歸來訓練模型。

<code>customers.columns
y = customers['Yearly Amount Spent']
X = customers [['Time on App','Time on Website', 'Length of Membership', 'Yearly Amount Spent']]
from sklearn.cross_validation import train_test_split
from sklearn.linear_model import LinearRegression
X_train, X_test, y_train, y_test = train_test_split(
...     X, y, test_size=0.4, random_state=101)
lm = LinearRegression()
lm.fit(X_train,y_train)
X_train
predictions = lm.predict(X_test)
plt.scatter(y_test,predictions)
plt.xlabel('Y Test (True Values)')
plt.ylabel('Predicted Values')/<code>
電子商務真難做?15分鐘幫你分析數據,提供企業級可行見解

模型評估

讓我們通過計算殘差平方和和解釋的方差得分(R²)來評估模型性能。

<code>from sklearn import metrics
import pandas as np
print('MAE', metrics.mean_absolute_error(y_test,predictions))
print('MSE', metrics.mean_squared_error(y_test,predictions))
metrics.explained_variance_score(y_test,predictions)
sns.distplot((y_test-predictions))/<code>
電子商務真難做?15分鐘幫你分析數據,提供企業級可行見解

我們仍然想找出原始問題的答案,我們是否將精力集中在移動應用程序或網站開發上?也許這甚至都不重要,而入會時間才是真正重要的。讓我們看看是否可以完全解釋係數以獲得一個想法。

<code>cdf = pd.DataFrame(lm.coef_,X.columns,columns = ['Coeff'])
cdf/<code>
電子商務真難做?15分鐘幫你分析數據,提供企業級可行見解

解釋這些係數

  1. 保持所有其他功能不變,平均水平增加1個單位。會話時長增加了25.98美元的總支出。
  2. 固定所有其他功能後,App上的時間每增加1單位,總花費的支出就會增加38.59美元。
  3. 在固定所有其他功能的情況下,網站停留時間每增加1單位,總支出就會增加0.19美元。
  4. 在保持所有其他功能不變的情況下,會籍長度增加1個單位,則總花費增加了61.27美元。

問:現在公司應該更多地關注他們的移動應用程序還是網站?

這很棘手,因為有兩種方法可以考慮這一點-您可以開發網站以趕上移動應用程序的性能。

或者,您可以開發出更好的移動應用程序,因為它可以更好地工作。

這個問題的答案不是二進制的。這取決於許多因素-資源可用性是其中之一。

也許即將舉行大型喜慶銷售,而您想增加銷售。

或者,也許您正在尋求額外的一輪融資,而投資者則熱衷於下載該應用程序。

決定這些權衡並非易事,通常是由產品經理/業務分析師完成的。這是團隊合作,業務目標和收入目標的體現。


分享到:


相關文章: