k means聚类算法_K-Means 聚类算法 20210108
说到聚类,应先理解聚类和分类的区别
聚类和分类最大的不同在于:分类的目标是事先已知的,而聚类则不一样,聚类事先不知道目标变量是什么,类别没有像分类那样被预先定义出来。
K-Means
聚类算法有很多种(几十种),K-Means是聚类算法中的最常用的一种,算法最大的特点是简单,好理解,运算速度快,但是只能应用于连续型的数据,并且一定要在聚类前需要手工指定要分成几类。
K-means可以自己写也可以调用库来实现
调用库的实现方式为:
# 使用sklearn实现
from sklearn.cluster import KMeans #导入kmeans库model = KMeans(n_clusters=16, n_init=100, n_jobs=-1)
model.fit(data) #用数据拟合分类器模型
centroids = model.cluster_centers_
C = model.predict(data) #输出输入数据的预测结果
自己构建的方式为:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pddef find_closest_centroids(X, centroids):m = X.shape[0]k = centroids.shape[0]idx = np.zeros(m) # idx[i]为距离样本i最近的集聚中心的索引for i in range(m):min_dist = 1000000 #每计算完一个样本点后需要将最短距重新初始化 for j in range(k):dist = np.sum((X[i,:] - centroids[j,:]) ** 2) #代价函数if dist < min_dist:min_dist = distidx[i] = jreturn idxdef compute_centroids(X, idx, k): #k为聚类中心个数m,n = X.shape centroids = np.zeros((k, n)) #聚类中心为(k,n)for i in range(k):indices = np.where(idx == i) #为i簇的各样本点的索引centroids[i,:] = (np.sum(X[indices,:], axis=1) / len(indices[0])).ravel() #len(indices[0])为样本点的数量,axis=1为按列相加 return centroiddef init_centroids(X, k):m, n = X.shapecentroids = np.zeros((k, n))idx = np.random.randint(0, m, k)for i in range(k):centroids[i,:] = X[idx[i],:] #随机选择训练示例作为聚类中心return centroidsdef run_k_means(X, initial_centroids, max_iters):m, n = X.shapek = initial_centroids.shape[0]idx = np.zeros(m)centroids = initial_centroidsfor i in range(max_iters):idx = find_closest_centroids(X, centroids)centroids = compute_centroids(X, idx, k)return idx, centroids
主要分为以下几个模块:
需要加的模块就是,前面加上读取excel的模块,后面加上画图可视化的模块
2021.01.08
k means聚类算法_K-Means 聚类算法 20210108相关推荐
- k近邻算法_K近邻(knn)算法是如何完成分类的?
摘要:K近邻算法是机器学习中的一个非常基础的算法.本文通过自生成数据,通过绘图的方式演示KNN算法的思路,让你不看数学公式就看了解什么是KNN算法. 关键词:KNN算法 1 生成一个二分类的数据集 本 ...
- k中心点聚类算法伪代码_聚类算法之——K-Means、Canopy、Mini Batch K-Means
K-Means||算法 K-Means||算法是为了解决K-Means++算法缺点而产生的一种算法: 主要思路是改变每次遍历时候的取样规则,并非按照K-Means++算法每次遍历只获取一个样本,而是每 ...
- k均值聚类算法优缺点_聚类算法之——K-Means算法
聚类算法属于无监督学习,它将相似的对象归到同一个簇中.K-Means算法是聚类算法中最常用到算法: 1. 预备知识点 距离计算 闵可夫斯基距离 点 之间的闵可夫斯基距离为 欧式距离 点 之间的欧氏距离 ...
- 基于K均值算法的鸢尾花聚类实验(Sklearn实现)
实验代码 ##### 相关库导入部分 ##### from sklearn.datasets import load_iris import pandas as pd from sklearn.pre ...
- R实现K均值算法,层次聚类算法与DBSCAN算法
1.聚类的基本概念 聚类分析(cluster analysis)仅根据在数据中发现的描述对象及其关系的信息,将数据对象分组.其目标是,组内的对象相互之间是相似的(相关的),而不同组中的对象是不同的(不 ...
- 【算法】K-Means聚类算法(k-平均或k-均值)
1.聚类算法和分类算法的区别 a)分类 分类(Categorization or Classification)就是按照某种标准给对象贴标签(label),再根据标签来区分归类. 举例: 假如你有一堆 ...
- dbscan和谱聚类_R 无监督聚类算法(1)K-means和层次聚类
首先我们要解决几个问题 聚类算法主要包括哪些算法? 主要包括:K-means.DBSCAN.Density Peaks聚类(局部密度聚类).层次聚类.谱聚类. 什么是无监督学习? • 无监督学习也是相 ...
- 讨论k值以及初始聚类中心对聚类结果的影响_K均值聚类需要标准化数据吗
摘要:进入二十一世纪以来,科学技术的不断发展,使得数据挖掘技术得到了学者越来越多的关注.数据挖掘是指从数据库中发现隐含在大量数据中的新颖的.潜在的有用信息和规则的过程,是一种处理数据库数据的知识发现. ...
- 聚类算法:K-means聚类与系统(层次)聚类SPSS操作
笔记整理来自清风老师的数学建模课程: https://www.bilibili.com/video/BV1gJ411k7X4?from=search&seid=1537010279875630 ...
- python机器学习手写算法系列——kmeans聚类
从机器学习到kmeans 聚类是一种非监督学习,他和监督学习里的分类有相似之处,两者都是把样本分布到不同的组里去.区别在于,分类分析是有标签的,聚类是没有标签的.或者说,分类是有y的,聚类是没有y的, ...
最新文章
- 南京师范大学计算机技术调剂,南京师范大学2017年研究生调剂信息
- 基于消息的分布式架构设计
- 8.0强行转换后变成了7_【建筑通】钻孔灌注桩后注浆施工工艺介绍
- python 实现文本自动翻译功能
- java beans_java beans的概念及应用?
- python打印楼梯和笑脸_Python实现打印楼梯形状图形
- 2019春第六周编程总结
- LeetCode 326. 3的幂
- linux 星号 通配符,如何在bash中转义通配符/星号字符?
- 因为贫贱,所以分手,我错了吗?
- 【java笔记】Collections集合工具类
- 和为S的两个数字(python)
- SVN 分支与主干的合并
- SIP协议详解(中文)-5
- 信息系统安全等级保护 备案表
- win7系统如何开启蓝牙
- 达观电网故障知识图谱,三大功能全面提升电网故障处置效率
- 2022-2028全球ERV空气交换器行业调研及趋势分析报告
- HTML点击图片出现边框,简单的jQuery实现点击图片出现弹框【原创】
- 彻底删除VM虚拟机手把手详细教学
热门文章
- 10-Mybatis 多表查询之多对多
- c++相对路径怎么判断_不可思议!C罗无球跑位分析
- 数据中台 画像标签_数据中台实战:如何通过标签平台圈出产品高价值用户?...
- android 结束if循环_几款Android反编译器对循环结构的还原能力测试记录
- python画图颜色表示大小变化_Python matplotlib减少色条标签的大小
- 祥云,灯笼,剪纸……春节海报,点缀必备PSD素材
- 装饰画必备素材——装饰设计师,填充不用愁!
- 别再瞎找了,设计师日常工作需要的软件都在这里了
- linux下的汇编,linux下的汇编分析
- 云消防大数据_消防云大数据app