本課程旨在跨領域整合Python語言、機器學習技術與數位行銷應用,引導學生以數據驅動的方式理解並分析現代行銷問題,並培養學生運用程式設計與資料分析工具,系統性解決數位行銷領域的實務問題。
這張圖表呈現了 12 個核心專案在不同機器學習領域與難易度上的分佈。您可以快速了解課程的學習曲線,以及各項技術的應用深度。
從下方篩選器選擇您感興趣的領域,或直接點擊專案卡片,深入了解每個專案的商業目標與應用情境。本課程所有專案皆採用 UC Irvine Machine Learning Repository 提供之公開資料集。
在目前的課程設計中,主要考量是教學上的循序漸進與概念聚焦。為了讓初學者能先專注於理解演算法的核心功能與商業應用,參考答案並未包含將資料集切割為訓練集與測試集的步驟。在一個更完整的機器學習流程中,切割資料集以客觀評估模型的泛化能力是必要且關鍵的一步。
關於切割資料集與模型評估請參考 Python機器學習課程
在共享經濟模式下,資源的有效配置是營運成功的關鍵。對於共享單車服務而言,其需求量受到多種外部因素的顯著影響,特別是天氣條件。本專案的核心目標在於建立一個具備預測能力的迴歸模型,旨在量化環境變數(如溫度、濕度、風速)與單車日租借總量之間的相關性。透過此模型,營運團隊將能從被動應對轉為主動規劃,根據氣象預報進行前瞻性的車輛調度與維護安排,從而優化資源利用率,提升用戶滿意度,並最大化營運收益。
本研究採用來自 UCI Machine Learning Repository 的「單車共享數據集」(ID: 275),此資料集被廣泛應用於時間序列預測與迴歸分析的研究中。其詳細記錄了華盛頓特區兩年期間每日的單車租借次數,並整合了相應的氣象與季節性資料。我們將選取其中最具代表性的連續型天氣變數進行分析:
我們將使用 `ucimlrepo` 函式庫載入數據,並建立一個多元線性迴歸模型來預測租借量。
# 匯入必要的函式庫
# pip install ucimlrepo
import pandas as pd
from ucimlrepo import fetch_ucirepo
from sklearn.linear_model import LinearRegression
# 1. 載入 UCI 數據集
bike_sharing_dataset = fetch_ucirepo(id=275)
df = bike_sharing_dataset.data.features
# 2. 定義特徵 (X) 與目標 (y)
X = df[['temp', 'hum', 'windspeed']]
y = df['cnt']
# 3. 建立與訓練模型
model = LinearRegression()
model.fit(X, y)
# 4. 輸出模型結果
print("模型係數 (溫度, 濕度, 風速):", model.coef_)
print(f"模型截距: {model.intercept_:.2f}")
我們可以透過長條圖來比較「實際租借量」與模型的「預測租借量」,以評估模型在部分樣本上的效果。
從模型結果中,我們可以得出以下結論:
本研究的核心行銷意涵在於將外部環境變數整合至營運決策中,實現「情境式行銷」(Contextual Marketing)。透過預測模型,企業能超越傳統的靜態供需管理,發展出基於天氣情境的動態策略。例如,在預測到高溫晴朗天氣時,行銷活動可自動觸發,推送「陽光日騎行優惠」至用戶APP;反之,在濕冷天氣,則可推送「雨天騎行挑戰」或與室內場館合作的交叉行銷活動。此模型不僅是營運工具,更是實現精準、即時、個人化溝通的策略基礎,能顯著提升用戶體驗與品牌好感度。
在數位行銷領域,電子郵件是維繫顧客關係與促進轉換的關鍵渠道。然而,郵件的成效高度依賴於開信率,而開信率又直接受主旨的吸引力影響。本專案旨在應用分類演算法,建立一個預測模型,以識別哪些文本特徵(如長度、特定行銷詞彙的使用)與用戶的互動行為(此處以是否為垃圾郵件作為代理指標)高度相關。最終目標是為行銷人員提供一個數據驅動的決策輔助工具,用以在郵件發送前評估並優化主旨文案,從而提升行銷活動的整體投資回報率。
鑑於真實用戶點擊數據的隱私性與獲取難度,本專案採用來自 UCI 的「SMS 垃圾訊息蒐集」資料集 (ID: 94) 作為研究代理。此資料集包含大量已標記為「垃圾訊息 (spam)」與「非垃圾訊息 (ham)」的真實手機簡訊。我們將此二元分類問題類比為行銷郵件的成功與否:「ham」可視為成功觸及並可能被點擊的郵件,而「spam」則代表失敗的郵件。此資料集的核心變數為:
我們將從訊息內文中提取特徵,例如:訊息長度、是否包含 'free' (免費) 等行銷字眼。然後使用決策樹分類器來建立模型。
# 匯入必要的函式庫
# pip install ucimlrepo
import pandas as pd
from ucimlrepo import fetch_ucirepo
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score, confusion_matrix
# 1. 載入 UCI 數據集
sms_spam_collection = fetch_ucirepo(id=94)
X_df = sms_spam_collection.data.features
y_df = sms_spam_collection.data.targets
df = pd.concat([X_df, y_df], axis=1)
df.columns = ['text', 'class']
# 2. 特徵工程 (Feature Engineering)
df['is_spam'] = (df['class'] == 'spam').astype(int)
df['text_length'] = df['text'].str.len()
df['contains_free'] = df['text'].str.lower().str.contains('free').astype(int)
# 3. 定義特徵 (X) 與目標 (y)
X = df[['text_length', 'contains_free']]
y = df['is_spam']
# 4. 建立與訓練模型
model = DecisionTreeClassifier(max_depth=3, random_state=42)
model.fit(X, y)
# 5. 評估模型
y_pred = model.predict(X)
accuracy = accuracy_score(y, y_pred)
cm = confusion_matrix(y, y_pred)
print(f"模型準確率: {accuracy:.2f}")
print("混淆矩陣 (TN, FP, FN, TP):\n", cm)
混淆矩陣是評估分類模型最常用的工具之一,它能清楚地顯示模型在各類別上的預測表現。
雖然是使用垃圾訊息資料,但洞察同樣適用於行銷郵件:
此專案的行銷意涵在於將「文案創意」這一傳統上較為主觀的行銷活動,納入數據科學的分析框架。模型不僅提供了預測能力,更重要的是揭示了語言特徵與用戶反應之間的潛在關聯。這意味著行銷人員可以建立一個「文案儀表板」,在發送前對多個主旨版本進行快速的量化評估,篩選出高潛力選項進入 A/B 測試,從而顯著提高測試效率與資源利用率。長遠來看,持續累積的分析結果能形成組織內部的「文案知識庫」,指導品牌建立更有效、更符合目標受眾偏好的溝通風格。
在複雜的電子商務環境中,理解用戶行為是優化轉換率的基礎。然而,訪客群體並非同質,其瀏覽行為與購買意圖存在巨大差異。本專案旨在應用非監督式學習中的分群演算法,在沒有任何先驗標籤的情況下,僅根據用戶的瀏覽行為指標(如頁面價值與離開率),自動識別出具有不同行為特徵的訪客群體。其最終目標是發掘並定義出不同的用戶畫像(personas),為後續的個人化行銷、網站動線優化、以及再行銷策略提供堅實的數據基礎。
本研究採用來自 UCI 的「線上購物者購買意圖」數據集 (ID: 468)。此資料集捕捉了超過一萬次線上購物會話的詳細行為指標,旨在分析並預測用戶的最終購買行為。為達成訪客分群的目標,我們將聚焦於兩個與轉換意圖高度相關的關鍵指標:
我們將使用 `scikit-learn` 中的 K-Means 演算法。K-Means 會試圖將數據分成 K 個群組,使得每個群組內的數據點都盡可能相似。
# 匯入必要的函式庫
# pip install ucimlrepo
import pandas as pd
from ucimlrepo import fetch_ucirepo
from sklearn.cluster import KMeans
# 1. 載入 UCI 數據集
online_shoppers_dataset = fetch_ucirepo(id=468)
df = online_shoppers_dataset.data.features
# 2. 選擇特徵並進行清理
features = df[['PageValues', 'ExitRates']]
# 為求視覺化效果,我們只取部分樣本
features_sample = features.sample(n=1000, random_state=42)
# 3. 建立與訓練模型 (假設我們想分成4群)
kmeans = KMeans(n_clusters=4, random_state=42, n_init=10)
features_sample['cluster'] = kmeans.fit_predict(features_sample)
# 4. 輸出結果
print("各群組的人數分佈:")
print(features_sample['cluster'].value_counts())
透過散佈圖,我們可以清楚地看到 K-Means 如何根據訪客的行為將他們分成四個不同的群體。
分群結果幫助我們識別出至少四類訪客:
本專案的行銷意涵在於實現了從「流量思維」到「用戶思維」的轉變。傳統網站分析可能只關注總流量與跳出率,而分群分析則深入到用戶行為的異質性,將抽象的流量數據轉化為具體的、可操作的用戶畫像。這使得行銷團隊能夠設計差異化的溝通策略:對「高價值顧客」優化結帳流程以降低摩擦;對「潛力顧客」進行內容推薦以引導探索;對「猶豫顧客」啟動再行銷廣告;對「隨意瀏覽者」則需反思流量來源的品質。這種基於行為分群的個人化干預,是提升網站轉換率與用戶體驗的關鍵。
在內容為王的時代,如何量化評估內容的潛在影響力,是所有內容行銷團隊面臨的核心挑戰。本專案旨在建立一個可解釋的迴歸模型,用以探討文章的內在屬性(如內容長度、多媒體元素的使用)與其在社群媒體上的傳播效果(此處以分享數為代理指標)之間的關係。透過此模型,我們不僅希望能預測一篇文章的潛在熱度,更重要的是,要從模型中提煉出可執行的洞察,指導內容創作者如何系統性地優化其創作策略,以最大化內容的社群影響力。
本研究採用來自 UCI 的「線上新聞熱門度」數據集 (ID: 332)。此資料集匯總了近四萬篇 Mashable 新聞文章的量化屬性,是內容行銷與病毒傳播研究領域的基準資料集之一。我們將選取其中最直觀的內容結構變數作為自變數:
我們將建立一個多元線性迴歸模型,來找出文章特性與分享數之間的關係。
# 匯入必要的函式庫
# pip install ucimlrepo
import pandas as pd
from ucimlrepo import fetch_ucirepo
from sklearn.linear_model import LinearRegression
# 1. 載入 UCI 數據集
online_news_popularity = fetch_ucirepo(id=332)
df = online_news_popularity.data.features
# 2. 選擇特徵並清理
df.columns = df.columns.str.strip()
X = df[['n_tokens_content', 'num_imgs', 'num_videos']]
y = df['shares']
# 3. 建立與訓練模型
model = LinearRegression()
model.fit(X, y)
# 4. 輸出模型結果
print("模型係數 (字數, 圖片數, 影片數):", model.coef_)
print("模型截距:", model.intercept_)
我們可以透過長條圖來比較「實際分享數」與模型的「預測分享數」,以評估模型在部分樣本上的效果。
此模型能幫助內容團隊:
本專案的行銷意涵在於將內容創作從一種藝術直覺,轉向一門可量化、可優化的科學。透過迴歸模型,行銷人員可以解構「爆款內容」的組成元素,並量化各元素(如多媒體使用、文章長度)對傳播效益的貢獻度。這使得內容策略的制定不再是猜測,而是基於數據的預測與推理。團隊可以建立一個「內容成效預測器」,在投入大量製作資源前,對選題和結構進行初步的成效評估。這不僅提升了內容行銷的 ROI,也加速了團隊對於目標受眾內容偏好的學習曲線。
在競爭激烈的市場中,維繫現有顧客的忠誠度,其成本效益遠高於開發新客戶。因此,提前識別並干預具有流失風險的顧客,成為企業持續增長的關鍵策略。本專案旨在建立一個高效能的分類模型,透過分析顧客的人口統計資料與歷史互動行為,來預測其流失的可能性。此模型的應用價值在於,它能將被動的客戶服務轉化為主動的顧客關係管理,使行銷團隊能將有限的挽留資源(如折扣、客製化關懷)精準地投放給最高風險的客群,從而有效降低顧客流失率。
本研究採用來自 UCI 的「銀行行銷」數據集 (ID: 222)。此資料集源自葡萄牙銀行機構的直效行銷活動,其豐富的客戶屬性與互動記錄,使其成為顧客行為預測領域的常用基準。我們將客戶是否申辦定期存款作為目標變數,將「不申辦」類比為一種潛在的顧客不活躍或流失信號。我們選取以下關鍵變數:
我們將使用 `隨機森林分類器 (RandomForestClassifier)`,它透過建立多棵決策樹並綜合其結果,通常能獲得比單一決策樹更高的準確率和穩定性。
# 匯入必要的函式庫
# pip install ucimlrepo
import pandas as pd
from ucimlrepo import fetch_ucirepo
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import confusion_matrix, accuracy_score
# 1. 載入 UCI 數據集
bank_marketing = fetch_ucirepo(id=222)
df = bank_marketing.data.features
df['y'] = bank_marketing.data.targets
# 2. 數據清理與轉換
df['subscribed'] = (df['y'] == 'yes').astype(int)
# 3. 定義特徵 (X) 與目標 (y)
X = df[['age', 'balance', 'duration']]
y = df['subscribed']
# 4. 建立與訓練模型
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X, y)
# 5. 評估模型
y_pred = model.predict(X)
accuracy = accuracy_score(y, y_pred)
cm = confusion_matrix(y, y_pred)
print(f"模型準確率: {accuracy:.2f}")
print("混淆矩陣:\n", cm)
print("\n特徵重要性 (age, balance, duration):", model.feature_importances_)
除了混淆矩陣,`特徵重要性` 長條圖是隨機森林模型的一大優點。它能告訴我們,在所有特徵中,哪些是對預測顧客流失最有影響力的關鍵因子。
此模型提供了更深度的洞察:
本專案的行銷意涵在於將顧客關係管理 (CRM) 從「事後反應」提升至「事前預防」的戰略層次。傳統的流失分析往往在顧客離開後才進行,而此預測模型則提供了一個前瞻性的視角。特徵重要性分析更進一步揭示了影響顧客決策的關鍵驅動因子(如通話時長),這不僅是數據,更是指導行銷溝通策略的寶貴洞察。企業可以據此重新設計客戶互動流程,將資源投入到最關鍵的接觸點上,從而建立一個數據驅動的、自動化的顧客價值維繫系統。
在以顧客為中心的商業模式中,並非所有顧客都具有相同的價值。顧客終身價值 (CLV) 是一種前瞻性指標,用以估算單一顧客在未來與公司互動的整個生命週期內,能帶來的總淨利潤。本專案的學術目標是應用 RFM 模型(最近一次消費 Recency、消費頻率 Frequency、消費金額 Monetary)作為特徵,建立一個能夠預測顧客未來消費潛力的迴歸模型。透過量化每位顧客的價值,企業能夠更科學地進行資源分配,將高價值的行銷資源、VIP 服務等,精準地投放給最有貢獻潛力的顧客群體,從而實現可持續的業務增長。
本研究採用來自 UCI 的「線上零售」數據集 (ID: 352)。此資料集包含一家英國線上零售商在 2010 至 2011 年間的交易紀錄,其顆粒度細至每筆交易的每個品項,是顧客關係管理與消費者行為分析的經典資料集。我們將對此原始數據進行匯總處理,以建構 RFM 模型所需的三個關鍵指標:
我們將先對原始交易數據進行處理,計算每位顧客的 RFM 指標,然後建立一個多元線性迴歸模型,用 R 和 F 來預測 M。
# 匯入必要的函式庫
# pip install ucimlrepo
import pandas as pd
from ucimlrepo import fetch_ucirepo
from sklearn.linear_model import LinearRegression
import datetime as dt
# 1. 載入 UCI 數據集
online_retail = fetch_ucirepo(id=352)
df = online_retail.data.features
df['InvoiceDate'] = pd.to_datetime(df['InvoiceDate'])
df.dropna(subset=['CustomerID'], inplace=True)
df = df[df.Quantity > 0]
df['TotalPrice'] = df['Quantity'] * df['UnitPrice']
snapshot_date = df['InvoiceDate'].max() + dt.timedelta(days=1)
# 2. 計算 RFM 指標
rfm = df.groupby('CustomerID').agg({
'InvoiceDate': lambda date: (snapshot_date - date.max()).days,
'InvoiceNo': 'nunique',
'TotalPrice': 'sum'
})
rfm.rename(columns={'InvoiceDate': 'Recency', 'InvoiceNo': 'Frequency', 'TotalPrice': 'Monetary'}, inplace=True)
# 3. 定義特徵 (X) 與目標 (y)
X = rfm[['Recency', 'Frequency']]
y = rfm['Monetary']
# 4. 建立與訓練模型
model = LinearRegression()
model.fit(X, y)
# 5. 輸出模型結果
print("模型係數 (Recency, Frequency):", model.coef_)
print("模型截距:", model.intercept_)
我們可以將顧客依據 RFM 指標分成不同等級(如:高價值、潛力、需喚醒等),並用圓餅圖來呈現各等級的顧客數量。這有助於我們直觀地理解顧客結構。
RFM 模型是實現精準行銷的基石:
本專案的行銷意涵在於推動企業從「產品中心」轉向「顧客中心」的經營哲學。傳統行銷多關注單次交易的利潤,而 CLV 預測則著眼於顧客關係的長期價值。透過 RFM 分析,企業能將顧客資產進行量化與分級,這不僅僅是技術操作,更是深層的策略轉變。它促使行銷資源的分配從「廣撒網」轉變為對高價值客群的「精準投資」,並為不同價值層級的顧客設計差異化的溝通與服務策略(如 VIP 計畫、喚醒活動等),最終目標是最大化整體顧客資產的價值,而非單純追求短期銷售額。
現代市場的顯著特徵是其異質性,單一的行銷策略難以滿足所有顧客的需求。市場區隔 (Market Segmentation) 的核心目標,便是將廣泛的市場依據顧客的共同特徵(如人口統計、消費行為、心理特徵等)切割成數個可識別、可觸及、且具備實質商業價值的子群體。本專案旨在應用分群演算法,透過數據驅動的方式,自動識別出具有不同消費偏好的顧客群體。這項分析的最終產出,是為企業提供清晰的顧客畫像,使其能夠針對不同區塊的顧客,設計高度相關的產品、服務與溝通策略,從而實現資源的精準投放與行銷效益的最大化。
本研究採用來自 UCI 的「批發商顧客」數據集 (ID: 292)。此資料集記錄了葡萄牙一家批發商的客戶,在六個不同產品類別上的年度支出。這為我們提供了一個絕佳的機會,來探索 B2B 市場中基於消費行為的顧客區隔。我們將聚焦於以下幾個核心變數:
我們將使用 K-Means 演算法,將顧客根據他們在「雜貨」與「乳製品」上的支出,自動分成 3 個群體。
# 匯入必要的函式庫
# pip install ucimlrepo
import pandas as pd
from ucimlrepo import fetch_ucirepo
from sklearn.cluster import KMeans
# 1. 載入 UCI 數據集
wholesale_customers = fetch_ucirepo(id=292)
df = wholesale_customers.data.features
# 2. 選擇特徵
X = df[['Grocery', 'Milk']]
# 3. 建立與訓練模型 (分成3群)
kmeans = KMeans(n_clusters=3, random_state=42, n_init=10)
df['cluster'] = kmeans.fit_predict(X)
# 4. 輸出結果
print("各群組中心點 (Grocery, Milk):")
print(kmeans.cluster_centers_)
透過散佈圖,我們可以清楚地看到 3 個被自動識別出的顧客群體,每個群體都有其獨特的消費偏好。
分群結果幫助我們定義了 3 種顧客畫像:
本專案的行銷意涵在於展示了如何將 STP 理論 (Segmentation, Targeting, Positioning) 中的第一步「市場區隔」進行數據化與自動化。傳統的市場區隔多依賴於地理或人口統計變數,而本模型則採用了更具預測力的「行為變數」(消費品類)。分析產出的顧客群體,為後續的目標市場選擇 (Targeting) 提供了清晰的依據。更重要的是,它能指導企業進行差異化的定位 (Positioning) 策略:針對「零售商」客群,溝通重點應在於採購效率與利潤空間;而對「餐廳」客群,則應強調食材品質與穩定供應。這種基於數據的區隔,是實現精準行銷與建立差異化競爭優勢的基礎。
在程序化廣告 (Programmatic Advertising) 生態系中,廣告點擊率 (CTR) 是衡量廣告成效與預估收益的核心指標。能夠準確預測用戶對特定廣告的點擊機率,是實現廣告預算最佳化與提升投資回報率 (ROI) 的關鍵。本專案旨在建立一個穩健的二元分類模型,透過分析用戶的人口統計特徵、歷史互動行為與廣告上下文信息,來預測其點擊廣告的可能性。此模型的應用不僅能指導廣告創意與受眾定向策略,更是即時競價 (RTB) 系統中,進行動態出價決策的基礎。
我們將再次使用來自 UCI 的「銀行行銷」數據集 (ID: 222),目標是預測客戶是否會申辦定期存款,這與預測用戶是否會「點擊」一個長期承諾的廣告非常相似。
我們將使用邏輯迴歸 (`LogisticRegression`) 模型,這是在業界常用於預測二元結果(是/否)的強大演算法。
# 匯入必要的函式庫
# pip install ucimlrepo
import pandas as pd
from ucimlrepo import fetch_ucirepo
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, confusion_matrix
# 1. 載入 UCI 數據集
bank_marketing = fetch_ucirepo(id=222)
df = bank_marketing.data.features
df['y'] = bank_marketing.data.targets
df.dropna(inplace=True)
# 2. 數據清理與轉換
df['subscribed'] = (df['y'] == 'yes').astype(int)
# 3. 定義特徵 (X) 與目標 (y)
X = df[['age', 'balance', 'duration']]
y = df['subscribed']
# 3. 建立與訓練模型
model = LogisticRegression(max_iter=200, random_state=42)
model.fit(X, y)
# 4. 評估模型
y_pred = model.predict(X)
accuracy = accuracy_score(y, y_pred)
cm = confusion_matrix(y, y_pred)
print(f"模型準確率: {accuracy:.2f}")
print("混淆矩陣:\n", cm)
混淆矩陣再次幫助我們評估模型在「申辦」與「未申辦」兩個類別上的預測準確度。
CTR 預測模型是現代廣告系統的核心:
本專案的行銷意涵在於揭示了現代數位廣告如何從「媒體購買」(Media Buying) 演進為「受眾購買」(Audience Buying)。傳統廣告投放多基於媒體版位,而此模型的核心是預測「個人」的反應機率。這使得廣告投放的決策單位從「版位」精細化至「每一次曝光」。在即時競價 (RTB) 的框架下,pCTR (predicted CTR) 是計算 eCPM (effective Cost Per Mille) 的關鍵因子,直接影響競價成功率與成本效益。因此,建立精準的 CTR 預測模型,不僅是技術挑戰,更是決定數位廣告活動成敗的根本性策略環節。
在零售與電商領域,提升客單價與顧客體驗是永恆的課題。購物籃分析 (Market Basket Analysis) 是一種數據挖掘技術,旨在從海量的交易數據中,發現顧客購買行為的模式,特別是商品之間的關聯性。本專案的目標是應用關聯規則學習 (Association Rule Learning),找出「如果顧客購買了商品 A,那麼他有多大機率會同時購買商品 B」這類規則。這些規則的發掘,能夠為交叉銷售 (Cross-selling)、商品推薦引擎的建構、實體店面的商品陳列,以及行銷活動的綑綁設計,提供直接且強力的數據支持。
本研究採用來自 UCI 的「線上零售 II」數據集 (ID: 502)。此資料集涵蓋了一家英國線上禮品店從 2009 年至 2011 年的交易紀錄,包含了超過一百萬筆的交易項目。其數據的真實性與龐大規模,使其成為購物籃分析與推薦系統研究的理想選擇。我們將聚焦於以下兩個核心欄位:
這需要更複雜的資料前處理,以及使用 `mlxtend` 函式庫中的 `apriori` 演算法來找出「頻繁項集」,並從中生成「關聯規則」。
# 匯入必要的函式庫
# pip install ucimlrepo mlxtend
import pandas as pd
from ucimlrepo import fetch_ucirepo
from mlxtend.frequent_patterns import apriori, association_rules
# 1. 載入 UCI 數據集並進行前處理
online_retail_ii = fetch_ucirepo(id=502)
df = online_retail_ii.data.features
df.dropna(axis=0, subset=['Invoice'], inplace=True)
df['Invoice'] = df['Invoice'].astype('str')
df = df[~df['Invoice'].str.contains('C')] # 移除退貨訂單
# 2. 將數據轉換為 Apriori 演算法所需的格式
basket = (df[df['Country'] =="France"]
.groupby(['Invoice', 'Description'])['Quantity']
.sum().unstack().reset_index().fillna(0)
.set_index('Invoice'))
def encode_units(x):
if x <= 0:
return 0
if x >= 1:
return 1
basket_sets = basket.applymap(encode_units)
if 'POSTAGE' in basket_sets.columns:
basket_sets.drop('POSTAGE', inplace=True, axis=1)
# 3. 找出頻繁項集與關聯規則
frequent_itemsets = apriori(basket_sets, min_support=0.07, use_colnames=True)
rules = association_rules(frequent_itemsets, metric="lift", min_threshold=1)
# 4. 輸出前5條最有價值的規則
print(rules.head())
關聯規則的結果最適合用表格呈現。`antecedents` 是前提(顧客買了 A),`consequents` 是結果(他也很可能買 B)。`lift` (提升度) > 1 代表正相關,數值越高,關聯性越強。
購物籃分析是零售業的強力武器:
本專案的行銷意涵在於揭示了隱藏在交易數據背後的「消費心理地圖」。關聯規則分析超越了單一商品的銷售表現,轉而探索商品之間的「協同效應」。這為行銷策略提供了更豐富的維度:推薦系統不再是盲目推送熱銷品,而是基於顧客當前購物籃的內容,進行高度相關的「情境式推薦」。此外,分析結果也能指導產品開發,例如,若發現 A 與 B 經常被同時購買,或可考慮開發 A+B 的組合包或衍生性商品。最終,購物籃分析將零售商從「賣產品」的思維,提升到「經營顧客生活方式」的策略高度。
在當代數位行銷中,意見領袖 (KOL) 的影響力日益增強,但其影響力是一個多維度的複雜概念,無法單純由追蹤數等單一指標衡量。本專案旨在解決如何從多個相關指標中,提取出一個能綜合評估影響力的核心指標。我們將應用降維技術中的主成分分析 (PCA),將多個高度相關的社群表現變數(如字數、連結數、圖片/影片數),轉換為一個或數個新的、不相關的綜合指標(主成分)。這個新的「影響力分數」或「病毒傳播分數」,能夠更全面、更客觀地反映一個內容創作者或一篇文章的真實影響力,為品牌尋找合作夥伴或優化內容策略提供一個科學化的排序依據。
我們將再次使用來自 UCI 的「線上新聞熱門度」數據集 (ID: 332)。此資料集的多維度特性使其不僅適用於預測,也適用於探索性分析。我們將多個描述文章內容豐富度的屬性,視為影響其傳播潛力的綜合指標,並透過降維技術來合成一個單一的「影響力分數」。
我們將先對數據進行標準化,然後使用 `主成分分析 (PCA)` 將多個指標降至一個維度,這個維度即可被視為綜合的「病毒傳播分數」。
# 匯入必要的函式庫
# pip install ucimlrepo
import pandas as pd
from ucimlrepo import fetch_ucirepo
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
# 1. 載入 UCI 數據集
online_news_popularity = fetch_ucirepo(id=332)
df = online_news_popularity.data.features
df.columns = df.columns.str.strip()
# 2. 選擇特徵並清理
features = ['n_tokens_content', 'num_hrefs', 'num_imgs', 'num_videos']
df_clean = df[features].dropna()
# 3. 數據標準化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(df_clean)
# 4. 應用 PCA 降維
pca = PCA(n_components=1)
df_clean['virality_score'] = pca.fit_transform(X_scaled)
# 5. 結合文章標題(URL)並排序
df_clean['url'] = df.loc[df_clean.index, 'url']
top_articles = df_clean.sort_values(by='virality_score', ascending=False)
# 6. 輸出前5名最具傳播潛力的文章
print(top_articles.head())
我們可以將計算出的「病毒傳播分數」視覺化,用長條圖展示排名前 10 的文章及其分數。這比單純看字數或圖片數更能反映其綜合傳播潛力。
病毒傳播分數能幫助內容行銷團隊:
本專案的行銷意涵在於提供了一種超越「單一指標迷思」的評估框架。在KOL行銷中,品牌常過度依賴「粉絲數」等表面指標,而忽略了互動品質、內容相關性等多維度因素。PCA技術透過數學轉換,將多個相關變數合成為一個綜合性的「影響力主成分」,這等於是為影響力建立了一個更為穩健與全面的量尺。這使得品牌在選擇KOL時,能從「找最多粉絲的人」轉變為「找最適合品牌調性、最具真實影響力的人」,從而提升合作的精準度與最終的行銷轉換效益。
社群媒體行銷的核心在於提升用戶參與度 (Engagement)。然而,貼文的互動成效(如按讚、留言、分享)受到多種因素影響,包括發文時間、內容類型、以及粉絲頁本身的屬性。本專案旨在建立一個迴歸模型,用以探討可控的發文變數(如發文時間、貼文類型)與貼文互動成效(此處以留言數為代理指標)之間的量化關係。此模型能協助社群行銷人員在規劃內容策略時,做出更具數據支持的決策,以期在有限的資源下,最大化社群互動效益。
本研究採用來自 UCI 的「臉書貼文評論量」數據集 (ID: 368)。此資料集包含了某知名化妝品牌的臉書粉絲頁在一段時間內的貼文表現,提供了豐富的貼文屬性與互動指標。我們將選取以下幾個關鍵變數:
我們將對類別變數 `Type` 進行獨熱編碼 (One-Hot Encoding),然後建立一個多元線性迴歸模型來預測留言數。
# 匯入必要的函式庫
# pip install ucimlrepo
import pandas as pd
from ucimlrepo import fetch_ucirepo
from sklearn.linear_model import LinearRegression
# 1. 載入 UCI 數據集
facebook_comment_volume_dataset = fetch_ucirepo(id=368)
df = facebook_comment_volume_dataset.data.features
df['comment'] = facebook_comment_volume_dataset.data.targets['comment']
df.dropna(inplace=True)
# 2. 特徵工程
df_encoded = pd.get_dummies(df, columns=['Type'], drop_first=True)
# 3. 定義特徵 (X) 與目標 (y)
features = ['Page total likes', 'Post Weekday', 'Post Hour', 'Type_Photo', 'Type_Status', 'Type_Video']
X = df_encoded[features]
y = df_encoded['comment']
# 4. 建立與訓練模型
model = LinearRegression()
model.fit(X, y)
# 5. 輸出模型結果
print("模型係數:", model.coef_)
print("模型截距:", model.intercept_)
我們可以透過長條圖來比較「實際留言數」與模型的「預測留言數」,以評估模型在部分樣本上的效果。
此模型能幫助社群行銷團隊:
本專案的行銷意涵在於將社群媒體管理從「內容發布」的執行層面,提升至「互動成效管理」的策略層面。透過建立預測模型,社群經理能夠量化不同內容策略(發文時間、格式選擇)對用戶參與度的潛在影響。這使得內容日曆的規劃不再僅僅依賴於直覺或過往的單一案例,而是基於一個能夠系統性評估多變數影響的框架。模型產出的洞察,例如「週末發布影片型貼文的預期互動最高」,可以直接轉化為可執行的內容策略,從而更有效地運用社群平台來建立品牌與消費者之間的深度連結。
在高維度的顧客數據中,直接進行分群往往會受到「維度災難」(Curse of Dimensionality) 的影響,導致分群效果不佳且難以解釋。本專案旨在整合兩種強大的機器學習技術:首先,利用主成分分析 (PCA) 對多維度的消費數據進行降維,萃取出能夠代表原始數據結構核心特徵的主成分;接著,在降維後的特徵空間中,應用 K-Means 演算法進行顧客分群。此方法的優勢在於,它不僅能簡化問題的複雜度、去除數據雜訊,更能產生在視覺上可解釋的分群結果,為高階的市場策略與顧客關係管理提供更為精煉與穩健的洞察。
我們將再次使用來自 UCI 的「批發商顧客」數據集 (ID: 292)。但這次,我們將利用其所有的六個消費品類特徵,來進行一個更全面的、多維度的顧客分群分析。
我們將先對數據進行標準化,然後用 PCA 降至 2 維,最後在新的 2D 空間上進行 K-Means 分群。
# 匯入必要的函式庫
# pip install ucimlrepo
import pandas as pd
from ucimlrepo import fetch_ucirepo
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans
# 1. 載入 UCI 數據集
wholesale_customers = fetch_ucirepo(id=292)
df = wholesale_customers.data.features
# 2. 數據標準化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(df)
# 3. 應用 PCA 降維
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)
df_pca = pd.DataFrame(data=X_pca, columns=['PC1', 'PC2'])
# 4. 在降維後的數據上進行分群
kmeans = KMeans(n_clusters=3, random_state=42, n_init=10)
df_pca['cluster'] = kmeans.fit_predict(df_pca)
# 5. 輸出結果
print("PCA 降維後的前5筆資料:")
print(df_pca.head())
PCA 的最大優勢之一就是可以將高維數據視覺化。下方的散佈圖展示了所有顧客在兩個主成分構成的新空間中的分佈,並用顏色標示出分群結果。
PCA 結合分群提供了更高層次的策略洞察:
本專案的行銷意涵在於展示了一種處理複雜多維消費者數據的高階分析框架。傳統市場區隔常受限於少數幾個變數,而 PCA 則允許我們將數十甚至數百個顧客特徵,壓縮成幾個核心的「顧客DNA」。在這些核心維度上進行分群,所得到的顧客輪廓不僅更為精簡,也更貼近市場的內在結構。這使得行銷策略的制定,能從單純的「行為區隔」提升至更深層次的「生活方式」或「價值觀」區隔。例如,一個主成分可能代表了「價格敏感度」,另一個則代表「對新科技的追求」。基於這些抽象但更本質的維度來制定溝通策略,將比傳統方法更具穿透力與效果。