知識點:
#**:coding = utf-8
import
numpy as np
import
pandas as pd
from sklearn.cluster import
kmeans
"""非監督學習:
聚類演算法:
1、隨機再資料當中抽取三個樣本,當作三個類別的中心點(k1,k2,k3)
2、計算其餘的點分別到這三個中心點的距離,每乙個樣本有三個距離(a,b,c)
從中選出距離最近的乙個點作為自己的標記形成三個族群
3、分別計算這三個族群的平均值,把三個平均值與之前的三個舊中心點進行比較
如果相同,結束聚類,如果不相同,把三個平均值當作新的中心點,重複第二步驟
聚類的作用:做在分類之前,利用分類的資料進行**
api:sklearn.cluster.kmeans(n_clusters=8,init=『k-means++』)
k-means聚類
n_clusters:開始的聚類中心數量
init:初始化方法,預設為'k-means ++』
labels_:預設標記的型別,可以和真實值比較(不是值比較)
聚類演算法評估標準:外部距離最大化,內部距離最小化
輪廓係數:1、計算樣本1到自身類別的點距離的平均值a_i ---->內部距離
2、計算樣本1分別到其他類別下的所有點的平均距離,b_1,c_1 ---->外部距離
取其中的最小的值當作b_i
3、sc_i = (bi-ai)/max(bi,ai)
若 b_i >> a_i ,sc_i = 1 完美
若 b_i << a_i ,sc_i = -1 最差
api:sklearn.metrics.silhouette_score(x, labels)
計算所有樣本的平均輪廓係數
x:特徵值
labels:被聚類標記的目標值
類別的多少,可以通過檢視輪廓係數判斷 sc_i > 0 ,則表明聚類效果不錯
"""
#輪廓係數:coding = utf-8
import
numpy as np
from sklearn.cluster import
kmeans
from sklearn.datasets import
make_blobs
import
matplotlib.pyplot as plt
from sklearn.metrics import
silhouette_score
defkmean():
"""kmean測試
:return:
"""#
資料處理
x_train, y_train = make_blobs(n_features=28)
(x_train.shape)
(type(x_train))
print(x_train[1])
(y_train)
#聚類km = kmeans(n_clusters=3)
km.fit(x_train)
y_pre =km.predict(x_train)
print("
**結果
",y_pre)
###############輪廓係數#####################
var =silhouette_score(x_train,y_pre)
print("
輪廓係數:
",var) #
輪廓係數越大,說明聚類的效果越好
############散點圖展示######################
plt.figure(figsize=(20,20))
#colored = ['orange', 'green', 'blue', 'purple']
colored = ['
orange
', '
green
', '
blue']
#colored = ['orange', 'green']
colr = [colored[i] for i in
y_pre]
plt.scatter(x_train[:, 1], x_train[:, 2],color=colr)
plt.show()
return
none
if__name__ == '
__main__':
kmean()
sklearn機器學習 聚類演算法K Means
n init k均值演算法將在不同質心種子下執行的次數。就慣性而言,最終結果將是n init個連續執行的最佳輸出。max iter 單次執行的k均值演算法的最大迭代次數。tol 預設 1e 4,關於frobenius範數的相對容差,該範數表示兩個連續迭代的聚類中心的差異,以宣告收斂。precompu...
K mean聚類演算法
k mean演算法屬於非監督類演算法,模型相對簡單。目標函式 j sum dj i 演算法 1 初始化k個點 2 樣本xi,到k個點的距離為 dk xi uk j argmin j dk xi屬於cj 3 更新引數 uk sum xi i sum i 重複2和3,終止條件j的變化很小或者uk變化很小...
機器學習(7)K mean聚類
聚類屬於非監督學習,k mean是聚類中經典演算法。非監督學習即是只有樣本沒有標籤。訓練資料集 其中x i rnx i rn 和聚類數量kk 將資料劃分為kk類 演算法輸出是kk個聚類中心 1,2,k 1,2,k和每個資料點x i x i 所在的分類。步驟 1,初始化k個聚類中心 1,2,k 1,2...