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 相关文章推荐
Python3基础之list列表实例解析
Aug 13 Python
初学Python函数的笔记整理
Apr 07 Python
Python实现的字典值比较功能示例
Jan 08 Python
python图书管理系统
Apr 05 Python
pandas 使用apply同时处理两列数据的方法
Apr 20 Python
Python异常处理知识点总结
Feb 18 Python
Python实现的栈、队列、文件目录遍历操作示例
May 06 Python
Python unittest 自动识别并执行测试用例方式
Mar 09 Python
python实现密度聚类(模板代码+sklearn代码)
Apr 27 Python
Python2与Python3关于字符串编码处理的差别总结
Sep 07 Python
python+selenium实现12306模拟登录的步骤
Jan 21 Python
教你使用Pandas直接核算Excel中快递费用
May 12 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
sae使用smarty模板的方法
2013/12/17 PHP
php微信公众号开发之简答题
2018/10/20 PHP
如何在Mozilla Gecko 用Javascript加载XSL
2007/01/09 Javascript
为你的网站增加亮点的9款jQuery插件推荐
2011/05/03 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之三
2012/01/03 Javascript
javascript 判断字符串是否包含某字符串及indexOf使用示例
2013/10/18 Javascript
Javascript编写俄罗斯方块思路及实例
2015/07/07 Javascript
JS中artdialog弹出框控件之提交表单思路详解
2016/04/18 Javascript
JQuery控制DIV的选取实现方法
2016/09/18 Javascript
微信小程序 Audio API详解及实例代码
2016/09/30 Javascript
使用Ajax与服务器(JSON)通信实例
2016/11/04 Javascript
解决vue2.x中数据渲染以及vuex缓存的问题
2017/07/13 Javascript
使用JQ完成表格隔行换色的简单实例
2017/08/25 Javascript
对存在JavaScript隐式类型转换的四种情况的总结(必看篇)
2017/08/31 Javascript
angular动态表单制作
2018/02/23 Javascript
vue-star评星组件开发实例
2018/03/01 Javascript
vue里input根据value改变背景色的实例
2018/09/29 Javascript
解决百度Echarts图表坐标轴越界的方法
2018/10/17 Javascript
详解vuex持久化插件解决浏览器刷新数据消失问题
2019/04/15 Javascript
详解JS实现简单的时分秒倒计时代码
2019/04/25 Javascript
Element 默认勾选表格 toggleRowSelection的实现
2019/09/04 Javascript
Python多线程和队列操作实例
2015/06/21 Python
利用python代码写的12306订票代码
2015/12/20 Python
Python时间的精准正则匹配方法分析
2017/08/17 Python
django-rest-framework 自定义swagger过程详解
2019/07/18 Python
Python 使用 Pillow 模块给图片添加文字水印的方法
2019/08/30 Python
tensorflow 实现打印pb模型的所有节点
2020/01/23 Python
python实现梯度下降和逻辑回归
2020/03/24 Python
jupyter 使用Pillow包显示图像时inline显示方式
2020/04/24 Python
CSS3轻松实现清新 Loading 效果的简单实例
2016/06/06 HTML / CSS
文员个人的求职信范文
2013/09/26 职场文书
校园餐饮创业计划书
2014/01/10 职场文书
岗位职责说明书
2014/05/07 职场文书
小学生常见病防治方案
2014/06/06 职场文书
党校团干班培训心得体会
2016/01/06 职场文书
MySQL的表级锁,行级锁,排它锁和共享锁
2022/07/15 MySQL