目标
利用kmeans或kshape聚类分析对归一化的无量纲时间-降雨序列进行聚类(分类,区分降雨雨型的差异)
聚类算法的原理和参数
聚类是一种常见的无监督学习方法,其任务是将一组相似的数据点分组为不同的簇(cluster)。
簇内的数据点应该彼此相似,而不同簇间的数据点应该差异较大。
聚类算法有许多种,常见的有 K-means、层次聚类、DBSCAN、GMM 等。
K-means 算法的原理是:首先随机选择 K 个初始质心,然后将数据点分配到最近的质心所在的簇中。然后重新计算每个簇的质心,将其作为新的质心。重复进行这些步骤,直到簇内变异程度最小或达到预定的迭代次数。
K-means 算法的参数包括:
-
k:簇的数量,需要根据实际问题选择合适的值。不同的 k 可能导致不同的聚类结果。由于该算法采用随机初始化,因此多次运行算法可以得到不同的结果。
-
初始质心的选择方法:通常是随机选择或者基于某种启发式规则来选择初始质心。初始质心的选择可能影响最终的聚类效果。
-
距离度量方法:可以使用欧几里得距离、曼哈顿距离、余弦距离等。
-
最大迭代次数:算法运行的最大迭代次数。如果聚类的结果已经收敛,则可以提前终止算法。
K-shape 算法是一种基于 K-means 的时间序列聚类方法,其原理是利用 DTW 距离度量两个时间序列之间的相似度,然后使用 K-means 聚类算法将时间序列分配到不同的簇中。
K-shape 算法的参数设置与 K-means 稍有不同,主要有:
-
k:簇的数量,需要根据实际问题选择合适的值。
-
距离度量方法:使用 DTW 距离或其变体。
-
变换方法:可以使用 z-score、log-differencing、Piecewise Aggregate Approximation(PAA)等方法进行数据变换,以便更好地匹配时间序列之间的差异。
运行效果![请添加图片描述](https://i-blog.csdnimg.cn/blog_migrate/1115b3c98468185c3e4d0a3ca679c606.png)
所需依赖
-
Pandas:处理数据的库。
-
NumPy:用于数值计算和数组操作的库。
-
Scikit-learn:一个 Python 库,提供了常见的机器学习算法,包括 K-means 聚类算法。
-
tslearn:一个用于时间序列数据分析的 Python 库,提供了多种时间序列聚类算法。
-
Matplotlib:Python 2D 绘图库。
如果您已经安装了 Anaconda 发行版,则可以通过以下命令安装这些库:
conda install pandas numpy scikit-learn tslearn matplotlib
如果您没有安装 Anaconda,则可以通过以下命令使用 pip 安装这些库:
pip install pandas numpy scikit-learn tslearn matplotlib
代码实现思路分析
import pandas as pd