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

Python sklearn中的K-Means聚類(lèi)使用方法淺析

 更新時(shí)間:2022年12月20日 16:19:58   作者:微小冷  
這篇文章主要介紹了Python sklearn中的K-Means聚類(lèi)使用方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

初步認(rèn)識(shí)

k-means翻譯過(guò)來(lái)就是K均值聚類(lèi)算法,其目的是將樣本分割為k個(gè)簇,而這個(gè)k則是KMeans中最重要的參數(shù):n_clusters,默認(rèn)為8。

下面做一個(gè)最簡(jiǎn)單的聚類(lèi)

import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
X, y = make_blobs(1500)
fig = plt.figure()
for i in range(2):
    ax = fig.add_subplot(1,2,i+1)
    y = KMeans(i+2).fit_predict(X)
    plt.scatter(X[:, 0], X[:, 1], c=y)
plt.show()

其中,y是聚類(lèi)結(jié)果,其數(shù)值表示對(duì)應(yīng)位置X所屬類(lèi)號(hào)。

效果如圖所示,對(duì)于下面這組數(shù)據(jù)來(lái)說(shuō),顯然最好是分為兩類(lèi),但如果KMeansn_clusters設(shè)為3,那就會(huì)聚成3類(lèi)。

上面調(diào)用的KMeans是一個(gè)類(lèi),sklearn中同樣提供了函數(shù)形式的調(diào)用,其使用方法如下

from sklearn.cluster import k_means
cen, y, interia = k_means(X, 3)

其中,cen表示聚類(lèi)后,每一類(lèi)的質(zhì)心;y為聚類(lèi)后的標(biāo)簽;interia表示均方誤差之和。

初值選取

KMeans最重要的概念是簇,也就是被分割后的數(shù)據(jù)種類(lèi);而每個(gè)簇都有一個(gè)非常重要的點(diǎn),就是質(zhì)心。在設(shè)定好簇的個(gè)數(shù)之后,也就相當(dāng)于確定了質(zhì)心的個(gè)數(shù),而KMeans算法的基本流程是

  • 選擇k個(gè)點(diǎn)作為k個(gè)簇的初始質(zhì)心
  • 計(jì)算樣本到這k個(gè)質(zhì)心(簇)的距離,并將其劃入距離最近的簇中
  • 計(jì)算每個(gè)簇的均值,并使用該均值更新簇的質(zhì)心

重復(fù)上述2-3的操作,直到質(zhì)心區(qū)域穩(wěn)定或者達(dá)到最大迭代次數(shù)。

從這個(gè)流程可以看出來(lái),KMeans算法至少有兩個(gè)細(xì)節(jié)需要考慮,一個(gè)是初始化方案,另一個(gè)則是質(zhì)心更新的方案。

KMeans類(lèi)或者k_means函數(shù)中,提供了兩種初始化質(zhì)心方案,通過(guò)參數(shù)init來(lái)控制

  • 'random':表示隨機(jī)生成k個(gè)質(zhì)心
  • 'k-means++':此為默認(rèn)值,通過(guò)kMeans++方法來(lái)初始化質(zhì)心。

kMeans++初始化質(zhì)心的流程如下

  • 隨機(jī)選擇1個(gè)點(diǎn)作為初始質(zhì)心 x 0
  • ?計(jì)算其他點(diǎn)到最近質(zhì)心的距離
  • 假定現(xiàn)有 n n n個(gè)質(zhì)心了,那么選擇距離當(dāng)前質(zhì)心較遠(yuǎn)的點(diǎn)作為下一個(gè)質(zhì)心 x n x_n xn?

重復(fù)步驟2和3,直到質(zhì)心個(gè)數(shù)達(dá)到 k k k個(gè)。

若希望直接調(diào)用kMeans++函數(shù),則可使用kmeans_plusplus。

小批

sklearn提供了KMeans的一個(gè)變種MiniBatchKMeans,可在每次訓(xùn)練迭代中隨機(jī)抽樣,這種小批量的訓(xùn)練過(guò)程大大減少了運(yùn)算時(shí)間。

當(dāng)樣本量非常巨大時(shí),小批KMeans的優(yōu)勢(shì)是非常明顯的

from sklearn.cluster import MiniBatchKMeans
import time
ys, xs = np.indices([4,4])*6
cens = list(zip(xs.reshape(-1), ys.reshape(-1)))
X, y = make_blobs(100000,centers=cens)
km = KMeans(16)
mbk = MiniBatchKMeans(16)
def test(func, value):
    t = time.time()
    func(value)
    print("耗時(shí)", time.time()-t)
test(km.fit_predict, X)
# 耗時(shí) 3.2028110027313232
test(mbk.fit_predict, X)
# 耗時(shí) 0.2590029239654541

可見(jiàn)效果非常明顯,其中fit_predictpredict相似,但并沒(méi)有返回值,km.fit_predict(X)運(yùn)行之后,會(huì)更改km中的labels_屬性,此即分類(lèi)結(jié)果

fig = plt.figure()
ax = fig.add_subplot(1,2,1)
ax.scatter(X[:,0], X[:,1], c=km.labels_, 
    marker='.', alpha=0.5)
