欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實現k-means算法

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

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

這也是周志華《機器學習》的習題9.4。

數據集是西瓜數據集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

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

# -*- 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的運行結果,因為一開始的均值向量是隨機的,所以每次運行結果會有不同。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

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

    python+selenium+PhantomJS抓取網頁動態(tài)加載內容

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

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

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

    python中的格式化輸出方法

    這篇文章主要介紹了python中的格式化輸出方法,?數據可以以人類可讀的形式打印,或寫入文件以供將來使用,甚至可以以某種其他指定的形式。?用戶通常希望對輸出格式進行更多控制,而不是簡單地打印以空格分隔的值,更多格式化輸出方式需要的朋友可以參考下面文章內容
    2022-03-03
  • Python用list或dict字段模式讀取文件的方法

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

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

    淺談pytorch池化maxpool2D注意事項

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

    python 實現刪除文件或文件夾實例詳解

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

    Python Pandas模塊實現數據的統(tǒng)計分析的方法

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

    Python控制Firefox方法總結

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

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

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

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

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

最新評論