亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python實現(xiàn)k-means算法

 更新時間:2018年02月23日 10:25:06   作者:the_Chain_Warden  
這篇文章主要為大家詳細介紹了Python實現(xiàn)k-means算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Python實現(xiàn)k-means算法的具體代碼,供大家參考,具體內(nèi)容如下

這也是周志華《機器學(xué)習(xí)》的習(xí)題9.4。

數(shù)據(jù)集是西瓜數(shù)據(jù)集4.0,如下

編號,密度,含糖率
1,0.697,0.46
2,0.774,0.376
3,0.634,0.264
4,0.608,0.318
5,0.556,0.215
6,0.403,0.237
7,0.481,0.149
8,0.437,0.211
9,0.666,0.091
10,0.243,0.267
11,0.245,0.057
12,0.343,0.099
13,0.639,0.161
14,0.657,0.198
15,0.36,0.37
16,0.593,0.042
17,0.719,0.103
18,0.359,0.188
19,0.339,0.241
20,0.282,0.257
21,0.784,0.232
22,0.714,0.346
23,0.483,0.312
24,0.478,0.437
25,0.525,0.369
26,0.751,0.489
27,0.532,0.472
28,0.473,0.376
29,0.725,0.445
30,0.446,0.459

算法很簡單,就不解釋了,代碼也不復(fù)雜,直接放上來:

# -*- coding: utf-8 -*- 
"""Excercise 9.4"""
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import sys
import random

data = pd.read_csv(filepath_or_buffer = '../dataset/watermelon4.0.csv', sep = ',')[["密度","含糖率"]].values

########################################## K-means ####################################### 
k = int(sys.argv[1])
#Randomly choose k samples from data as mean vectors
mean_vectors = random.sample(data,k)

def dist(p1,p2):
  return np.sqrt(sum((p1-p2)*(p1-p2)))
while True:
  print mean_vectors
  clusters = map ((lambda x:[x]), mean_vectors) 
  for sample in data:
    distances = map((lambda m: dist(sample,m)), mean_vectors) 
    min_index = distances.index(min(distances))
    clusters[min_index].append(sample)
  new_mean_vectors = []
  for c,v in zip(clusters,mean_vectors):
    new_mean_vector = sum(c)/len(c)
    #If the difference betweenthe new mean vector and the old mean vector is less than 0.0001
    #then do not updata the mean vector
    if all(np.divide((new_mean_vector-v),v) < np.array([0.0001,0.0001]) ):
      new_mean_vectors.append(v)  
    else:
      new_mean_vectors.append(new_mean_vector)  
  if np.array_equal(mean_vectors,new_mean_vectors):
    break
  else:
    mean_vectors = new_mean_vectors 

#Show the clustering result
total_colors = ['r','y','g','b','c','m','k']
colors = random.sample(total_colors,k)
for cluster,color in zip(clusters,colors):
  density = map(lambda arr:arr[0],cluster)
  sugar_content = map(lambda arr:arr[1],cluster)
  plt.scatter(density,sugar_content,c = color)
plt.show()

運行方式:在命令行輸入 python k_means.py 4。其中4就是k。
下面是k分別等于3,4,5的運行結(jié)果,因為一開始的均值向量是隨機的,所以每次運行結(jié)果會有不同。

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

相關(guān)文章

  • python+selenium+PhantomJS抓取網(wǎng)頁動態(tài)加載內(nèi)容

    python+selenium+PhantomJS抓取網(wǎng)頁動態(tài)加載內(nèi)容

    一般我們使用python的第三方庫requests及框架scrapy來爬取網(wǎng)上的資源,但是設(shè)計javascript渲染的頁面卻不能抓取,此 時,我們使用web自動化測試化工具Selenium+無界面瀏覽器PhantomJS來抓取javascript渲染的頁面,下面實現(xiàn)一個簡單的爬取
    2020-02-02
  • Python3 + Appium + 安卓模擬器實現(xiàn)APP自動化測試并生成測試報告

    Python3 + Appium + 安卓模擬器實現(xiàn)APP自動化測試并生成測試報告

    這篇文章主要介紹了Python3 + Appium + 安卓模擬器實現(xiàn)APP自動化測試并生成測試報告,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • python中的格式化輸出方法

    python中的格式化輸出方法

    這篇文章主要介紹了python中的格式化輸出方法,?數(shù)據(jù)可以以人類可讀的形式打印,或?qū)懭胛募怨硎褂?,甚至可以以某種其他指定的形式。?用戶通常希望對輸出格式進行更多控制,而不是簡單地打印以空格分隔的值,更多格式化輸出方式需要的朋友可以參考下面文章內(nèi)容
    2022-03-03
  • Python用list或dict字段模式讀取文件的方法

    Python用list或dict字段模式讀取文件的方法

    這篇文章主要給大家介紹了Python利用list字段模式或者dict字段模式讀取文件的方法,文中給出了詳細的介紹和示例代碼,相信對大家的理解和學(xué)習(xí)具有一定的參考借鑒價值,有需要的朋友可以跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-01-01
  • 淺談pytorch池化maxpool2D注意事項

    淺談pytorch池化maxpool2D注意事項

    今天小編就為大家分享一篇淺談pytorch池化maxpool2D注意事項,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • python 實現(xiàn)刪除文件或文件夾實例詳解

    python 實現(xiàn)刪除文件或文件夾實例詳解

    這篇文章主要介紹了python 實現(xiàn)刪除文件或文件夾實例詳解的相關(guān)資料,這里附有實例代碼,需要的朋友可以參考下
    2016-12-12
  • Python Pandas模塊實現(xiàn)數(shù)據(jù)的統(tǒng)計分析的方法

    Python Pandas模塊實現(xiàn)數(shù)據(jù)的統(tǒng)計分析的方法

    在上一篇講了幾個常用的“Pandas”函數(shù)之后,今天小編就為大家介紹一下在數(shù)據(jù)統(tǒng)計分析當中經(jīng)常用到的“Pandas”函數(shù)方法,希望能對大家有所收獲,需要的朋友可以參考下
    2021-06-06
  • Python控制Firefox方法總結(jié)

    Python控制Firefox方法總結(jié)

    在本文里我們給大家分享了關(guān)于如何用Python控制Firefox的知識點總結(jié),有此需要的朋友們可以參閱下。
    2019-06-06
  • postman模擬訪問具有Session的post請求方法

    postman模擬訪問具有Session的post請求方法

    今天小編就為大家分享一篇postman模擬訪問具有Session的post請求方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • matplotlib繪制多子圖共享鼠標光標的方法示例

    matplotlib繪制多子圖共享鼠標光標的方法示例

    這篇文章主要介紹了matplotlib繪制多子圖共享鼠標光標的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01

最新評論