K-Means聚类算法
来源:互联网 发布:算法工程师培训班 编辑:程序博客网 时间:2024/06/04 19:56
记录一下KMeans算法里一些主要的东西
简介
K-Means是一种用来进行聚类分析的算法,用以得到每个数据所属的cluster。在给定的数据没有标签的情况下,由这种聚类分析算法得到每条数据的cluster,属于非监督式学习算法。
其主要步骤 分为:
1. assign
给每个点分配其所属中心点Cx(根据距离就近分配)
2. optimization
对于同一cluster中所有点,计算出新的中心点,使得所有点到中心点的距离之和最优按上述步骤不断 循环迭代。
Discussion:
1. 如何初始化K个中心点?
常见的方法是随机的选取初始质心,但是这样簇的质量常常很差,或者说可能会得到不同的结果。处理选取初始质心问题的一种常用技术是:多次运行,每次使用一组不同的随机初始质心,然后选取具有最小SSE(误差的平方和)的簇集。这种策略简单,但是效果可能不好,这取决于数据集和寻找的簇的个数。更多的方法:这里
2. 如何求点群中心(Optimization)?
一般来说,求点群中心点的算法你可以很简的使用各个点的X/Y坐标的平均值。
sklearn代码
from sklearn.cluster import KMeansimport numpy as npX = np.array([[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0]])### n_clusters用于指定聚类的个数### random_state用于初始化质心,修改随机种子发生器(为可选值)### max_iter 用于指定迭代的层数,默认为300pred = KMeans(n_clusters = 2, random_state = 0).fit(X)### 得到每个点对于的类别:array([0, 0, 0, 1, 1, 1], dtype=int32)print pred.labels_### 得到:array([0, 1], dtype=int32)print pred.predict([[0, 0], [4, 4]])### 得到聚类的中心点:array([[ 1., 2.], [ 4., 2.]])print pred.cluster_centers_
关于sklearn.cluster.KMeans更多的细节:这里
0 0
- k-means聚类算法
- k-means聚类算法
- K-means聚类算法
- K-means聚类算法
- K-means聚类算法
- K-means聚类算法
- K-means聚类算法
- K-means聚类算法
- K-MEANS聚类算法
- k-means聚类算法
- K-means聚类算法
- 聚类算法 K-means
- K-means聚类算法
- K-means聚类算法
- K-means聚类算法
- 聚类算法:K-means
- K-means聚类算法
- K-means聚类算法
- vue双向过滤器two-way
- Moses使用教程之安装
- 操作系统--进程间的通信,同步和互斥等
- 反射在注册登录案例中的应用
- 开发过程中碰到的信号处理场景--笔记
- K-Means聚类算法
- CMake使用总结
- IO之ByteInputStream ByteOutputStream
- 输出缓存区的内存分配
- 初始正则
- Leetcode 150 Evaluate Reverse Polish Notation (求值逆波兰表达式)
- MYSQL(6)数据操作2
- 使用Statement执行sql语句
- leetcode 128. Longest Consecutive Sequence .