Я хотел бы сделать приложение мультиклассовой классификации на С#. Я решил использовать encog для этого. Теперь я застрял в одной точке. Я нашел пример XOR, который я понимаю. Но когда я собираюсь использовать свой собственный набор данных, приложение вычисляет только одну функцию из одного примера. Вот мой код:
namespace ConsoleApplication1
{
public static class Load
{
public static double[][] FromFile(string path)
{
var rows = new List<double[]>();
foreach (var line in File.ReadAllLines(path))
{
rows.Add(line.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Select(double.Parse).ToArray());
}
return rows.ToArray();
}
}
public class Program
{
static void Main( string [ ] args )
{
// LOADING MY OWN DATASET
string cestain = @"E:\vstup.txt";
double[][] innput = Load.FromFile(cestain); //Training INPUTS
string cestaout = @"E:\vystup.txt";
double[][] ooutput = Load.FromFile(cestaout); //Desired OUTPUTS
string cestatest = @"E:\te1.txt";
double[][] teest = Load.FromFile(cestatest); // Test Example
// create a neural network
var svm = new SupportVectorMachine(10, false); // 2 input, & false for classification
// create training data
IMLDataSet trainingSet = new BasicMLDataSet(innput, ooutput);
// train the neural network
IMLTrain train = new SVMSearchTrain(svm, trainingSet);
int epoch = 1;
do
{
train.Iteration();
Console.WriteLine(@"Epoch #" + epoch + @" Error:" + train.Error);
epoch++;
} while (train.Error > 0.01);
// test the neural network
Console.WriteLine(@"SVM Results:");
foreach (IMLDataPair pair in trainingSet)
{
IMLData output = svm.Compute(pair.Input);
Console.WriteLine(pair.Input[0]
+ @", actual=" + output[0] + @",ideal=" + pair.Ideal[0]);
}
Console.WriteLine("Done");
Console.ReadKey();
}
}
}
INPUTS выглядит так (это всего лишь пример):
166 163 180 228
165 162 160 226
166 163 180 228
166 164 180 228
ЖЕЛАЕМЫЕ ВЫВОДЫ выглядят так (это всего лишь пример):
1
2
1
1
ПРИМЕР ТЕСТА выглядит так:
152 151 98 219
Когда я запускаю свое приложение, оно вычисляет ошибку, но показывает только значения из первого столбца моих ВХОДОВ (поэтому я не уверен, вычисляет ли оно целые примеры - 4 значения). Я также не уверен, как передать мой пример TEST в SVM вместо этой пары.Ввод.
Или есть более эффективный способ сделать это, чем encog? Спасибо.