柚子快報(bào)邀請(qǐng)碼778899分享:聚類 機(jī)器學(xué)習(xí)
文章目錄
介紹機(jī)器學(xué)習(xí)下的分類K均值算法K值的選取:手肘法用聚類輔助理解營(yíng)銷數(shù)據(jù)貼近項(xiàng)目實(shí)戰(zhàn)
介紹機(jī)器學(xué)習(xí)下的分類
以下介紹無監(jiān)督學(xué)習(xí)之聚類 聚類是最常見的無監(jiān)督學(xué)習(xí)算法。人有歸納和總結(jié)的能力,機(jī)器也有。聚類就是讓機(jī)器把數(shù)據(jù)集中的樣本按照特征的性質(zhì)分組,這個(gè)過程中沒有標(biāo)簽的存在。
聚類和監(jiān)督學(xué)習(xí)中的分類問題有些類似,其主要區(qū)別在于:傳統(tǒng)分類問題“概念化在前”。機(jī)器首先是學(xué)習(xí)概念,然后才能夠做分類、做判斷。
而聚類不同,雖然本質(zhì)上也是“分類”,但是“概念化在后”或者“不概念化”,在給一堆數(shù)據(jù)分組時(shí),沒有任何此類、彼類的概念。
聚類也有好幾種算法,K均值(K-means)是其中最常用的一種。
K均值算法
K均值算法是最容易理解的無監(jiān)督學(xué)習(xí)算法。算法簡(jiǎn)單,速度也不差,但需要人工指定K值,也就是分成幾個(gè)聚類。具體算法流程如下。
(1)首先確定K的數(shù)值,比如5個(gè)聚類,也叫5個(gè)簇。(2)然后在一大堆數(shù)據(jù)中隨機(jī)挑選K個(gè)數(shù)據(jù)點(diǎn),作為簇的質(zhì)心(centroid )。這些隨機(jī)質(zhì)心當(dāng)然不完美,別著急,它們會(huì)慢慢變得完美。(3)遍歷集合中每一個(gè)數(shù)據(jù)點(diǎn),計(jì)算它們與每一個(gè)質(zhì)心的距離(比如歐氏距離)。數(shù)據(jù)點(diǎn)離哪個(gè)質(zhì)心近,就屬于哪一類。此時(shí)初始的K個(gè)類別開始形成。(4)這時(shí)每一個(gè)質(zhì)心中都聚集了很多數(shù)據(jù)點(diǎn),于是質(zhì)心說,你們來了,我就要“退役”了(這個(gè)是偉大的“禪讓制度”啊!),選一個(gè)新的質(zhì)心吧。然后計(jì)算出每一類中最靠近中心的點(diǎn),作為新的質(zhì)心。此時(shí)新的質(zhì)心會(huì)比原來隨機(jī)選的靠譜一些(等會(huì)兒用圖展示質(zhì)心的移動(dòng))。(5)重新進(jìn)行步驟(3),計(jì)算所有數(shù)據(jù)點(diǎn)和新的質(zhì)心的距離,在新的質(zhì)心周圍形成新的簇分配(“吃瓜群眾”隨風(fēng)飄搖,離誰近就跟誰)。(6)重新進(jìn)行步驟(4),繼續(xù)選擇更好的質(zhì)心(一代一代地“禪讓”下去)。(7)一直重復(fù)進(jìn)行步驟(5)和(6),不斷更新簇中的數(shù)據(jù)點(diǎn),不斷找到新的質(zhì)心,直至收斂。
通過下面這個(gè)圖,可以看到聚類中質(zhì)心的移動(dòng)和簇形成的過程。
K值的選取:手肘法
直觀的手肘法(elbow method )進(jìn)行簇的數(shù)量的確定。手肘法是基于對(duì)聚類效果的一個(gè)度量指標(biāo)來實(shí)現(xiàn)的,這個(gè)指標(biāo)也可以視為一種損失。在K值很小的時(shí)候,整體損失很大,而隨著K值的增大,損失函數(shù)的值會(huì)在逐漸收斂之前出現(xiàn)一個(gè)拐點(diǎn)。此時(shí)的K值就是比較好的值。 大家看下面的圖,損失隨著簇的個(gè)數(shù)而收斂的曲線有點(diǎn)像只手臂,最佳K值的點(diǎn)像是手肘,因此取名為手肘法。
用聚類輔助理解營(yíng)銷數(shù)據(jù)
1.問題定義:為客戶分組 (1)通過這個(gè)數(shù)據(jù)集,理解K均值算法的基本實(shí)現(xiàn)流程。 (2)通過K均值算法,給客戶分組,了解每類客戶消費(fèi)能力的差別。
2.數(shù)據(jù)讀入
import numpy as np # 導(dǎo)入NumPy
import pandas as pd # 導(dǎo)入pandas
import warnings
warnings.filterwarnings("ignore")
dataset = pd.read_csv('../數(shù)據(jù)集/Customers Cluster.csv')
dataset.head() # 顯示一些數(shù)據(jù)
# 只針對(duì)兩個(gè)特征進(jìn)行聚類,以方便二維的展示
X= dataset.iloc[:, [2,4]].values
Spending Score:消費(fèi)分?jǐn)?shù)(歸一化成一個(gè)0~1的分?jǐn)?shù))
3.聚類的擬合 下面嘗試用不同的K值進(jìn)行聚類的擬合:
from sklearn.cluster import KMeans # 導(dǎo)入聚類模型
cost=[] # 初始化損失(距離)值
for i in range(1,11): # 嘗試不同的K值
kmeans = KMeans(n_clusters= i, init='k-means++', random_state=0)
kmeans.fit(X) # 擬合模型
cost.append(kmeans.inertia_) #inertia_是度量數(shù)據(jù)點(diǎn)到聚類中心的度量公式
4.繪制手肘圖
import matplotlib.pyplot as plt # 導(dǎo)入Matplotlib
import seaborn as sns # 導(dǎo)入Seaborn
%matplotlib inline
# 繪制手肘圖
plt.plot(range(1,11), cost)
plt.title('The Elbow Method')
plt.xlabel('no of clusters')
plt.ylabel('Cost')
plt.show()
從手肘圖上判斷,肘部數(shù)字大概是3或4,我們選擇4作為聚類個(gè)數(shù)
# 構(gòu)建聚類模型
kmeansmodel = KMeans(n_clusters= 4, init='k-means++') # 選擇4作為聚類個(gè)數(shù)
y_kmeans= kmeansmodel.fit_predict(X) # 進(jìn)行聚類的擬合和分類
5.把分好的聚類可視化
# 把分好的聚類可視化
plt.scatter(X[y_kmeans == 0, 0], X[y_kmeans == 0, 1], s = 100, c = 'red', label = 'Cluster 1')
plt.scatter(X[y_kmeans == 1, 0], X[y_kmeans == 1, 1], s = 100, c = 'blue', label = 'Cluster 2')
plt.scatter(X[y_kmeans == 2, 0], X[y_kmeans == 2, 1], s = 100, c = 'green', label = 'Cluster 3')
plt.scatter(X[y_kmeans == 3, 0], X[y_kmeans == 3, 1], s = 100, c = 'cyan', label = 'Cluster 4')
# plt.scatter(X[y_kmeans == 4, 0], X[y_kmeans == 4, 1], s = 100, c = 'magenta', label = 'Cluster 5')
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s = 300, c = 'yellow', label = 'Centroids')
plt.title('Clusters of customers')
plt.xlabel('Age')
plt.ylabel('Spending Score')
plt.legend()
plt.show()
這個(gè)客戶的聚類問題就解決了。其中,黃色高亮的大點(diǎn)是聚類的質(zhì)心,可以看到算法中的質(zhì)心并不止一個(gè)。
貼近項(xiàng)目實(shí)戰(zhàn)
可見 Python綜合數(shù)據(jù)分析_RFM用戶分組模型
學(xué)習(xí)機(jī)器學(xué)習(xí)的參考資料: (1)書籍 利用Python進(jìn)行數(shù)據(jù)分析 西瓜書 百面機(jī)器學(xué)習(xí) 機(jī)器學(xué)習(xí)實(shí)戰(zhàn) 阿里云天池大賽賽題解析(機(jī)器學(xué)習(xí)篇) 白話機(jī)器學(xué)習(xí)中的數(shù)學(xué) 零基礎(chǔ)學(xué)機(jī)器學(xué)習(xí) 圖解機(jī)器學(xué)習(xí)算法 …
(2)機(jī)構(gòu) 光環(huán)大數(shù)據(jù) 開課吧 極客時(shí)間 七月在線 深度之眼 貪心學(xué)院 拉勾教育 博學(xué)谷 …
柚子快報(bào)邀請(qǐng)碼778899分享:聚類 機(jī)器學(xué)習(xí)
相關(guān)文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。