91aaa在线国内观看,亚洲AV午夜福利精品一区二区,久久偷拍人视频,久久播这里有免费视播

<strong id="fvuar"></strong>

  • <sub id="fvuar"><dl id="fvuar"><em id="fvuar"></em></dl></sub>

    1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

      手機站
      千鋒教育

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

      千鋒教育

      掃一掃進入千鋒手機站

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

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

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

      Python中使用K-means算法

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

      python中使用K-means算法

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

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

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

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

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

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

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

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

      np.set_printoptions(suppress=True)#令numpy的結(jié)果不以科學(xué)計數(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]])#你也可以通過抽樣的方式來更快的獲得測試數(shù)據(jù)

      3、定義用于選擇隨機初始點和簇數(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

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

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

      defvision(data,cell):

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

      ax1=plt.subplot(121)

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

      ax1.scatter(point[:,0],point[:,0])#同時將隨機選取的初始點表示出來

      plt.xlabel("x")

      plt.ylabel("y")

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

      ax2=plt.subplot(122)

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

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

      plt.xlabel("x")

      plt.ylabel("y")

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

      plt.show()

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

      5、定義迭代過程,通過不斷計算各個樣本對聚類點的歐式聚類,來不斷更新聚類點

      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("初始化錯誤")

      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

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

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

      print("初始化錯誤")

      sys.exit(0)

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

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

      聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
      10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
      請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(nèi)將與您1V1溝通
      免費領(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