最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Kmeans均值聚類算法原理以及Python如何實(shí)現(xiàn)

 更新時(shí)間:2020年09月26日 15:26:37   作者:Geeksongs  
這個(gè)算法中文名為k均值聚類算法,首先我們?cè)诙S的特殊條件下討論其實(shí)現(xiàn)的過(guò)程,方便大家理解。

第一步.隨機(jī)生成質(zhì)心

由于這是一個(gè)無(wú)監(jiān)督學(xué)習(xí)的算法,因此我們首先在一個(gè)二維的坐標(biāo)軸下隨機(jī)給定一堆點(diǎn),并隨即給定兩個(gè)質(zhì)心,我們這個(gè)算法的目的就是將這一堆點(diǎn)根據(jù)它們自身的坐標(biāo)特征分為兩類,因此選取了兩個(gè)質(zhì)心,什么時(shí)候這一堆點(diǎn)能夠根據(jù)這兩個(gè)質(zhì)心分為兩堆就對(duì)了。如下圖所示:

第二步.根據(jù)距離進(jìn)行分類

紅色和藍(lán)色的點(diǎn)代表了我們隨機(jī)選取的質(zhì)心。既然我們要讓這一堆點(diǎn)的分為兩堆,且讓分好的每一堆點(diǎn)離其質(zhì)心最近的話,我們首先先求出每一個(gè)點(diǎn)離質(zhì)心的距離。假如說(shuō)有一個(gè)點(diǎn)離紅色的質(zhì)心比例藍(lán)色的質(zhì)心更近,那么我們則將這個(gè)點(diǎn)歸類為紅色質(zhì)心這一類,反之則歸于藍(lán)色質(zhì)心這一類,如圖所示:

第三步.求出同一類點(diǎn)的均值,更新質(zhì)心位置

在這一步當(dāng)中,我們將同一類點(diǎn)的x\y的值進(jìn)行平均,求出所有點(diǎn)之和的平均值,這個(gè)值(x,y)則是我們新的質(zhì)心的位置,如圖所示:

我們可以看到,質(zhì)心的位置已經(jīng)發(fā)生了改變。

第四步.重復(fù)第二步,第三步

我們重復(fù)第二步和第三部的操作,不斷求出點(diǎn)對(duì)質(zhì)心的最小值之后進(jìn)行分類,分類之后再更新質(zhì)心的位置,直到得到迭代次數(shù)的上限(這個(gè)迭代次數(shù)是可以我們自己設(shè)定的,比如10000次),或者在做了n次迭代之后,最后兩次迭代質(zhì)心的位置已經(jīng)保持不變,如下圖所示:

這個(gè)時(shí)候我們就將這一堆點(diǎn)按照它們的特征在沒(méi)有監(jiān)督的條件下,分成了兩類了??!

五.如果面對(duì)多個(gè)特征確定的一個(gè)點(diǎn)的情況,又該如何實(shí)現(xiàn)聚類呢?

首先我們引入一個(gè)概念,那就是歐式距離,歐式距離是這樣定義的,很容易理解:

很顯然,歐式距離d(xi,xj)等于我們每一個(gè)點(diǎn)的特征去減去另一個(gè)點(diǎn)在該維度下的距離的平方和再開(kāi)根號(hào),十分容易理解。

我們也可以用另一種方式來(lái)理解kmeans算法,那就是使某一個(gè)點(diǎn)的和另一些點(diǎn)的方差做到最小則實(shí)現(xiàn)了聚類,如下圖所示:

得解!

六:代碼實(shí)現(xiàn)

我們現(xiàn)在使用Python語(yǔ)言來(lái)實(shí)現(xiàn)這個(gè)kmeans均值算法,首先我們先導(dǎo)入一個(gè)名叫make_blobs的數(shù)據(jù)集datasets,然后分別使用兩個(gè)變量X,和y進(jìn)行接收。X表示我們得到的數(shù)據(jù),y表示這個(gè)數(shù)據(jù)應(yīng)該被分類到的是哪一個(gè)類別當(dāng)中,當(dāng)然在我們實(shí)際的數(shù)據(jù)當(dāng)中不會(huì)告訴我們哪個(gè)數(shù)據(jù)分在了哪一個(gè)類別當(dāng)中,只會(huì)有X當(dāng)中數(shù)據(jù)。在這里寫代碼的時(shí)候比較特殊,make_blobs庫(kù)要求我們必須接受這兩個(gè)參數(shù),不能夠只接受X這個(gè)數(shù)據(jù)參數(shù),代碼如下

