我用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实现它?
答案 0 :(得分:2)
在这里,您对问题域的了解变得至关重要。你可能只使用70 * 9矩阵之间的距离,但你可能会更好。我不知道您提到的具体功能,但一些通用示例可能是每个功能70个值的平均值,标准偏差。您基本上希望减少维数,既可以提高速度,也可以使测量对sImple转换具有鲁棒性,例如将所有值偏移一步
答案 1 :(得分:0)
K-Means对您的数据有一些相当严格的假设。我不相信你的数据适合在它上运行k-means。
附注:远离Java泛型的原始类型,如Double。它会杀死性能。使用double[][]
。