2017-11-05 8 views
0

私はy = 1,2,3,4というラベルを持つデータセットを持っています。私はcaratで利用可能なtrain()関数を使ってsvmLinearメソッドで分類したいと思いますここに私が書いたサンプルコードがあります。私はデフォルトのtrainControl関数を使用しました。svmLinear caratパッケージを使用した分類の仕方回帰

trainer = train(y~., data=traindf, method="svmLinear") 
predicted = predict(trainer, testdf) 

は、しかし、予測値が1,2,3,4のdiscreete値ではないとして、それはむしろその後、分類を回帰を実行している、のように表示されます。これには小数値も含まれています。 列車機能のsvmLinearメソッドを使用してマルチクラス分類を実行するにはどうすればよいですか?

答えて

0

どのクラスがyですか? svmLinearパッケージのパラメータがない限り、出力タイプを指定することができます。yが解析され、そのタイプに関するモデルが構築されます。少なくともこれは、Caretがラップされた他の監督されたメソッド(例えば、nnet)とどのように機能するかです。要するに

yがでタイプfactorであることを確実にすることによってこの問題を解決:

trainer = train(as.factor(y) ~ . -y, data=traindf, method="svmLinear") 

アップデート:私はキャレットがlinearSVMのためにラップされた特定のパッケージにドキュメントを見つけることができません
います引数の型を指定することもできるはずです。次のようになります。type=C-svc

これは、タイプを指定することもできますpredict()の場合もあります。例えばtype = c('prob', 'class')

関連する問題