java如何为MFCC特性实现KMeans聚类算法?
我用MFCC算法得到了一些声音变量的特征。我想用K-Means对它们进行聚类。我有70帧,每帧有9个倒谱系数用于一个语音样本。这意味着我有一个70*9大小的矩阵
假设A、B和C是语音记录,所以
A是:
List<List<Double>> -> 70*9 array (I can use Vector instead of List)
B和C的长度也一样
我不想对每个帧进行聚类,我想对每个帧块进行聚类(在我的示例中,一个组有70帧)
如何在Java上用K-Means实现它
# 1 楼答案
在这里,你对问题领域的知识变得至关重要。你可以只使用70*9矩阵之间的距离,但你可能会做得更好。我不知道您提到的具体功能,但一些通用示例可能是每个功能70个值的平均值、标准偏差。基本上,您希望减少维度的数量,这既可以提高速度,也可以使度量对简单的转换(如一步抵消所有值)具有鲁棒性
# 2 楼答案
K-Means对你的数据有一些非常严格的假设。我不相信你的数据适合在上面运行k-means
旁注:对于Double这样的基本类型,不要使用Java泛型。这会扼杀性能。使用
double[][]