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

python kmeans聚類簡單介紹和實現(xiàn)代碼

 更新時間:2018年02月23日 10:42:39   作者:Jason____zhou  
這篇文章主要為大家詳細(xì)介紹了python kmeans聚類簡單介紹和實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下

一、k均值聚類的簡單介紹

假設(shè)樣本分為c類,每個類均存在一個中心點,通過隨機(jī)生成c個中心點進(jìn)行迭代,計算每個樣本點到類中心的距離(可以自定義、常用的是歐式距離)  

將該樣本點歸入到最短距離所在的類,重新計算聚類中心,進(jìn)行下次的重新劃分樣本,最終類中心不改變時,聚類完成   

二、偽代碼  

三、python代碼實現(xiàn)  

#!/usr/bin/env python 
# coding=utf-8 
 
import numpy as np 
import random 
import matplotlib.pyplot as plt 
 
#data:numpy.array dataset 
#k the number of cluster 
def k_means(data,k): 
   
  #random generate cluster_center 
  sample_num=data.shape[0] 
  center_index=random.sample(range(sample_num),k) 
  cluster_cen=data[center_index,:] 
 
  is_change=1 
  cat=np.zeros(sample_num) 
   
 
  while is_change: 
    is_change=0 
 
    for i in range(sample_num): 
      min_distance=100000 
      min_index=0 
 
      for j in range(k): 
        sub_data=data[i,:]-cluster_cen[j,:] 
        distance=np.inner(sub_data,sub_data) 
        if distance<min_distance: 
          min_distance=distance 
          min_index=j+1 
 
      if cat[i]!=min_index: 
        is_change=1 
        cat[i]=min_index 
    for j in range(k): 
      cluster_cen[j]=np.mean(data[cat==(j+1)],axis=0) 
 
  return cat,cluster_cen 
 
 
