Libsvm から C# で SVM をダウンロードしましたが、データをどこにロードして分類を実行すればよいかわかりません。データセットを SVM にロードして実行する方法を知りたいです。
3062 次
1 に答える
2
libsvm.netを使用していると仮定します
データをロードする方法が必要です:
最初の方法 -「TRAINING_FILE.txt」というファイル データ セットを使用する
注 : この方法は、ファイルが正しくフォーマットされていることを前提としています。いくつかの良いサンプルについては、こちらを参照してください。
var TRAINING_FILE = "C:\\[your_local_path]\\TRAINING_FILE.txt";
var data_set = ProblemHelper.ReadAndScaleProblem(TRAINING_FILE);
スケーリングしたくない場合は、次の手順を使用してください。
var data_set = ProblemHelper.ReadProblem(TRAINING_FILE);
次に、最後に SVM を作成する必要があります
var svm = new C_SVC(data_set, [most_appropriate_Kernel], c_parameter);
2 番目の方法 - データセットを自分でフォーマットする
注 : このメソッドは Linq を使用します。System.Ling 参照を追加したことを確認してください。
次のコードを使用して、data_set を 1 行ずつ作成できます。
var vy = new List<double>();
var vx = new List<svm_node[]>();
foreach (var line_i in your_data_source)
{
vy.Add(line_i.Y); // double value representing the class for the given experience
List<svm_node> x = new List<svm_node>();
for(int j = 0 ; j < NB_ATTRIBUTES ; j++) // Save values for each attributes
{
var attributeValue = line_i.X[j]; // value of the corresponding attribute
x.Add( new svm_node() { index = j, value = attributeValue });
}
vx.Add(x.ToArray());
}
var data_set= new svm_problem();
data_set.l = vy.Count;
data_set.x = vx.ToArray();
data_set.y = vy.ToArray();
var svm = new C_SVC(data_set, [most_appropriate_Kernel], c_parameter);
于 2013-04-15T11:55:42.770 に答える