python中K-means算法基础知识点


Posted in Python onJanuary 25, 2021

能够学习和掌握编程,最好的学习方式,就是去掌握基本的使用技巧,再多的概念意义,总归都是为了使用服务的,K-means算法又叫K-均值算法,是非监督学习中的聚类算法。主要有三个元素,其中N是元素个数,x表示元素,c(j)表示第j簇的质心,下面就使用方式给大家简单介绍实例使用。

K-Means算法进行聚类分析

km = KMeans(n_clusters = 3)
km.fit(X)
centers = km.cluster_centers_
print(centers)

三个簇的中心点坐标为:

[[5.006 3.428 ]

[6.81276596 3.07446809]

[5.77358491 2.69245283]]

比较一下K-Means聚类结果和实际样本之间的差别:

predicted_labels = km.labels_
fig, axes = plt.subplots(1, 2, figsize=(16,8))
axes[0].scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Set1, 
        edgecolor='k', s=150)
axes[1].scatter(X[:, 0], X[:, 1], c=predicted_labels, cmap=plt.cm.Set1,
        edgecolor='k', s=150)
axes[0].set_xlabel('Sepal length', fontsize=16)
axes[0].set_ylabel('Sepal width', fontsize=16)
axes[1].set_xlabel('Sepal length', fontsize=16)
axes[1].set_ylabel('Sepal width', fontsize=16)
axes[0].tick_params(direction='in', length=10, width=5, colors='k', labelsize=20)
axes[1].tick_params(direction='in', length=10, width=5, colors='k', labelsize=20)
axes[0].set_title('Actual', fontsize=18)
axes[1].set_title('Predicted', fontsize=18)

k-means算法实例扩展内容:

# -*- 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算法基础知识点的文章就介绍到这了,更多相关python中K-means算法是什么内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python中sys.argv参数用法实例分析
May 20 Python
python中MethodType方法介绍与使用示例
Aug 03 Python
Django视图和URL配置详解
Jan 31 Python
python2.7读取文件夹下所有文件名称及内容的方法
Feb 24 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
Mar 29 Python
基于Pandas读取csv文件Error的总结
Jun 15 Python
Python pycharm 同时加载多个项目的方法
Jan 17 Python
使用python PIL库实现简单验证码的去噪方法步骤
May 10 Python
python实现从ftp上下载文件的实例方法
Jul 19 Python
PyTorch中的拷贝与就地操作详解
Dec 09 Python
Pytorch中TensorBoard及torchsummary的使用详解
May 12 Python
Python实现生成bmp图像的方法
Jun 13 Python
python中HTMLParser模块知识点总结
Jan 25 #Python
pycharm配置QtDesigner的超详细方法
Jan 25 #Python
Python扫描端口的实现
Jan 25 #Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
Jan 25 #Python
Python实现京东抢秒杀功能
Jan 25 #Python
Python Process创建进程的2种方法详解
Jan 25 #Python
使用python对excel表格处理的一些小功能
Jan 25 #Python
You might like
PHP中的str_repeat函数在JavaScript中的实现
2013/09/16 PHP
9段PHP实用功能的代码推荐
2014/10/14 PHP
php插入排序法实现数组排序实例
2015/02/16 PHP
PHP自定义函数获取URL中一级域名的方法
2016/08/23 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
php微信分享到朋友圈、QQ、朋友、微博
2019/02/18 PHP
Javascript的IE和Firefox兼容性汇编
2006/07/01 Javascript
JavaScript 检测浏览器和操作系统的脚本
2008/12/26 Javascript
使用javascript控制cookie显示和隐藏背景图
2014/02/12 Javascript
简介AngularJS的HTML DOM支持情况
2015/06/17 Javascript
JS中使用mailto实现将用户在网页中输入的内容传递到本地邮件客户端
2016/10/08 Javascript
JS实现网页烟花动画效果
2020/03/10 Javascript
vue中keep-alive、activated的探讨和使用详解
2020/07/26 Javascript
python 简易计算器程序,代码就几行
2009/08/29 Python
Python查看多台服务器进程的脚本分享
2014/06/11 Python
你真的了解Python的random模块吗?
2017/12/12 Python
解决python大批量读写.doc文件的问题
2018/05/08 Python
使用pip发布Python程序的方法步骤
2018/10/11 Python
基于python-opencv3的图像显示和保存操作
2019/06/27 Python
Python实现12306火车票抢票系统
2019/07/04 Python
详解Django将秒转换为xx天xx时xx分
2019/09/27 Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
2020/03/04 Python
Python 面向对象静态方法、类方法、属性方法知识点小结
2020/03/09 Python
python实现KNN近邻算法
2020/12/30 Python
IE浏览器单独写CSS样式的几种方法
2014/10/14 HTML / CSS
2013年保送生自荐信格式
2013/11/20 职场文书
车贷收入证明范本
2014/01/09 职场文书
淘宝活动总结范文
2014/06/26 职场文书
医院安全生产月活动总结
2014/07/05 职场文书
自我介绍演讲稿范文
2014/08/21 职场文书
幼儿教师辞职信范文
2015/03/02 职场文书
简历中自我评价范文
2015/03/11 职场文书
民事上诉状范文
2015/05/22 职场文书
python实现剪贴板的操作
2021/07/01 Python
详解TypeScript的基础类型
2022/02/18 Javascript
python+pytest接口自动化之token关联登录的实现
2022/04/06 Python