Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.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
C# 如何在Accord.net中训练具有不同长度输入的数据集_C#_Machine Learning_Accord.net - Fatal编程技术网

C# 如何在Accord.net中训练具有不同长度输入的数据集

C# 如何在Accord.net中训练具有不同长度输入的数据集,c#,machine-learning,accord.net,C#,Machine Learning,Accord.net,我想用Accord.net ann和svm对一些数据集进行分类,问题是我的数据集输入数组的长度不尽相同, 每个数组的长度可以从10到大约64, 有没有办法处理这样一个数据集,或者我需要使它们都具有相同的大小?您的数据集是由数字序列组成的吗?如果是,那么可以使用隐马尔可夫模型。如果有分类问题,可以使用隐马尔可夫分类器和Baum-Welch学习来创建序列分类器 例如,考虑下面的示例,涉及不同长度的数据样本: // Declare some testing data int[][] inputs =

我想用Accord.net ann和svm对一些数据集进行分类,问题是我的数据集输入数组的长度不尽相同, 每个数组的长度可以从10到大约64,
有没有办法处理这样一个数据集,或者我需要使它们都具有相同的大小?

您的数据集是由数字序列组成的吗?如果是,那么可以使用隐马尔可夫模型。如果有分类问题,可以使用隐马尔可夫分类器和Baum-Welch学习来创建序列分类器

例如,考虑下面的示例,涉及不同长度的数据样本:

// Declare some testing data
int[][] inputs = new int[][]
{
    new int[] { 0,1,1,0 },   // Class 0
    new int[] { 0,0,1,0 },   // Class 0
    new int[] { 0,1,1,1,0 }, // Class 0
    new int[] { 0,1,0 },     // Class 0

    new int[] { 1,0,0,1 },   // Class 1
    new int[] { 1,1,0,1 },   // Class 1
    new int[] { 1,0,0,0,1 }, // Class 1
    new int[] { 1,0,1 },     // Class 1
};

int[] outputs = new int[]
{
    0,0,0,0, // First four sequences are of class 0
    1,1,1,1, // Last four sequences are of class 1
};


// We are trying to predict two different classes
int classes = 2;

// Each sequence may have up to two symbols (0 or 1)
int symbols = 2;
现在,您可以创建隐马尔可夫模型来对其进行分类:

// Nested models will have two states each
int[] states = new int[] { 2, 2 };

// Creates a new Hidden Markov Model Sequence Classifier with the given parameters
HiddenMarkovClassifier classifier = new HiddenMarkovClassifier(classes, states, symbols);

// Create a new learning algorithm to train the sequence classifier
var teacher = new HiddenMarkovClassifierLearning(classifier,

    // Train each model until the log-likelihood changes less than 0.001
    modelIndex => new BaumWelchLearning(classifier.Models[modelIndex])
    {
        Tolerance = 0.001,
        Iterations = 0
    }
);

// Train the sequence classifier using the algorithm
double likelihood = teacher.Run(inputs, outputs);

// Classify the sequences as belonging to one of the classes:
int output = classifier.Decide(new int[] { 1,0,0,1 }) // output should be 1

你能告诉我更多关于数据集的信息吗?它包含的功能?它包含每个数字属于{0,1,2,…,k}的数字,其中k是已知的。感谢Cesar和greate框架!!它是否适用于连续数字?它提供了比使用动态时间包装+svm更好的结果?据我所知,序列的长度必须是已知的,对吗?是的,它适用于连续数,但可能需要使用基于高斯分布的模型。在Baum Welch学习文档页面中有一些关于如何做到这一点的示例。序列需要一个已知的长度,但它们不必具有相同的长度。如果有长度未知的序列(即流),可以使用RunningMarkovStatistics和RunningMarkovClassifier类。