ax = fig.add_subplot(1,2,2)
ax.scatter(X[:,0], X[:,1], c=mbk.labels_, 
    marker='.', alpha=0.5)
plt.show()

效果如圖所示,可見(jiàn)小批的KMeans算法和KMeans算法從結(jié)果上來(lái)看區(qū)別不大。

到此這篇關(guān)于Python sklearn中的K-Means聚類(lèi)使用方法淺析的文章就介紹到這了,更多相關(guān)Python K-Means聚類(lèi)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 如何使用?profile?進(jìn)行python代碼性能分析

    如何使用?profile?進(jìn)行python代碼性能分析

    對(duì)代碼優(yōu)化的前提是需要了解性能瓶頸在什么地方,程序運(yùn)行的主要時(shí)間是消耗在哪里,對(duì)于比較復(fù)雜的代碼可以借助一些工具來(lái)定位,python?內(nèi)置了豐富的性能分析工具,本文介紹如何使用profile進(jìn)行python代碼性能分析,感興趣的朋友一起看看吧
    2024-12-12
  • python+splinter實(shí)現(xiàn)12306網(wǎng)站刷票并自動(dòng)購(gòu)票流程

    python+splinter實(shí)現(xiàn)12306網(wǎng)站刷票并自動(dòng)購(gòu)票流程

    這篇文章主要為大家詳細(xì)介紹了python+splinter實(shí)現(xiàn)12306網(wǎng)站刷票并自動(dòng)購(gòu)票流程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • wx.CheckBox創(chuàng)建復(fù)選框控件并響應(yīng)鼠標(biāo)點(diǎn)擊事件

    wx.CheckBox創(chuàng)建復(fù)選框控件并響應(yīng)鼠標(biāo)點(diǎn)擊事件

    這篇文章主要為大家詳細(xì)介紹了wx.CheckBox創(chuàng)建復(fù)選框控件并響應(yīng)鼠標(biāo)點(diǎn)擊事件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • PyTorch使用cpu加載模型運(yùn)算方式

    PyTorch使用cpu加載模型運(yùn)算方式

    今天小編就為大家分享一篇PyTorch使用cpu加載模型運(yùn)算方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • python中如何提高圖像質(zhì)量

    python中如何提高圖像質(zhì)量

    這篇文章主要介紹了python中如何提高圖像質(zhì)量問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Python腳本暴力破解柵欄密碼

    Python腳本暴力破解柵欄密碼

    在滲透測(cè)試當(dāng)中,免不了要進(jìn)行密碼破解。本文通過(guò)好幾種方法給大家介紹python密碼破解,有通用腳本,F(xiàn)TP暴力破解腳本,SSH暴力破解,TELNET密碼暴力破解,感興趣的朋友一起學(xué)習(xí)吧
    2015-10-10
  • Python的生成器函數(shù)詳解

    Python的生成器函數(shù)詳解

    這篇文章主要介紹了Python的生成器函數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 對(duì)于Python的Django框架使用的一些實(shí)用建議

    對(duì)于Python的Django框架使用的一些實(shí)用建議

    這篇文章主要介紹了對(duì)于Python的Django框架使用的一些實(shí)用建議,包括一些優(yōu)秀模塊的介紹,要的朋友可以參考下
    2015-04-04
  • Python字典創(chuàng)建 遍歷 添加等實(shí)用基礎(chǔ)操作技巧

    Python字典創(chuàng)建 遍歷 添加等實(shí)用基礎(chǔ)操作技巧

    字段是Python是字典中唯一的鍵-值類(lèi)型,本文講述了Python中字典如何創(chuàng)建 遍歷 添加等實(shí)用基礎(chǔ)操作技巧,內(nèi)容非?;A(chǔ)但非常重要,一定要熟練掌握
    2018-09-09
  • Python?數(shù)據(jù)庫(kù)操作SQL基礎(chǔ)

    Python?數(shù)據(jù)庫(kù)操作SQL基礎(chǔ)

    在本章節(jié)中,我們將討論?Python?數(shù)據(jù)庫(kù)操作的基礎(chǔ)知識(shí),重點(diǎn)關(guān)注?SQL即Structured?Query?Language,結(jié)構(gòu)化查詢(xún)語(yǔ)言,SQL?是用于管理關(guān)系型數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)編程語(yǔ)言,可以用來(lái)執(zhí)行數(shù)據(jù)定義、數(shù)據(jù)操作和數(shù)據(jù)控制等任務(wù)
    2023-06-06

最新評(píng)論

浠水县| 灵璧县| 奉化市| 永顺县| 区。| 碌曲县| 贺州市| 桓台县| 海城市| 西充县| 北票市| 信宜市| 镇沅| 响水县| 贵定县| 遂昌县| 嵊泗县| 招远市| 灵武市| 咸阳市| 吴堡县| 宁蒗| 军事| 甘德县| 汕头市| 紫阳县| 柘城县| 始兴县| 安泽县| 阳曲县| 石楼县| 社旗县| 巴里| 长治县| 天水市| 贡山| 澄江县| 赣榆县| 江永县| 马龙县| 张家港市|