国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python實現的Kmeans++算法實例

2020-02-23 05:22:19
字體:
來源:轉載
供稿:網友

1、從Kmeans說起

Kmeans是一個非常基礎的聚類算法,使用了迭代的思想,關于其原理這里不說了。下面說一下如何在matlab中使用kmeans算法。

創建7個二維的數據點:
代碼如下:x=[randn(3,2)*.4;randn(4,2)*.5+ones(4,1)*[4 4]];
使用kmeans函數:
代碼如下:class = kmeans(x, 2);
x是數據點,x的每一行代表一個數據;2指定要有2個中心點,也就是聚類結果要有2個簇。 class將是一個具有70個元素的列向量,這些元素依次對應70個數據點,元素值代表著其對應的數據點所處的分類號。某次運行后,class的值是:
代碼如下:
 2
 2
 2
 1
 1
 1
 1
這說明x的前三個數據點屬于簇2,而后四個數據點屬于簇1。 kmeans函數也可以像下面這樣使用:
代碼如下:
>> [class, C, sumd, D] = kmeans(x, 2)

class =
     2
     2
     2
     1
     1
     1
     1

C =
    4.0629    4.0845
   -0.1341    0.1201

sumd =
    1.2017
    0.2939

D =
   34.3727    0.0184
   29.5644    0.1858
   36.3511    0.0898
    0.1247   37.4801
    0.7537   24.0659
    0.1979   36.7666
    0.1256   36.2149

class依舊代表著每個數據點的分類;C包含最終的中心點,一行代表一個中心點;sumd代表著每個中心點與所屬簇內各個數據點的距離之和;D的每一行也對應一個數據點,行中的數值依次是該數據點與各個中心點之間的距離,Kmeans默認使用的距離是歐幾里得距離(參考資料[3])的平方值。kmeans函數使用的距離,也可以是曼哈頓距離(L1-距離),以及其他類型的距離,可以通過添加參數指定。

kmeans有幾個缺點(這在很多資料上都有說明):

1、最終簇的類別數目(即中心點或者說種子點的數目)k并不一定能事先知道,所以如何選一個合適的k的值是一個問題。
2、最開始的種子點的選擇的好壞會影響到聚類結果。
3、對噪聲和離群點敏感。
4、等等。

2、kmeans++算法的基本思路

kmeans++算法的主要工作體現在種子點的選擇上,基本原則是使得各個種子點之間的距離盡可能的大,但是又得排除噪聲的影響。 以下為基本思路:

1、從輸入的數據點集合(要求有k個聚類)中隨機選擇一個點作為第一個聚類中心
2、對于數據集中的每一個點x,計算它與最近聚類中心(指已選擇的聚類中心)的距離D(x)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 米易县| 广元市| 分宜县| 万山特区| 兴宁市| 天峨县| 盘锦市| 石阡县| 康平县| 昌都县| 汉中市| 莎车县| 正定县| 游戏| 镇康县| 连南| 陇川县| 湖州市| 西乌| 武陟县| 抚宁县| 宜阳县| 股票| 菏泽市| 泾源县| 阿巴嘎旗| 张家界市| 德令哈市| 洪泽县| 阜平县| 岑巩县| 蒲江县| 白城市| 临海市| 崇阳县| 朝阳市| 峡江县| 盐池县| 易门县| 余姚市| 晋中市|