plt.figure(figsize=(15,15))#規(guī)定我們繪圖的大小為12*12

X, y=make_blobs(n_samples=1600,random_state=170)#一共取用1600個(gè)sample,同時(shí)狀態(tài)設(shè)定為隨機(jī)
#不知道這個(gè)狀態(tài)隨機(jī)是什么意思,只能查有關(guān)這個(gè)庫(kù)的官方文檔,同時(shí)這個(gè)數(shù)據(jù)集規(guī)定了是具備三個(gè)數(shù)據(jù)中心,也就是三個(gè)簇
y_pred=KMeans(n_clusters=3,random_state=170).fit_predict(X)

plt.subplot(221)#表示四個(gè)方格當(dāng)中的第一格
plt.scatter(X[:,0],X[:,1],c=y_pred)#表示數(shù)據(jù)的第0個(gè)和第1個(gè)維度,同時(shí)數(shù)據(jù)的colour與predict的結(jié)果有關(guān)
plt.title("The result of the Kmeans")

plt.subplot(222)#表示四個(gè)方格當(dāng)中的第一格
plt.scatter(X[:,0],X[:,1],c=y)
plt.title("The Real result of the Kmeans")

array=np.array([[0.60834549,-0.63667341],[-0.40887178,-0.85253229]])
lashen=np.dot(X,array)
y_pred=KMeans(n_clusters=3,random_state=170).fit_predict(lashen)

plt.subplot(223)#表示四個(gè)方格當(dāng)中的第一格
plt.scatter(lashen[:,0],lashen[:,1],c=y_pred)#表示數(shù)據(jù)的第0個(gè)和第1個(gè)維度,同時(shí)數(shù)據(jù)的colour與predict的結(jié)果有關(guān)
plt.title("The Real result of the tranfored data")

我們?cè)谑褂胹catter函數(shù)進(jìn)行繪圖的時(shí)候會(huì)根據(jù)我們數(shù)據(jù)結(jié)的形狀來(lái)編寫相應(yīng)的代碼,這里我們所拿到的X數(shù)據(jù)集的行數(shù)是我們所指定的1600行,因?yàn)槲覀円还材玫搅?600個(gè)數(shù)據(jù),每一個(gè)數(shù)據(jù)僅有兩個(gè)特征,也就是在XY軸當(dāng)中的坐標(biāo),因此X是一個(gè)二維的ndarray對(duì)象(X是numpy當(dāng)中的ndarray對(duì)象),我們可以打印出來(lái)看看這個(gè)數(shù)據(jù)的構(gòu)成,如下圖所示:

同時(shí)我們也可以看到y(tǒng)也是ndarray對(duì)象,由于我們?cè)诓杉瘮?shù)據(jù)的時(shí)候僅僅接受了3個(gè)簇,make_blobs默認(rèn)接受的是三個(gè)簇(或稱cluster)的緣故,因此最后y的值只有0,1,2這三種可能。我們通過(guò)matplotlib繪圖,繪制出我們分類的結(jié)果圖,也就是上述代碼的運(yùn)行結(jié)果如下:

