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字符类型的一些方法小结
May 16 Python
对python中的for循环和range内置函数详解
Apr 17 Python
Python之文字转图片方法
May 10 Python
python实现输入数字的连续加减方法
Jun 22 Python
推荐10款最受Python开发者欢迎的Python IDE
Sep 16 Python
python进程和线程用法知识点总结
May 28 Python
FFrpc python客户端lib使用解析
Aug 24 Python
python 魔法函数实例及解析
Sep 25 Python
Django文件上传与下载(FileFlid)
Oct 06 Python
pytorch自定义二值化网络层方式
Jan 07 Python
浅析NumPy 切片和索引
Sep 02 Python
Python暴力破解Mysql数据的示例
Nov 09 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封装的page分页类完整实例
2016/10/18 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
2017/08/28 PHP
使用隐藏的new来创建对象
2011/03/29 Javascript
jquery实现图片等比例缩放以及max-width在ie中不兼容解决
2013/03/21 Javascript
node.js Web应用框架Express入门指南
2014/05/28 Javascript
JavaScript中发布/订阅模式的简单实例
2014/11/05 Javascript
js Calender控件使用详解
2015/01/05 Javascript
IE下使用jQuery重置iframe地址时内存泄露问题解决办法
2015/02/05 Javascript
javascript实现网页字符定位的方法
2015/07/14 Javascript
浅谈JavaScript 执行环境、作用域及垃圾回收
2016/05/31 Javascript
jquery 实现滚动条下拉时无限加载的简单实例
2016/06/01 Javascript
JavaScript检测原始值、引用值、属性
2016/06/20 Javascript
基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果
2018/01/09 Javascript
快速搭建vue2.0+boostrap项目的方法
2018/04/09 Javascript
jQuery实现的点击显示隐藏下拉菜单功能完整示例
2019/05/17 jQuery
JS forEach跳出循环2种实现方法
2020/06/24 Javascript
[01:14:41]DOTA2-DPC中国联赛定级赛 iG vs Magma BO3第一场 1月8日
2021/03/11 DOTA
python自动安装pip
2014/04/24 Python
Python正则简单实例分析
2017/03/21 Python
python如何读写csv数据
2018/03/21 Python
python实现二维插值的三维显示
2018/12/17 Python
浅谈keras 模型用于预测时的注意事项
2020/06/27 Python
探讨HTML5移动开发的几大特性(必看)
2015/12/30 HTML / CSS
高中军训感想300字
2014/03/04 职场文书
团支部推优材料
2014/05/21 职场文书
师范生求职信
2014/06/14 职场文书
微笑面对生活演讲稿
2014/09/23 职场文书
学生会感恩节活动方案
2014/10/11 职场文书
教师个人师德总结
2015/02/06 职场文书
食堂卫生管理制度
2015/08/04 职场文书
工作转正自我鉴定范文
2019/06/21 职场文书
分享:关于学习的励志名言赏析
2019/08/16 职场文书
刚学完怎么用Python实现定时任务,转头就跑去撩妹!
2021/06/05 Python
关于PHP数组迭代器的使用方法实例
2021/11/17 PHP
mysql timestamp比较查询遇到的坑及解决
2021/11/27 MySQL
HTML页面点击按钮关闭页面的多种方式
2022/12/24 HTML / CSS