您好,登錄后才能下訂單哦!
這篇文章主要講解了“Python數據化運營KMeans聚類的實現方法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Python數據化運營KMeans聚類的實現方法”吧!
以 Python 使用 Keans 進行聚類分析的簡單舉例應用介紹聚類分析。
聚類分析 或 聚類 是對一組對象進行分組的任務,使得同一組(稱為聚類)中的對象(在某種意義上)與其他組(聚類)中的對象更相似(在某種意義上)。
它是探索性數據挖掘的主要任務,也是統計數據分析的常用技術,用于許多領域,包括機器學習,模式識別,圖像分析,信息檢索,生物信息學,數據壓縮和計算機圖形學。
根據運營或商業目的挑選出來的變量,對目標群體進行聚類,將目標群體分成幾個有明顯的特征區別的細分群體,在運營活動中為這些細分群體采用精細化、個性化的運營和服務,提升運營的效率和商業效果。
按特定的指標變量對眾多產品種類進行聚類。將產品體系細分成具有不同價值、不同目的、多維度產品組合,在此基礎上制定相應的產品開發計劃、運營計劃和服務計劃。
主要是風控應用。孤立點可能會存在欺詐的風險成分。
分為基于劃分、層次、密度、網格、統計學、模型等類型的算法,典型算法包括K均值(經典的聚類算法)、DBSCAN、兩步聚類、BIRCH、譜聚類等。
import numpy as np import matplotlib.pyplot as plt from sklearn.cluster import KMeans from sklearn import metrics import random # 隨機生成100組包含3組特征的數據 feature = [[random.random(),random.random(),random.random()] for i in range(100)] label = [int(random.randint(0,2)) for i in range(100)] # 轉換數據格式 x_feature = np.array(feature) # 訓練聚類模型 n_clusters = 3 # 設置聚類數量 model_kmeans = KMeans(n_clusters=n_clusters, random_state=0) # 建立聚類模型對象 model_kmeans.fit(x_feature) # 訓練聚類模型 y_pre = model_kmeans.predict(x_feature) # 預測聚類模型 y_pre
是K均值模型對象的屬性,表示樣本距離最近的聚類中心的總和,它是作為在沒有真實分類結果標簽下的非監督式評估指標。
該值越小越好,值越小證明樣本在類間的分布越集中,即類內的距離越小。
# 樣本距離最近的聚類中心的總和
inertias = model_kmeans.inertia_
調整后的蘭德指數(Adjusted Rand Index),蘭德指數通過考慮在預測和真實聚類中在相同或不同聚類中分配的所有樣本對和計數對來計算兩個聚類之間的相似性度量。
調整后的蘭德指數通過對蘭德指數的調整得到獨立于樣本量和類別的接近于0的值,其取值范圍為[-1, 1],負數代表結果不好,越接近于1越好意味著聚類結果與真實情況越吻合。
# 調整后的蘭德指數
adjusted_rand_s = metrics.adjusted_rand_score(label, y_pre)
互信息(Mutual Information, MI),互信息是一個隨機變量中包含的關于另一個隨機變量的信息量,在這里指的是相同數據的兩個標簽之間的相似度的量度,結果是非負值。
# 互信息
mutual_info_s = metrics.mutual_info_score(label, y_pre)
調整后的互信息(Adjusted Mutual Information, AMI),調整后的互信息是對互信息評分的調整得分。
它考慮到對于具有更大數量的聚類群,通常MI較高,而不管實際上是否有更多的信息共享,它通過調整聚類群的概率來糾正這種影響。
當兩個聚類集相同(即完全匹配)時,AMI返回值為1;隨機分區(獨立標簽)平均預期AMI約為0,也可能為負數。
# 調整后的互信息
adjusted_mutual_info_s = metrics.adjusted_mutual_info_score(label, y_pre)
同質化得分(Homogeneity),如果所有的聚類都只包含屬于單個類的成員的數據點,則聚類結果將滿足同質性。其取值范圍[0,1]值越大意味著聚類結果與真實情況越吻合。
# 同質化得分
homogeneity_s = metrics.homogeneity_score(label, y_pre)
完整性得分(Completeness),如果作為給定類的成員的所有數據點是相同集群的元素,則聚類結果滿足完整性。其取值范圍[0,1],值越大意味著聚類結果與真實情況越吻合。
# 完整性得分
completeness_s = metrics.completeness_score(label, y_pre)
它是同質化和完整性之間的諧波平均值,v = 2 (均勻性 完整性)/(均勻性+完整性)。其取值范圍[0,1],值越大意味著聚類結果與真實情況越吻合。
v_measure_s = metrics.v_measure_score(label, y_pre)
輪廓系數(Silhouette),它用來計算所有樣本的平均輪廓系數,使用平均群內距離和每個樣本的平均最近簇距離來計算,它是一種非監督式評估指標。其最高值為1,最差值為-1,0附近的值表示重疊的聚類,負值通常表示樣本已被分配到錯誤的集群。
# 平均輪廓系數
silhouette_s = metrics.silhouette_score(x_feature, y_pre, metric='euclidean')
該分數定義為群內離散與簇間離散的比值,它是一種非監督式評估指標。
# Calinski和Harabaz得分
calinski_harabaz_s = metrics.calinski_harabasz_score(x_feature, y_pre)
# 模型效果可視化 centers = model_kmeans.cluster_centers_ # 各類別中心 colors = ['#4EACC5', '#FF9C34', '#4E9A06'] # 設置不同類別的顏色 plt.figure() # 建立畫布 for i in range(n_clusters): # 循環讀類別 index_sets = np.where(y_pre == i) # 找到相同類的索引集合 cluster = x_feature[index_sets] # 將相同類的數據劃分為一個聚類子集 plt.scatter(cluster[:, 0], cluster[:, 1], c=colors[i], marker='.') # 展示聚類子集內的樣本點 plt.plot(centers[i][0], centers[i][1], 'o', markerfacecolor=colors[i], markeredgecolor='k', markersize=6) # 展示各聚類子集的中心 plt.show() # 展示圖像
# 模型應用 new_X = [1, 3.6,9.9] cluster_label = model_kmeans.predict(np.array(new_X).reshape(1,-1)) print ('聚類預測結果為: %d' % cluster_label)
感謝各位的閱讀,以上就是“Python數據化運營KMeans聚類的實現方法”的內容了,經過本文的學習后,相信大家對Python數據化運營KMeans聚類的實現方法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。