資料清洗
調整年齡的範圍
airbnb=airbnb[airbnb['age']<=80]
airbnb=airbnb[airbnb['age']>=18]
轉變日期的格式,轉為對分析有用的日期形式
呼叫to_datetime 轉化為日期時間格式
airbnb['date_account_created']=pd.to_datetime(airbnb['date_account_created'])
計算註冊至今的年份
用get_dummies將性別這一類別變數轉變為啞變數
airbnb=pd.get_dummies(airbnb)
用 表.drop(columns=[『1』,『2』]) 刪除處理前無用的列
airbnb.drop(columns=['date_account_created','date_first_booking'])
標準化,k的選擇和聚類
取出要聚類用的列建立乙個新錶
airbnb_new=airbnb[['age','web','moweb','ios','android']]
用sklearn中的預處理preprocessing中的標準化工具scale對資料標準化
from sklearn.preprocessing import scale
x=pd.dataframe(scale(airbnb_new))
引入聚類模組和matplotlib
from sklearn.cluster import kmeans
import matplotlib.pyplot as plt
肘部法找出最佳k
新增list,for迴圈
sse=
for i in range(1,11):
kmeans=kmeans(n_clusters=i,init='k-means++',random_state=42)
kmeans.fit(x)
作圖
plt.plot(range(1,11),sse)
plt.title('elbow')
plt.xlabel('number')
plt.ylabel('sse')
plt.show()
將陣列聚為三類
kmeans=kmeans(n_clusters=3,init='k-means++',random_state=42)
y_kmeans=kmeans.fit_predict(x)
print(y_kmeans)
視覺化
建立聚類後的標籤列,
airbnb_new['cluster']=kmeans.labels_
sns.scatterplot(x='age',y='ios',hue='cluster',data=airbnb_new)
聚類後describe資料的分布情況
airbnb_new.groupby(['cluster'])['age'].describe()
模型結果評價
呼叫metrics庫的輪廓係數silhouette coefficient 評價
【-1,1】 評分越高,結果越好
from sklearn.metrics import silhouette_score
x_cluster=kmeans.fit_predict(x)
score=silhouette_score(x,x_cluster)
print(score)
Python KMeans聚類問題分析
今天用python實現了一下簡單的聚類分析,順便熟悉了numpy陣列操作和繪圖的一些技巧,在這裡做個記錄。from pylab import from sklearn.cluster import kmeans 利用numpy.append 函式實現matlab多維陣列合併的效果,axis 引數值為...
聚類之層次聚類 基於劃分的聚類(
目錄 一層次聚類 層次聚類的原理及分類 層次聚類的流程 層次聚類的優缺點 二劃分聚類法k means kmeans演算法的原理 k均值的優缺點及分類 k means與dbscan的區別 k means注意問題 三基於密度的聚類 dbscan的概念 簇的生成原理及過程 根據資料點的密度分為三類點 db...
k means聚類,密度聚類,層次聚類優缺點
k means 優點 1,簡單,易於理解和實現 2,時間複雜度低 缺點 1,需要對均值給出定義,2,需要指定要聚類的數目 3,一些過大的異常值會帶來很大影響 4,演算法對初始選值敏感 5,適合球形聚類 層次聚類 優點 1,距離和規則的相似度容易定義,限制少 2,不需要預先制定聚類數 3,可以發現類的...