libsvmはScikit-Learn(SVCクラシファイアのlibSVMに基づいている)でデータをスケーリングするためのツールを提供していますが、データのスケールを変更する方法はありません。scikit-learn SVMのデータのスケーリング
基本的には、4つの機能を使用したいと思います。そのうちの3つの範囲は0から1までで、最後のものは「大きな」可変数です。
(私のデータを自動的にスケールするeasy.pyスクリプトを使って)第4の機能をlibSVMに含めると、非常に良い結果(96%の精度)が得られます。 Scikit-Learnに4番目の変数を含めると、精度は〜78%に低下しますが、除外すると、その機能を除外したときにlibSVMと同じ結果が得られます。したがって、私はスケーリングが足りないことが問題であると確信しています。
SVMのスケーリングプロセスをプログラムで(つまりsvm-scaleを呼び出さずに)どのように複製するのですか?
おかげで、ありがとう。テストデータを列車データと一緒に標準化し、後でスライスするか、それとも単独でテストデータを実行すべきですか? – luke14free
これは[documentation](http://scikit-learn.org/stable/modules/preprocessing.html#standardization-or-mean-removal-and-variance-scaling)に記載されています。私はあなたが別にそれを行う必要があります、そうでなければ、トレーニングデータは、テストサンプルの影響を受けるだろうと思います。 'Scaler'クラスを使うと、トレーニングデータの平均と標準偏差を計算し、同じ変換をテストデータに適用することができます。 – Maehler
フリースケールの関数 'scale'ではなく' Scaler'を使うべきです。 「スケーラ」は、「パイプライン」にプラグインすることができる。 'scaling_svm = Pipeline([(スケーラ)、Scaler())、(" svm "、SVC(C = 1000))])'。 –