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