1

Libsvm から C# で SVM をダウンロードしましたが、データをどこにロードして分類を実行すればよいかわかりません。データセットを SVM にロードして実行する方法を知りたいです。

4

1 に答える 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 に答える