目錄
- Python 數(shù)據(jù)化運(yùn)營(yíng)
- 1、內(nèi)容介紹
- 2、一般應(yīng)用場(chǎng)景
- 3、聚類(lèi)的常見(jiàn)方法
- 4、Keans聚類(lèi)實(shí)現(xiàn)
- 5、聚類(lèi)的評(píng)估指標(biāo)
- 6、聚類(lèi)效果可視化
- 7、數(shù)據(jù)預(yù)測(cè)
Python 數(shù)據(jù)化運(yùn)營(yíng)
1、內(nèi)容介紹
以 Python
使用 Keans
進(jìn)行聚類(lèi)分析的簡(jiǎn)單舉例應(yīng)用介紹聚類(lèi)分析。
聚類(lèi)分析
或 聚類(lèi)
是對(duì)一組對(duì)象進(jìn)行分組的任務(wù),使得同一組(稱(chēng)為聚類(lèi))中的對(duì)象(在某種意義上)與其他組(聚類(lèi))中的對(duì)象更相似(在某種意義上)。它是探索性數(shù)據(jù)挖掘的主要任務(wù),也是統(tǒng)計(jì)數(shù)據(jù)分析的常用技術(shù),用于許多領(lǐng)域,包括機(jī)器學(xué)習(xí),模式識(shí)別,圖像分析,信息檢索,生物信息學(xué),數(shù)據(jù)壓縮和計(jì)算機(jī)圖形學(xué)。
2、一般應(yīng)用場(chǎng)景
(1)目標(biāo)用戶的群體分類(lèi):根據(jù)運(yùn)營(yíng)或商業(yè)目的挑選出來(lái)的變量,對(duì)目標(biāo)群體進(jìn)行聚類(lèi),將目標(biāo)群體分成幾個(gè)有明顯的特征區(qū)別的細(xì)分群體,在運(yùn)營(yíng)活動(dòng)中為這些細(xì)分群體采用精細(xì)化、個(gè)性化的運(yùn)營(yíng)和服務(wù),提升運(yùn)營(yíng)的效率和商業(yè)效果。
(2)不同產(chǎn)品的價(jià)值組合:按特定的指標(biāo)變量對(duì)眾多產(chǎn)品種類(lèi)進(jìn)行聚類(lèi)。將產(chǎn)品體系細(xì)分成具有不同價(jià)值、不同目的、多維度產(chǎn)品組合,在此基礎(chǔ)上制定相應(yīng)的產(chǎn)品開(kāi)發(fā)計(jì)劃、運(yùn)營(yíng)計(jì)劃和服務(wù)計(jì)劃。
(3)探索、發(fā)現(xiàn)孤立點(diǎn)及異常值:主要是風(fēng)控應(yīng)用。孤立點(diǎn)可能會(huì)存在欺詐的風(fēng)險(xiǎn)成分。
3、聚類(lèi)的常見(jiàn)方法
分為基于劃分、層次、密度、網(wǎng)格、統(tǒng)計(jì)學(xué)、模型等類(lèi)型的算法,典型算法包括K均值(經(jīng)典的聚類(lèi)算法)、DBSCAN、兩步聚類(lèi)、BIRCH、譜聚類(lèi)等。
4、Keans聚類(lèi)實(shí)現(xiàn)
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn import metrics
import random
# 隨機(jī)生成100組包含3組特征的數(shù)據(jù)
feature = [[random.random(),random.random(),random.random()] for i in range(100)]
label = [int(random.randint(0,2)) for i in range(100)]
# 轉(zhuǎn)換數(shù)據(jù)格式
x_feature = np.array(feature)
# 訓(xùn)練聚類(lèi)模型
n_clusters = 3 # 設(shè)置聚類(lèi)數(shù)量
model_kmeans = KMeans(n_clusters=n_clusters, random_state=0) # 建立聚類(lèi)模型對(duì)象
model_kmeans.fit(x_feature) # 訓(xùn)練聚類(lèi)模型
y_pre = model_kmeans.predict(x_feature) # 預(yù)測(cè)聚類(lèi)模型
y_pre
實(shí)現(xiàn)如圖:
![](http://img.jbzj.com/file_images/article/202108/2021826111438664.png?2021726112513)
5、聚類(lèi)的評(píng)估指標(biāo)
inertias 是K均值模型對(duì)象的屬性,表示樣本距離最近的聚類(lèi)中心的總和,它是作為在沒(méi)有真實(shí)分類(lèi)結(jié)果標(biāo)簽下的非監(jiān)督式評(píng)估指標(biāo)。該值越小越好,值越小證明樣本在類(lèi)間的分布越集中,即類(lèi)內(nèi)的距離越小。
# 樣本距離最近的聚類(lèi)中心的總和
inertias = model_kmeans.inertia_
adjusted_rand_s:調(diào)整后的蘭德指數(shù)(Adjusted Rand Index),蘭德指數(shù)通過(guò)考慮在預(yù)測(cè)和真實(shí)聚類(lèi)中在相同或不同聚類(lèi)中分配的所有樣本對(duì)和計(jì)數(shù)對(duì)來(lái)計(jì)算兩個(gè)聚類(lèi)之間的相似性度量。調(diào)整后的蘭德指數(shù)通過(guò)對(duì)蘭德指數(shù)的調(diào)整得到獨(dú)立于樣本量和類(lèi)別的接近于0的值,其取值范圍為[-1, 1],負(fù)數(shù)代表結(jié)果不好,越接近于1越好意味著聚類(lèi)結(jié)果與真實(shí)情況越吻合。
# 調(diào)整后的蘭德指數(shù)
adjusted_rand_s = metrics.adjusted_rand_score(label, y_pre)
mutual_info_s:互信息(Mutual Information, MI),互信息是一個(gè)隨機(jī)變量中包含的關(guān)于另一個(gè)隨機(jī)變量的信息量,在這里指的是相同數(shù)據(jù)的兩個(gè)標(biāo)簽之間的相似度的量度,結(jié)果是非負(fù)值。
# 互信息
mutual_info_s = metrics.mutual_info_score(label, y_pre)
adjusted_mutual_info_s:調(diào)整后的互信息(Adjusted Mutual Information, AMI),調(diào)整后的互信息是對(duì)互信息評(píng)分的調(diào)整得分。它考慮到對(duì)于具有更大數(shù)量的聚類(lèi)群,通常MI較高,而不管實(shí)際上是否有更多的信息共享,它通過(guò)調(diào)整聚類(lèi)群的概率來(lái)糾正這種影響。當(dāng)兩個(gè)聚類(lèi)集相同(即完全匹配)時(shí),AMI返回值為1;隨機(jī)分區(qū)(獨(dú)立標(biāo)簽)平均預(yù)期AMI約為0,也可能為負(fù)數(shù)。
# 調(diào)整后的互信息
adjusted_mutual_info_s = metrics.adjusted_mutual_info_score(label, y_pre)
homogeneity_s:同質(zhì)化得分(Homogeneity),如果所有的聚類(lèi)都只包含屬于單個(gè)類(lèi)的成員的數(shù)據(jù)點(diǎn),則聚類(lèi)結(jié)果將滿足同質(zhì)性。其取值范圍[0,1]值越大意味著聚類(lèi)結(jié)果與真實(shí)情況越吻合。
# 同質(zhì)化得分
homogeneity_s = metrics.homogeneity_score(label, y_pre)
completeness_s:完整性得分(Completeness),如果作為給定類(lèi)的成員的所有數(shù)據(jù)點(diǎn)是相同集群的元素,則聚類(lèi)結(jié)果滿足
完整性。其取值范圍[0,1],值越大意味著聚類(lèi)結(jié)果與真實(shí)情況越吻合。
# 完整性得分
completeness_s = metrics.completeness_score(label, y_pre)
v_measure_s:它是同質(zhì)化和完整性之間的諧波平均值,v = 2 (均勻性 完整性)/(均勻性+完整性)。其取值范圍[0,1],值越大意味著聚類(lèi)結(jié)果與真實(shí)情況越吻合。
v_measure_s = metrics.v_measure_score(label, y_pre)
silhouette_s:輪廓系數(shù)(Silhouette),它用來(lái)計(jì)算所有樣本的平均輪廓系數(shù),使用平均群內(nèi)距離和每個(gè)樣本的平均最近簇距離來(lái)計(jì)算,它是一種非監(jiān)督式評(píng)估指標(biāo)。其最高值為1,最差值為-1,0附近的值表示重疊的聚類(lèi),負(fù)值通常表示樣本已被分配到錯(cuò)誤的集群。
# 平均輪廓系數(shù)
silhouette_s = metrics.silhouette_score(x_feature, y_pre, metric='euclidean')
calinski_harabaz_s:該分?jǐn)?shù)定義為群內(nèi)離散與簇間離散的比值,它是一種非監(jiān)督式評(píng)估指標(biāo)。
# Calinski和Harabaz得分
calinski_harabaz_s = metrics.calinski_harabasz_score(x_feature, y_pre)
6、聚類(lèi)效果可視化
# 模型效果可視化
centers = model_kmeans.cluster_centers_ # 各類(lèi)別中心
colors = ['#4EACC5', '#FF9C34', '#4E9A06'] # 設(shè)置不同類(lèi)別的顏色
plt.figure() # 建立畫(huà)布
for i in range(n_clusters): # 循環(huán)讀類(lèi)別
index_sets = np.where(y_pre == i) # 找到相同類(lèi)的索引集合
cluster = x_feature[index_sets] # 將相同類(lèi)的數(shù)據(jù)劃分為一個(gè)聚類(lèi)子集
plt.scatter(cluster[:, 0], cluster[:, 1], c=colors[i], marker='.') # 展示聚類(lèi)子集內(nèi)的樣本點(diǎn)
plt.plot(centers[i][0], centers[i][1], 'o', markerfacecolor=colors[i], markeredgecolor='k',
markersize=6) # 展示各聚類(lèi)子集的中心
plt.show() # 展示圖像
如圖:
![](/d/20211017/cb6751ea0be731459ef88f49ec3bb1a9.gif)
7、數(shù)據(jù)預(yù)測(cè)
# 模型應(yīng)用
new_X = [1, 3.6,9.9]
cluster_label = model_kmeans.predict(np.array(new_X).reshape(1,-1))
print ('聚類(lèi)預(yù)測(cè)結(jié)果為: %d' % cluster_label)
到此這篇關(guān)于Python 數(shù)據(jù)化運(yùn)營(yíng)之KMeans聚類(lèi)分析總結(jié)的文章就介紹到這了,更多相關(guān)Python 數(shù)據(jù)化運(yùn)營(yíng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- Python實(shí)現(xiàn)的KMeans聚類(lèi)算法實(shí)例分析
- Python KMeans聚類(lèi)問(wèn)題分析
- python kmeans聚類(lèi)簡(jiǎn)單介紹和實(shí)現(xiàn)代碼
- python中kmeans聚類(lèi)實(shí)現(xiàn)代碼
- Python實(shí)現(xiàn)Kmeans聚類(lèi)算法