PCA pca = 新PCA

发布于 2024-11-15 03:57:47 字数 1333 浏览 6 评论 0原文

我们如何将 PCA 应用于一维数组?

double[][] data = new double [1][600]; 
PCA pca = new PCA(data, 20);
data = pca.getPCATransformedDataAsDoubleArray();

当打印数据数组中的值时,数据数组中的特征减少 600 到 20,但所有值都为零。

为什么?

package VoiceRecognation;

import Jama.Matrix;
import comirva.data.DataMatrix;
import comirva.util.PCA;


import javax.print.attribute.standard.Finishings;
import java.io.File;

/**
 * Created by IntelliJ IDEA.
 * User: SAHIN
 * Date: 11.06.2011
 * Time: 19:33
 * To change this template use File | Settings | File Templates.
 */
public class Deneme {
    public static void main(String[] args) {

        int[] group = Groups.getGroups();
        File[] files = Files.getFiles();
        double[][] data = FindMfccOfFiles.findMFCCValuesOfFiles(files);
        PCA pca = new PCA(data, 20);
        data = pca.getPCATransformedDataAsDoubleArray();


        File file = new File("src/main/resources/Karisik/E-Mail/(1).wav");
        double[] testdata = MFCC.getMFCC(file);

        double[][] result = new double[1][600];
        result[0] = testdata;

        PCA p = new PCA(result, 20);
        double [][] sum = p.getPCATransformedDataAsDoubleArray();
        for (int i = 0; i < sum[0].length; i++) {
            System.out.print(sum[0][i] + " ");
        }




   }
}

How can we apply PCA to a one dimensional array ?

double[][] data = new double [1][600]; 
PCA pca = new PCA(data, 20);
data = pca.getPCATransformedDataAsDoubleArray();

When a print the values in data array, the features in the data array decrease 600 to 20, but all values zero.

Why?

package VoiceRecognation;

import Jama.Matrix;
import comirva.data.DataMatrix;
import comirva.util.PCA;


import javax.print.attribute.standard.Finishings;
import java.io.File;

/**
 * Created by IntelliJ IDEA.
 * User: SAHIN
 * Date: 11.06.2011
 * Time: 19:33
 * To change this template use File | Settings | File Templates.
 */
public class Deneme {
    public static void main(String[] args) {

        int[] group = Groups.getGroups();
        File[] files = Files.getFiles();
        double[][] data = FindMfccOfFiles.findMFCCValuesOfFiles(files);
        PCA pca = new PCA(data, 20);
        data = pca.getPCATransformedDataAsDoubleArray();


        File file = new File("src/main/resources/Karisik/E-Mail/(1).wav");
        double[] testdata = MFCC.getMFCC(file);

        double[][] result = new double[1][600];
        result[0] = testdata;

        PCA p = new PCA(result, 20);
        double [][] sum = p.getPCATransformedDataAsDoubleArray();
        for (int i = 0; i < sum[0].length; i++) {
            System.out.print(sum[0][i] + " ");
        }




   }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

岛歌少女 2024-11-22 03:57:47

主成分分析用于降低问题的维数。音频文件的尺寸是通道(例如左扬声器、右扬声器),而不是单个样本。在这种情况下,单声道音频流实际上只有一个维度。因此,您不会使用 PCA 减少样本数量,但可以减少音频中的通道数量。但您可以在不使用 PCA 的情况下通过对每个通道上的样本进行平均来实现这一点。因此,除非您尝试将立体声音频转换为单声道,否则我认为您需要采用不同的方法来解决问题。

Principal component analysis is used for reducing the dimensionality of your problem. The dimensions of the audio file are the channels (e.g. left speaker, right speaker), not the individual samples. In that case, you really have only one dimension for a mono audio stream. So, you're not going to reduce the number of samples using PCA, but you could reduce the number of channels in the audio. But you could do that without PCA just by averaging the samples on each channel. So unless you're trying to convert stereo audio into mono, I think you need a different approach to your problem.

把梦留给海 2024-11-22 03:57:47

您可以使用 getPCATransformedDataAsDoubleArray 方法的结果覆盖数据数组。我假设,由于构造函数参数的原因,这是一个包含 20 个条目的数组。我认为我不知道为什么所有值都为零,因为它是在 PCA 类中定义的。

You overwrite the data array with the result of the method getPCATransformedDataAsDoubleArray. I assume, this is an array with 20 entries because of the constructor arg. I don't know, why all values are zero, i think, because it's defined in the class PCA.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文