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 相关文章推荐
利用打码兔和超人打码自封装的打码类分享
Mar 16 Python
Python对两个有序列表进行合并和排序的例子
Jun 13 Python
python统计字符串中指定字符出现次数的方法
Apr 04 Python
Python计算一个文件里字数的方法
Jun 15 Python
详解Django框架中用context来解析模板的方法
Jul 20 Python
Python随机读取文件实现实例
May 25 Python
python多进程提取处理大量文本的关键词方法
Jun 05 Python
对Python的多进程锁的使用方法详解
Feb 18 Python
详解Python3中ceil()函数用法
Feb 19 Python
django admin后台添加导出excel功能示例代码
May 15 Python
python向xls写入数据(包括合并,边框,对齐,列宽)
Feb 02 Python
python数据处理之Pandas类型转换
Apr 28 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 session常见问题集锦及解决办法总结
2007/03/18 PHP
献给php初学者(入门学习经验谈)
2010/10/12 PHP
PHP连接MongoDB示例代码
2012/09/06 PHP
PHP页面间参数传递的四种方法详解
2013/06/09 PHP
Yii2 rbac权限控制操作步骤实例教程
2016/04/29 PHP
用javascript控制iframe滚动的代码
2007/04/10 Javascript
JS 非图片动态loading效果实现代码
2010/04/09 Javascript
formStorage 基于jquery的一个插件(存储表单中元素的状态到本地)
2012/01/20 Javascript
javascript实现促销倒计时+fixed固定在底部
2013/09/18 Javascript
JavaScript中如何通过arguments对象实现对象的重载
2014/05/12 Javascript
关于JavaScript命名空间的一些心得
2014/06/07 Javascript
angularjs实现与服务器交互分享
2014/06/24 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
2015/12/01 Javascript
jQuery实现图片走马灯效果的原理分析
2016/01/16 Javascript
浅析在javascript中创建对象的各种模式
2016/05/06 Javascript
js使用i18n实现页面国际化的方法
2017/05/09 Javascript
Django使用多数据库的方法
2017/09/06 Javascript
JS实现预加载视频音频/视频获取截图(返回canvas截图)
2017/10/09 Javascript
移动端自适应flexible.js的使用方法(不用三大框架,仅写一个单html页面使用)推荐
2019/04/02 Javascript
微信小程序实现手势滑动卡片效果
2019/08/26 Javascript
[01:32:10]NAVI vs VG Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
玩转python爬虫之爬取糗事百科段子
2016/02/17 Python
一些Centos Python 生产环境的部署命令(推荐)
2018/05/07 Python
使用Python进行体育竞技分析(预测球队成绩)
2019/05/16 Python
Python获取时间范围内日期列表和周列表的函数
2019/08/05 Python
关于Tensorflow 模型持久化详解
2020/02/12 Python
aws 通过boto3 python脚本打pach的实现方法
2020/05/10 Python
借助HTML5 Canvas来绘制三角形和矩形等多边形的方法
2016/03/14 HTML / CSS
使用HTML5 IndexDB存储图像和文件的示例
2018/11/05 HTML / CSS
耐克美国官网:Nike.com
2016/08/01 全球购物
介绍一下Ruby的多线程处理
2013/02/01 面试题
《王二小》教学反思
2014/02/27 职场文书
大学生撤销处分思想汇报
2014/09/12 职场文书
PostgreSQL将数据加载到buffer cache中操作方法
2021/04/16 PostgreSQL
Python数据分析入门之教你怎么搭建环境
2021/05/13 Python
SpringBoot快速入门详解
2021/07/21 Java/Android