2017-06-05 3 views
1

Ich versuche, das Framework (Accord) zu lernen, aber die Dokumentation kommt oft mit gebrochenen Stücken Code.
Ich wollte etwas ähnliches zu this.Polynomial Support Vector Regression in Accord.Net

Ich habe verschiedene Dinge ausprobiert und nichts schien zu funktionieren. Hat jemand ein funktionierendes nichtlineares Support-Vektor-Regressionsbeispiel?
Ich versuchte auch the official example, die auch nicht zu funktionieren scheint.

+0

Hinweis: Die Beispiele und die Dokumentation wurden endlich aktualisiert. – Cesar

Antwort

2

Die Dokumentation wird noch erstellt, nachdem das Projekt eine neue, einheitliche Lern-API eingeführt hat, die nun für alle Maschinenlernmodelle gilt. Das meiste wurde gerade erst gestern aktualisiert, aber einige Teile brauchen vielleicht noch Aufmerksamkeit.

Beantworten Sie Ihre ursprüngliche Frage, finden Sie ein Beispiel für Polynom-SV-Regression unten. Nehmen wir an, wir haben zweidimensionale Eingabevektoren, und wir würden gerne eine Zuordnung von diesen Vektoren zu einem einzelnen Skalarwert lernen.

// Declare a very simple regression problem 
// with only 2 input variables (x and y): 
double[][] inputs = 
{ 
    new[] { 3.0, 1.0 }, 
    new[] { 7.0, 1.0 }, 
    new[] { 3.0, 1.0 }, 
    new[] { 3.0, 2.0 }, 
    new[] { 6.0, 1.0 }, 
}; 

double[] outputs = 
{ 
    65.3, 
    94.9, 
    65.3, 
    66.4, 
    87.5, 
}; 

Aus Gründen des Beispiels werden wir die Maschine Komplexität Parameter auf einen sehr hohen Wert, wodurch den Lernalgorithmus gesetzt hart margen Lösungen zu finden, die sonst nicht sehr gut verallgemeinern würden. Beim Training in der realen Welt Probleme, lassen Sie die Eigenschaften UseKernelEstimation und UseComplexityHeuristic auf true gesetzt oder eine Rastersuche führen ihre optimalen Parameter zu finden:

// Create a LibSVM-based support vector regression algorithm 
var teacher = new FanChenLinSupportVectorRegression<Polynomial>() 
{ 
    Tolerance = 1e-5, 
    // UseKernelEstimation = true, 
    // UseComplexityHeuristic = true 
    Complexity = 10000, 
    Kernel = new Polynomial(degree: 1) // you can change the degree 
}; 

Jetzt, nachdem wir den Lernalgorithmus erstellt haben, können wir es verwenden können Zug ein SVM-Modell aus den Daten:

// Use the algorithm to learn the machine 
var svm = teacher.Learn(inputs, outputs); 

und schließlich können wir die Maschinen Antworten für den Satz von Eingaben erhalten und wir können überprüfen, wie gut die von der Maschine vorausgesagten Werte im Vergleich zu der erwarteten Grunde Wahrheit waren:

// Get machine's predictions for inputs 
double[] prediction = svm.Score(inputs); 

// Compute the error in the prediction (should be 0.0) 
double error = new SquareLoss(outputs).Loss(prediction); 
+0

Perfekte Antwort und sehr gut dokumentiert und erklärt. Ich kann Ihnen aufrichtig nicht genug danken! Mach weiter so! –

Verwandte Themen