机器学习实战-聚类分析KMEANS算法-25
生活随笔
收集整理的這篇文章主要介紹了
机器学习实战-聚类分析KMEANS算法-25
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
KMEANS算法-NBA球隊實力聚類分析
from sklearn.cluster import KMeans import numpy as np import matplotlib.pyplot as plt import pandas as pd from sklearn.preprocessing import MinMaxScaler data = pd.read_csv('nba.csv') data.head() minmax_scaler = MinMaxScaler() # 標準化數據 X = minmax_scaler.fit_transform(data.iloc[:,1:]) X[:5] # 肘部法則 loss = [] for i in range(2,10):model = KMeans(n_clusters=i).fit(X)loss.append(model.inertia_)plt.plot(range(2,10),loss) plt.xlabel('k') plt.ylabel('loss') plt.show() k = 4 model = KMeans(n_clusters=k).fit(X)# 將標簽整合到原始數據上 data['clusters'] = model.labels_data.head() for i in range(k):print('clusters:',i)label_data = data[data['clusters'] == i].iloc[:,0]print(label_data.values)KMEANS算法-廣告效果聚類分析
import numpy as np import pandas as pd from sklearn.preprocessing import MinMaxScaler from sklearn.cluster import KMeans import matplotlib.pyplot as plt import seaborn as sns %matplotlib inline# 顯示中文 plt.rcParams['font.family'] = ['sans-serif'] plt.rcParams['font.sans-serif'] = ['SimHei'] # 載入數據,空格為間隔 df = pd.read_csv('ad_performance.txt', delimiter='\t')# 數據概觀 df.tail(5) df.isnull().sum() df.describe().round(3) plt.figure(figsize=(12,10)) # 畫熱力圖,數值為兩個變量之間的相關系數 p=sns.heatmap(df.corr(), annot=True) plt.show() # 使用平均值替換缺失值 df['平均停留時間'] = df['平均停留時間'].fillna(df['平均停留時間'].mean())# 字符串分類轉整數分類 conver_cols = ['素材類型', '廣告類型', '合作方式', '廣告尺寸', '廣告賣點']# 用get_dummies進行one hot編碼 dummy_df = pd.get_dummies(df[conver_cols])# 清除原來的特征 df2 = df.drop(conver_cols, axis=1) # 當axis = 1的時候,concat就是行對齊,然后將不同列名稱的兩張表合并 df2 = pd.concat([df2, dummy_df], axis=1) df2.tail().T # 獲取數值特征轉換成矩陣 scale_matrix = df2.iloc[:, 1:8] # 建立MinMaxScaler模型對象 minmax_scaler = MinMaxScaler() # 標準化數據 df2.iloc[:, 1:8] = minmax_scaler.fit_transform(scale_matrix) X = np.array(df2.iloc[:,1:])# 肘部法則 loss = [] for i in range(2,10):model = KMeans(n_clusters=i).fit(X)loss.append(model.inertia_)plt.plot(range(2,10),loss) plt.xlabel('k') plt.ylabel('loss') plt.show() k = 4 model = KMeans(n_clusters=k).fit(X)# 將最優情況的標簽整合到原始數據上 df['clusters'] = model.labels_# 每個聚類的樣本量 cluster_count = pd.DataFrame(df.clusters.value_counts()).rename(columns={'clusters': 'counts'}) # 獲取樣本占比 cluster_count['percentage'] = (cluster_count['counts']/cluster_count['counts'].sum()).round(2) cluster_count.head() # 設置顏色 colors='yellowgreen','gold','lightskyblue','lightcoral' # 設置分離 explode=0.1,0.1,0.1,0.1 # 設置畫幅 plt.figure(figsize=(5, 5)) # 作圖 plt.pie(cluster_count.counts,explode=explode,labels=cluster_count.index,colors=colors,autopct='%1.1f%%',shadow=True) plt.show() df.describe()
聚類0:各方面的特征都不明顯,換句話說就是效果比較平庸,沒有明顯的優勢或短板。但這些“中庸”的廣告媒體卻構成了整個廣告的主體。因此需要業務部門重點考慮其投放的實際價值。
聚類1:這類廣告媒體在訪問深度、平均停留時間、訂單轉化率以及平均搜索量等流量質量的特征上的表現較好,除了注冊轉化率較低外,該類渠道各方面比較均衡。更重要的是該類媒體的數量占據了31%的數量,因此是一類規模較大且綜合效果較好的媒體。聚類1的廣告渠道的短板是日均UV和平均注冊率,因此該類媒體無法為企業帶來大量的流量以及新用戶。不過這類廣告訂單轉化率高適合有關訂單轉化的提升。
聚類2:這類廣告媒體渠道效果很好,特別是日均UV和用戶停留時間表現很好,但綜合其只占8%的媒體數量,由于實例比較少,不排除是因為個例導致效果擴大,可以合理增加此類渠道投放,繼續深入測試其真實效果。
聚類3:這類渠道其日均UV還不錯,平均注冊率非常突出,證明這是一類“引流”+“拉新”的渠道,適合在大規模的廣告宣傳和引流時使用。
總結
以上是生活随笔為你收集整理的机器学习实战-聚类分析KMEANS算法-25的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习实战-贝叶斯算法-24
- 下一篇: 机器学习实战-PCA算法-26