以上就是Kmeans均值聚類算法原理以及Python如何實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于Kmeans均值聚類算法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python計(jì)算任意多邊形間的重疊面積的示例代碼

    Python計(jì)算任意多邊形間的重疊面積的示例代碼

    最近有個(gè)作業(yè),給定的數(shù)據(jù)為多邊形的各個(gè)頂點(diǎn),為N*2的矩陣,N 為多邊形的頂點(diǎn)個(gè)數(shù),計(jì)算任意兩個(gè)多邊形重疊面積計(jì)算,本文就來(lái)詳細(xì)的介紹一下
    2021-08-08
  • Python3.8中如何使用print打印變量

    Python3.8中如何使用print打印變量

    這篇文章主要介紹了Python3.8中如何使用print打印變量問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Python 3.x 判斷 dict 是否包含某鍵值的實(shí)例講解

    Python 3.x 判斷 dict 是否包含某鍵值的實(shí)例講解

    今天小編就為大家分享一篇Python 3.x 判斷 dict 是否包含某鍵值的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Python實(shí)現(xiàn)查找二叉搜索樹(shù)第k大的節(jié)點(diǎn)功能示例

    Python實(shí)現(xiàn)查找二叉搜索樹(shù)第k大的節(jié)點(diǎn)功能示例

    這篇文章主要介紹了Python實(shí)現(xiàn)查找二叉搜索樹(shù)第k大的節(jié)點(diǎn)功能,結(jié)合實(shí)例形式分析了Python二叉搜索樹(shù)的定義、查找、遍歷等相關(guān)操作技巧,需要的朋友可以參考下
    2019-01-01
  • 安裝出現(xiàn):Requirement?already?satisfied解決辦法

    安裝出現(xiàn):Requirement?already?satisfied解決辦法

    最近pip install的時(shí)候報(bào)錯(cuò),一大串Requirement already satisfied,所以下面這篇文章主要給大家介紹了關(guān)于安裝出現(xiàn):Requirement?already?satisfied的解決辦法,需要的朋友可以參考下
    2022-08-08
  • Python3爬樓梯算法示例

    Python3爬樓梯算法示例

    這篇文章主要介紹了Python3爬樓梯算法,涉及Python基于面向?qū)ο蟮淖址闅v、切片、運(yùn)算等相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • python中使用urllib2偽造HTTP報(bào)頭的2個(gè)方法

    python中使用urllib2偽造HTTP報(bào)頭的2個(gè)方法

    這篇文章主要介紹了python中使用urllib2偽造HTTP報(bào)頭的2個(gè)方法,即偽造http頭信息,需要的朋友可以參考下
    2014-07-07
  • 使用Python與MQTT實(shí)現(xiàn)異步通信功能

    使用Python與MQTT實(shí)現(xiàn)異步通信功能

    物聯(lián)網(wǎng)(IoT)和實(shí)時(shí)通信的世界中,消息隊(duì)列遙測(cè)傳輸(MQTT)協(xié)議因其輕量級(jí)、可靠性和實(shí)時(shí)性成為廣受歡迎的選擇,本文給大家介紹了使用Python與MQTT實(shí)現(xiàn)異步通信功能,需要的朋友可以參考下
    2024-12-12
  • Python實(shí)現(xiàn)獲取漢字偏旁部首的方法示例【測(cè)試可用】

    Python實(shí)現(xiàn)獲取漢字偏旁部首的方法示例【測(cè)試可用】

    這篇文章主要介紹了Python實(shí)現(xiàn)獲取漢字偏旁部首的方法,涉及Python基于第三方模塊進(jìn)行漢字處理的相關(guān)操作技巧,需要的朋友可以參考下
    2018-12-12
  • Python抖音無(wú)水印視頻下載方法

    Python抖音無(wú)水印視頻下載方法

    這篇文章主要介紹了用Python下載抖音無(wú)水印視頻的方法,本文通過(guò)圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12

最新評(píng)論

安溪县| 南开区| 兴义市| 鄯善县| 乌兰县| 洪湖市| 永和县| 始兴县| 时尚| 玉环县| 吴堡县| 江山市| 北安市| 贞丰县| 山西省| 建瓯市| 灵宝市| 灵寿县| 顺平县| 罗田县| 云南省| 台南县| 凉山| 邢台市| 喀喇沁旗| 柳江县| 南部县| 衡阳县| 全南县| 瑞金市| 泰来县| 兴隆县| 北辰区| 凤庆县| 麻江县| 罗甸县| 江北区| 孝昌县| 溧阳市| 新竹县| 广宁县|