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程序与系统shell交互的方式
Apr 09 Python
python使用paramiko实现远程拷贝文件的方法
Apr 18 Python
解决PyCharm中光标变粗的问题
Aug 05 Python
python逆序打印各位数字的方法
Jun 25 Python
python字符串循环左移
Mar 08 Python
Python实现Singleton模式的方式详解
Aug 08 Python
解决Atom安装Hydrogen无法运行python3的问题
Aug 28 Python
3行Python代码实现图像照片抠图和换底色的方法
Oct 10 Python
Django中使用MySQL5.5的教程
Dec 18 Python
使用Python文件读写,自定义分隔符(custom delimiter)
Jul 05 Python
解决TensorFlow训练模型及保存数量限制的问题
Mar 03 Python
python的html标准库
Apr 29 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
咖啡的传说和历史
2021/03/03 新手入门
人大复印资料处理程序_补充篇
2006/10/09 PHP
PHP个人网站架设连环讲(一)
2006/10/09 PHP
php笔记之:AOP的应用
2013/04/24 PHP
php中sql注入漏洞示例 sql注入漏洞修复
2014/01/24 PHP
php运行时动态创建函数的方法
2015/03/16 PHP
Yii框架视图、视图布局、视图数据块操作示例
2019/10/14 PHP
php libevent 功能与使用方法详解
2020/03/04 PHP
基于jquery的让页面控件不可用的实现代码
2010/04/27 Javascript
JavaScript实现cookie的写入、读取、删除功能
2015/11/05 Javascript
Angular.js实现获取验证码倒计时60秒按钮的简单方法
2017/10/18 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
2019/02/02 Javascript
JavaScript面试技巧之数组的一些不low操作
2019/03/22 Javascript
JQuery 实现文件下载的常用方法分析
2019/10/29 jQuery
[44:40]KG vs LGD 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python连接mssql数据库编码问题解决方法
2015/01/01 Python
在Python中marshal对象序列化的相关知识
2015/07/01 Python
Python使用QRCode模块生成二维码实例详解
2017/06/14 Python
判断python字典中key是否存在的两种方法
2018/08/10 Python
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
2018/09/19 Python
python将.ppm格式图片转换成.jpg格式文件的方法
2018/10/27 Python
PYQT5实现控制台显示功能的方法
2019/06/25 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
2019/10/12 Python
Numpy中对向量、矩阵的使用详解
2019/10/29 Python
通过 Python 和 OpenCV 实现目标数量监控
2020/01/05 Python
Tensorflow 实现将图像与标签数据转化为tfRecord文件
2020/02/17 Python
Python中内建模块collections如何使用
2020/05/27 Python
美国在线鲜花速递:ProFlowers
2017/01/05 全球购物
域名注册、建站工具、网页主机、SSL证书:Dynadot
2017/01/06 全球购物
ROSEFIELD手表荷兰官方网上商店:北欧极简设计女士腕表品牌
2018/01/24 全球购物
eBay瑞士购物网站:eBay.ch
2018/12/24 全球购物
物流专员岗位职责
2014/02/17 职场文书
个人承诺书
2014/03/26 职场文书
见习报告怎么写
2014/10/31 职场文书
2014年销售人员工作总结
2014/11/27 职场文书
Canvas跟随鼠标炫彩小球的实现
2021/04/11 Javascript