C# 如何在Accord.net中训练具有不同长度输入的数据集
我想用Accord.net ann和svm对一些数据集进行分类,问题是我的数据集输入数组的长度不尽相同, 每个数组的长度可以从10到大约64,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 =
有没有办法处理这样一个数据集,或者我需要使它们都具有相同的大小?您的数据集是由数字序列组成的吗?如果是,那么可以使用隐马尔可夫模型。如果有分类问题,可以使用隐马尔可夫分类器和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类。