模型調參
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...