Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何实现MFCC特征的K均值聚类算法?_Java_Algorithm_Cluster Analysis_K Means - Fatal编程技术网

Java 如何实现MFCC特征的K均值聚类算法?

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矩阵之间的距离,但您可能会做得更

我用MFCC算法得到了一些声音变量的特征。我想用K-Means对它们进行聚类。我有70帧,每帧有9个倒谱系数用于一个语音样本。这意味着我有一个70*9大小的矩阵

假设A、B和C是语音记录,所以

A是:

List->70*9数组(我可以用向量代替List)
B和C的长度也一样

我不想对每个帧进行聚类,我想对每个帧块进行聚类(在我的示例中,一个组有70帧)


如何在Java中使用K-Means实现它?

这里是您对问题领域的知识变得至关重要的地方。您可能只需要使用70*9矩阵之间的距离,但您可能会做得更好。我不知道您提到的具体功能,但一些通用示例可能是平均值,每个功能70个值的标准偏差。基本上,您希望减少维度的数量,既可以提高速度,也可以使度量对简单的转换具有鲁棒性,例如通过一步抵消所有值。我不相信你的数据适合在上面运行k-means

  • K-means是为欧几里德距离设计的,可能有一个更适合您的数据的距离度量
  • K-means需要能够计算合理的平均值,这可能不适合您的数据
  • 许多距离函数(和算法!)在70*9维(“维的诅咒”)下无法正常工作
  • 你需要事先知道k

  • 旁注:对于Double之类的基本类型,不要使用Java泛型。它扼杀了性能。使用
    double[][]

    哦,一旦你确定你的最终特征被标准化,你的最终距离度量可能只是特征之间差异的总和
    List<List<Double>> -> 70*9 array (I can use Vector instead of List)