if __name__=='__main__': 
 
  #generate data 
  cov=[[1,0],[0,1]] 
  mean1=[1,-1] 
  x1=np.random.multivariate_normal(mean1,cov,200) 
 
  mean2=[5.5,-4.5] 
  x2=np.random.multivariate_normal(mean2,cov,200) 
 
  mean3=[1,4] 
  x3=np.random.multivariate_normal(mean3,cov,200) 
 
  mean4=[6,4.5] 
  x4=np.random.multivariate_normal(mean4,cov,200) 
 
  mean5=[9,0.0] 
  x5=np.random.multivariate_normal(mean5,cov,200) 
   
  X=np.vstack((x1,x2,x3,x4,x5)) 
   
  #data distribution 
  fig1=plt.figure(1) 
  p1=plt.scatter(x1[:,0],x1[:,1],marker='o',color='r',label='x1') 
  p2=plt.scatter(x2[:,0],x2[:,1],marker='+',color='m',label='x2') 
  p3=plt.scatter(x3[:,0],x3[:,1],marker='x',color='b',label='x3') 
  p4=plt.scatter(x4[:,0],x4[:,1],marker='*',color='g',label='x4') 
  p5=plt.scatter(x5[:,0],x4[:,1],marker='+',color='y',label='x5') 
  plt.title('original data') 
  plt.legend(loc='upper right') 
   
  cat,cluster_cen=k_means(X,5)    
 
  print 'the number of cluster 1:',sum(cat==1) 
  print 'the number of cluster 2:',sum(cat==2) 
  print 'the number of cluster 3:',sum(cat==3) 
  print 'the number of cluster 4:',sum(cat==4) 
  print 'the number of cluster 5:',sum(cat==5) 
 
   
  fig2=plt.figure(2) 
  for i,m,lo,label in zip(range(5),['o','+','x','*','+'],['r','m','b','g','y'],['x1','x2','x3','x4','x5']): 
 
    p=plt.scatter(X[cat==(i+1),0],X[cat==(i+1),1],marker=m,color=lo,label=label) 
  plt.legend(loc='upper right') 
  plt.title('the clustering result') 
  plt.show() 

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python多線程并發(fā)實例及其優(yōu)化

    python多線程并發(fā)實例及其優(yōu)化

    這篇文章主要介紹了python多線程并發(fā)實例及其優(yōu)化,threading是擴(kuò)展模塊,在thread的基礎(chǔ)上進(jìn)行了封裝及改進(jìn)。所以只需要使用threading這個模塊就能完成并發(fā)的測試,需要的朋友可以參考下
    2019-06-06
  • 使用Python實現(xiàn)火車票查詢系統(tǒng)(帶界面)

    使用Python實現(xiàn)火車票查詢系統(tǒng)(帶界面)

    周末、假期來了,七夕也快到了,又到一年中最一票難求的時候了!本文將用Python制作一個簡單的火車票查詢系統(tǒng),感興趣的可以了解一下
    2022-07-07
  • 最炫Python煙花代碼全解析

    最炫Python煙花代碼全解析

    2022虎年新年即將來臨,小編為大家?guī)砹艘粋€利用Python編寫的虎年煙花特效,堪稱全網(wǎng)最絢爛,文中的示例代碼簡潔易懂,感興趣的同學(xué)可以動手試一試
    2022-02-02
  • Python高階函數(shù)與裝飾器函數(shù)的深入講解

    Python高階函數(shù)與裝飾器函數(shù)的深入講解

    這篇文章主要給大家介紹了關(guān)于Python高階函數(shù)與裝飾器函數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Pygame游戲開發(fā)之太空射擊實戰(zhàn)盾牌篇

    Pygame游戲開發(fā)之太空射擊實戰(zhàn)盾牌篇

    相信大多數(shù)8090后都玩過太空射擊游戲,在過去游戲不多的年代太空射擊自然屬于經(jīng)典好玩的一款了,今天我們來自己動手實現(xiàn)它,在編寫學(xué)習(xí)中回顧過往展望未來,在本課中,我們將為玩家添加一個盾牌以及一個用于顯示盾牌等級的欄
    2022-08-08
  • Python matplotlib修改默認(rèn)字體的操作

    Python matplotlib修改默認(rèn)字體的操作

    這篇文章主要介紹了Python matplotlib修改默認(rèn)字體的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • 基于Python實現(xiàn)自制CV剪貼板功能

    基于Python實現(xiàn)自制CV剪貼板功能

    云桌面的win10不能調(diào)出剪貼板,對于CV工程師來說十分不方便,所以這篇文章主要介紹了如何使用Python實現(xiàn)一個CV剪貼板,提升常用語句的復(fù)制粘貼效率,感興趣的可以了解下
    2024-02-02
  • Python排序函數(shù)的使用方法詳解

    Python排序函數(shù)的使用方法詳解

    這篇文章主要給大家介紹了關(guān)于Python排序函數(shù)使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Python中Django框架利用url來控制登錄的方法

    Python中Django框架利用url來控制登錄的方法

    這篇文章主要介紹了Python中Django框架利用url來控制登錄的方法,實例分析了Django框架實現(xiàn)URL登陸的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • Python編程之微信推送模板消息功能示例

    Python編程之微信推送模板消息功能示例

    這篇文章主要介紹了Python編程之微信推送模板消息功能,結(jié)合實例形式分析了Python微信推送消息接口的調(diào)用相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08

最新評論

江北区| 普陀区| 彰化县| 静宁县| 泸溪县| 沙雅县| 油尖旺区| 堆龙德庆县| 眉山市| 宁夏| 南漳县| 自贡市| 龙门县| 安康市| 页游| 安泽县| 阜新市| 青铜峡市| 平泉县| 涞源县| 沁水县| 凌源市| 宕昌县| 涞水县| 宁陕县| 丰顺县| 安新县| 九龙城区| 云浮市| 香港 | 抚宁县| 西乡县| 巴林左旗| 盐津县| 秦皇岛市| 邵阳市| 沙湾县| 马山县| 化隆| 册亨县| 九江县|