利用MFCC算法得到了一些声音变量的特征。我想用K-Means对它们进行聚类。我有70帧,每帧都有9个倒谱系数用于一个语音样本。这意味着我有一个类似于70*9大小的矩阵。
让我们假设A,B和C是语音记录
一个是:
List<List<Double>> -> 70*9 array (I can use Vector instead of List)B和C的长度也是一样的。
我不想聚类每一帧,我想聚类每一帧块(在我的例子中,一组有70帧)。
我如何在Java中用K-Means实现它?
发布于 2011-05-29 14:46:19
这就是你对问题领域的知识变得至关重要的地方。您可能只使用70*9矩阵之间的距离,但您可能会做得更好。我不知道你提到的特定特征,但一些通用的例子可能是每个特征70个值的平均标准差。您基本上是在寻求减少维度的数量,这既是为了提高速度,也是为了使度量针对sImple转换具有健壮性,比如将所有值偏移一步
发布于 2012-07-10 16:25:37
K-Means对你的数据有一些非常严格的假设。我不相信你的数据适合在上面运行k-means。
附注:避免使用Java泛型作为基本类型,比如Double。它会扼杀性能。使用double[][]。
https://stackoverflow.com/questions/6164734
复制相似问题