久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

    1. <style id="76ofp"></style>

      <style id="76ofp"></style>
      <rt id="76ofp"></rt>
      <form id="76ofp"><optgroup id="76ofp"></optgroup></form>
      1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

        手機(jī)站
        千鋒教育

        千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

        千鋒教育

        掃一掃進(jìn)入千鋒手機(jī)站

        領(lǐng)取全套視頻
        千鋒教育

        關(guān)注千鋒學(xué)習(xí)站小程序
        隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

        當(dāng)前位置:首頁  >  技術(shù)干貨  > Python中使用K-means算法

        Python中使用K-means算法

        來源:千鋒教育
        發(fā)布人:xqq
        時(shí)間: 2023-11-13 10:16:27 1699841787

        python中使用K-means算法

        k-means是機(jī)器學(xué)習(xí)中最常用的聚類算法,關(guān)于k-means算法的數(shù)學(xué)原理、算法、偽碼等已有相當(dāng)豐富的文獻(xiàn),在此不再贅述。

        1、調(diào)用以下庫

        importnumpyasnp#用于抽樣和生成隨機(jī)數(shù)

        fromsklearn.clusterimportKMeans#sklearn自帶的Kmeans算法,用于嚴(yán)重本文算法結(jié)果是否正確

        importmatplotlib.pyplotasplt#結(jié)果可視化

        importsys#需要用到sys.exit()函數(shù)

        若不需要驗(yàn)證聚類結(jié)果是否可以不使用Sklearn庫。

        2、生成用于訓(xùn)練的隨機(jī)數(shù)據(jù)

        np.set_printoptions(suppress=True)#令numpy的結(jié)果不以科學(xué)計(jì)數(shù)法的方式輸出

        Data=np.array([[1.0,2.0],[1.5,1.8],[3,4],[6,8],[8,8],[1,0.6],

        [9,11],[7,10]])#你也可以通過抽樣的方式來更快的獲得測(cè)試數(shù)據(jù)

        3、定義用于選擇隨機(jī)初始點(diǎn)和簇?cái)?shù)(k)的函數(shù)

        defK_means(data,k):

        globalMean

        mean=[]

        a=np.max(data[:,0])

        b=np.min(data[:,0])

        c=np.max(data[:,1])

        d=np.min(data[:,1])

        foriinrange(k):

        x=np.random.uniform(a,b,1)

        #此處返回array

        y=np.random.uniform(c,d,1)#此處返回array

        mean.append([float(x),float(y)])

        Mean=np.array(mean)

        returnMean

        在上面的代碼中,為了限定初始點(diǎn)(x,y)的位置不會(huì)超出樣本點(diǎn)的范圍,因此均勻抽樣的上下限是指訓(xùn)練數(shù)據(jù)(a,b)和(c,d)的最小橫距。

        4、定義可視化函數(shù),繪制測(cè)試數(shù)據(jù)散點(diǎn)圖

        defvision(data,cell):

        plt.figure(figsize=(12,6))

        ax1=plt.subplot(121)

        ax1.scatter(Data[:,0],Data[:,1])#原始數(shù)據(jù)散點(diǎn)圖

        ax1.scatter(point[:,0],point[:,0])#同時(shí)將隨機(jī)選取的初始點(diǎn)表示出來

        plt.xlabel("x")

        plt.ylabel("y")

        plt.title("scatterof"+"rural"+"data")

        ax2=plt.subplot(122)

        ax2.scatter(Data[:,0],Data[:,1])#原始數(shù)據(jù)散點(diǎn)圖

        ax2.scatter(data[:,0],data[:,1])#經(jīng)過迭代后最終確定的聚類點(diǎn)

        plt.xlabel("x")

        plt.ylabel("y")

        plt.title("scatterof"+cell+"data")

        plt.show()

        聚類結(jié)果的可視化對(duì)于判斷聚類結(jié)果的準(zhǔn)確性至關(guān)重要。

        5、定義迭代過程,通過不斷計(jì)算各個(gè)樣本對(duì)聚類點(diǎn)的歐式聚類,來不斷更新聚類點(diǎn)

        defiteration(Data,point):

        A=[]

        B=[]

        foriinrange(len(Data)):

        d1=np.sqrt(sum(pow(Data[i]-point[0],2)))

        d2=np.sqrt(sum(pow(Data[i]-point[1],2)))

        ifd1>d2:

        A.append(list(Data[i]))

        else:

        B.append(list(Data[i]))

        iflen(A)==len(Data)orlen(B)==len(Data):

        print("初始化錯(cuò)誤")

        sys.exit(0)

        new_x1=np.mean(np.array(A)[:,0])

        new_y1=np.mean(np.array(A)[:,1])

        new_x2=np.mean(np.array(B)[:,0])

        new_y2=np.mean(np.array(B)[:,1])

        new_point=np.array([[new_x1,new_y1],[new_x2,new_y2]])

        returnnew_point

        注意,上段代碼中加入了一個(gè)if語句

        iflen(A)==len(Data)orlen(B)==len(Data):

        print("初始化錯(cuò)誤")

        sys.exit(0)

        由于初始點(diǎn)是隨機(jī)產(chǎn)生的,所以這個(gè)條件語句是非常必要的,因此有可能所有的樣本點(diǎn)都只接近一個(gè)聚類中心而遠(yuǎn)離另一個(gè)聚類中心,這樣就不能形成兩個(gè)聚類中心,程序?qū)?huì)報(bào)錯(cuò),因此我們需要排除出現(xiàn)這種情況的可能性。一旦所有樣本點(diǎn)都接近一個(gè)聚類中心時(shí)令程序停止。

        以上就是Python中使用K-means算法,希望能對(duì)大家有所幫助!更多Python學(xué)習(xí)教程請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。

        聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
        10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
        請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
        免費(fèi)領(lǐng)取
        今日已有369人領(lǐng)取成功
        劉同學(xué) 138****2860 剛剛成功領(lǐng)取
        王同學(xué) 131****2015 剛剛成功領(lǐng)取
        張同學(xué) 133****4652 剛剛成功領(lǐng)取
        李同學(xué) 135****8607 剛剛成功領(lǐng)取
        楊同學(xué) 132****5667 剛剛成功領(lǐng)取
        岳同學(xué) 134****6652 剛剛成功領(lǐng)取
        梁同學(xué) 157****2950 剛剛成功領(lǐng)取
        劉同學(xué) 189****1015 剛剛成功領(lǐng)取
        張同學(xué) 155****4678 剛剛成功領(lǐng)取
        鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
        董同學(xué) 138****2867 剛剛成功領(lǐng)取
        周同學(xué) 136****3602 剛剛成功領(lǐng)取
        相關(guān)推薦HOT
        阜阳市| 株洲市| 鲁山县| 玉山县| 马尔康县| 永德县| 罗平县| 扬中市| 长岛县| 嘉禾县| 临颍县| 五家渠市| 连云港市| 洞口县| 蚌埠市| 响水县| 东兰县| 讷河市| 沅江市| 崇礼县| 濉溪县| 长垣县| 织金县| 疏勒县| 佛坪县| 黎平县| 乐山市| 秦皇岛市| 望都县| 密山市| 上栗县| 涪陵区| 西宁市| 葫芦岛市| 临澧县| 蒙城县| 卢湾区| 社会| 新野县| 温泉县| 漳平市|