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入门之语句(if语句、while语句、for语句)
Jan 19 Python
Python 中迭代器与生成器实例详解
Mar 29 Python
python selenium UI自动化解决验证码的4种方法
Jan 05 Python
Python进阶之尾递归的用法实例
Jan 31 Python
python编程使用协程并发的优缺点
Sep 20 Python
Python实现操纵控制windows注册表的方法分析
May 24 Python
详解Python Matplotlib解决绘图X轴值不按数组排序问题
Aug 05 Python
python使用Matplotlib改变坐标轴的默认位置
Oct 18 Python
学python最电脑配置有要求么
Jul 05 Python
Django ModelForm组件原理及用法详解
Oct 12 Python
python Yaml、Json、Dict之间的转化
Oct 19 Python
利用python做数据拟合详情
Nov 17 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实现linux命令tail -f
2016/02/22 PHP
laravel实现按时间日期进行分组统计方法示例
2019/03/23 PHP
[原创]来自ImageSee官方 JavaScript图片浏览器
2008/01/16 Javascript
动态刷新 dorado树的js代码
2009/06/12 Javascript
ExtJs3.0中Store添加 baseParams 的Bug
2010/03/10 Javascript
JQuery学习笔记 nt-child的使用
2011/01/17 Javascript
创建js对象和js类的方法汇总
2014/12/24 Javascript
JavaScript中switch语句的用法详解
2015/06/03 Javascript
jQuery无刷新切换主题皮肤实例讲解
2015/10/21 Javascript
Jquery全屏相册插件zoomvisualizer具有调节放大与缩小功能
2015/11/02 Javascript
TypeScript学习之强制类型的转换
2016/12/27 Javascript
JavaScript轻松创建级联函数的方法示例
2017/02/10 Javascript
Vue 2.0 服务端渲染入门介绍
2017/03/29 Javascript
js图片加载效果实例代码(延迟加载+瀑布流加载)
2017/05/12 Javascript
jQuery实现的隔行变色功能【案例】
2019/02/18 jQuery
JS实现炫酷轮播图
2020/11/15 Javascript
如何在JavaScript中等分数组的实现
2020/12/13 Javascript
Python实现动态添加类的属性或成员函数的解决方法
2014/07/16 Python
Python导出DBF文件到Excel的方法
2015/07/25 Python
Python数字图像处理之霍夫线变换实现详解
2018/01/12 Python
Python3实现的旋转矩阵图像算法示例
2019/04/03 Python
深入了解Python枚举类型的相关知识
2019/07/09 Python
Python内置方法实现字符串的秘钥加解密(推荐)
2019/12/09 Python
关于ZeroMQ 三种模式python3实现方式
2019/12/23 Python
Python 程序报错崩溃后如何倒回到崩溃的位置(推荐)
2020/06/23 Python
美国著名手表网站:Timepiece
2017/11/15 全球购物
玉兰油美国官网:OLAY美国
2018/10/25 全球购物
No7 Beauty美国官网:英国国民护肤品牌
2019/10/31 全球购物
直接有效的自我评价
2014/01/11 职场文书
C++程序员求职信范文
2014/04/14 职场文书
村班子对照检查材料
2014/08/18 职场文书
公司委托书范本5篇
2014/09/20 职场文书
乐山大佛导游词
2015/02/02 职场文书
社会实践活动报告
2015/02/05 职场文书
稽核岗位职责
2015/02/10 职场文书
2016银行招聘自荐信
2016/01/28 职场文书