參考部落格
基本思想:不斷更新質心,直到質心變化不大
基本思想:選取分簇之後的sse(到質心的距離平方和)是否最小分簇
基本思想:隨機選取小批量樣本,分配到最近的質心,更新質心,重複操作即可
def
standard_kmeans
(data_mat, k)
:"""
1. 初始化k個中心點
2. 計算每個樣本到中心點的距離,最近的就劃分為哪個族
3. 更新中心點
4. 判斷中心點是否有變化
5. 沒有變化,結束
6. 有變化,回到步驟2
:param data_mat:
:param k:
:return:
"""m, n = data_mat.shape
center_pt = rand_init_center(data_mat, k)
# 儲存每個點到屬於哪個族以及距離
cluster_assment = np.mat(np.zeros(
(m,2))
) change =
true
while change:
change =
false
# 遍歷所有樣本
for i in
range
(m):
min_dis_index =-1
min_dis = np.inf
# 遍歷所有的中心點
for j in
range
(k):
dis = computer_distance(center_pt[j,:]
, data_mat[i,:]
)if dis < min_dis:
min_dis = dis
min_dis_index = j
if cluster_assment[i,0]
!= min_dis_index:
change =
true
# 更新最近的中心點以及距離
cluster_assment[i,0]
= min_dis_index
cluster_assment[i,1]
= min_dis
# 如果中心沒有變化,那麼就可以退出了
ifnot change:
break
# 更新中心
for i in
range
(k):
# 提取i族的點
index = cluster_assment[:,
0].a == i
# nonzero返回乙個元組,[0] 是行號,[1]是列號
index = np.nonzero(index)
pts = data_mat[index[0]
,:]if pts.shape[0]
!=0: center_pt[i]
= np.mean(pts, axis=0)
return center_pt, cluster_assment
《機器學習實戰》筆記1 5 機器學習步驟
第一篇部落格,用來記錄 機器學習實戰 的學習筆記。從無序的資料中得到有序的資料 收集資料 爬蟲 公開資料來源 裝置輸入 血糖 頻率等 準備輸入資料 分析輸入資料 人工分析是否有缺失值 異常值等 如果資料 是可信任資料 或者在產品話系統中可略過此步驟 訓練演算法 在此步驟中機器學習才真正開始,是機器學...
機器學習筆記15 聚類
1.聚類的主要內容 決策樹 隨機森林 svm等演算法用於回歸和分類問題,都是給定輸入x,和對應的給定結果值y 有監督 通過訓練得到模型y f x 通過模型得到y的 值,比較 值與真實值。聚類 無監督 是對輸入的 x1,x2,xm 若x為n維,則該資料實際是m n維的矩陣,當對m個資料進行處理,分別歸...
機器學習12月15日學習日記
明天週六就要考六級了,前兩天沒有學習機器學習課程,六級複習的也不怎麼樣。今天看課程從邏輯回歸看,看了三個小節。做了一些筆記,以後準備在複習的時候用思維導圖將知識通一遍。第3周 邏輯回歸模型 3.11.負類 標記為0的類 2.正類 標記為1的類 以簡單的二元分類為例,其中y只能取兩個值0和1。3.2假...