機器學習聚類

2021-10-24 01:40:54 字數 3908 閱讀 7145

模型調參

from sklearn.cluster import dbscan

# 構建空列表,用於儲存不同引數組合下的結果

res =

# 迭代不同的eps值

for eps in np.arange(

0.001,1

,0.05):

# 迭代不同的min_samples值

for min_samples in

range(2

,10):

dbscan = dbscan(eps = eps, min_samples = min_samples)

# 模型擬合

dbscan.fit(train2)

# 統計各引數組合下的聚類個數(-1表示異常點)

n_clusters =

len(

[i for i in

set(dbscan.labels_)

if i !=-1

])# 異常點的個數

outliners = np.

sum(np.where(dbscan.labels_ ==-1

,1,0

))# 統計每個簇的樣本個數

stats =

str(pd.series(

[i for i in dbscan.labels_ if i !=-1

]).value_counts(

).values)

)# 將迭代後的結果儲存到資料框中

訓練模型

模型評估:

from sklearn import metrics

score = metrics.silhouette_score(sop1,a.cluster_db)

print

(score)

尋找最優k值

from sklearn.cluster import kmeans

from sklearn import metrics

# 構造自定義函式,用於繪製不同k值和對應輪廓係數的折線圖

defk_silhouette

(x, clusters)

: k =

range(2

,clusters+1)

# 構建空列表,用於儲存個中簇數下的輪廓係數

s =for k in k:

kmeans = kmeans(n_clusters=k)

kmeans.fit(x)

labels = kmeans.labels_

# 呼叫字模組metrics中的silhouette_score函式,計算輪廓係數

'euclidean'))

# 中文和負號的正常顯示

plt.rcparams[

'font.sans-serif']=

[u'simhei'

] plt.rcparams[

'axes.unicode_minus']=

false

# 設定繪圖風格

plt.style.use(

'ggplot'

)# 繪製k的個數與輪廓係數的關係

plt.plot(k, s,

'b*-'

) plt.xlabel(

'簇的個數'

) plt.ylabel(

'輪廓係數'

)# 顯示圖形

plt.show(

)# 自定義函式的呼叫(指定原始資料和選取範圍)

抽取部分資料檢視聚類效果

from sklearn.cluster import kmeans

estimator = kmeans(n_clusters=3)

#構造聚類器,構造乙個聚類數為3的聚類器

estimator.fit(train2)

#聚類label_pred = estimator.labels_ #獲取聚類標籤

centroids = estimator.cluster_centers_ #獲取聚類中心

inertia = estimator.inertia_ # 獲取聚類準則的總和

mark =

['or'

,'ob'

,'og'

,'ok'

,'^r'

,'+r'

,'sr'

,'dr',',

'pr'

]#這裡'or'代表中的'o'代表畫圈,'r'代表顏色為紅色,後面的依次類推

模型評估

from sklearn.cluster import kmeans

from sklearn import metrics

estimator = kmeans(n_clusters=3)#構造聚類器,構造乙個聚類數為3的聚類器

w=estimator.fit(train2)#聚類

label_pred = w.labels_ #獲取聚類標籤

centroids = w.cluster_centers_ #獲取聚類中心

inertia = w.inertia_ # 獲取聚類準則的總和

train2['cluster_db']=w.labels_

a=train2.sort_values('cluster_db')

score = metrics.silhouette_score(train2,train2.cluster_db)

print(score)

機器學習 聚類

聚類的過程是將樣本分類的過程,聚類屬於無監督學習,資料中沒有label,訓練之前並不知道樣本屬於哪乙個類別,需要借鑑經驗值。kmeans聚類 模型假設 資料的分布是k個 sigma 相同的高斯分布的,每個分布裡有 n 1,n 2,n k 個樣本,其均值分別是 mu 1,mu 2,mu k 那麼每個樣...

機器學習 聚類 密度聚類演算法

一,介紹 密度聚類演算法有多種,我們這裡主要介紹一種著名的密度聚類演算法 dbscan。首先,我們通過下圖了解幾個概念 1 鄰域,與中心x距離不超過 距離,如上圖紅色虛線圈 2 核心物件,確定聚類的初始點,如上圖的x1 3 密度直達,在聚類核心物件鄰域內的點,如上圖x2由x1密度直達 4 密度可達,...

機器學習(聚類 一 )

演算法起源於分類學,物以類聚,人以群分。人們在以前都是靠經驗來分類,但是當東西一多,就很難再進行靠經驗和知識進行分類而且分類的不准,所以利用數學進行定量的分類。資料探勘,我們可以通過聚類來分別出不同的人群,概括出每一類消費者的消費模式。1 劃分法 k means演算法 k medoids演算法 cl...