0

13 の変数で予測しようとしているバイナリ タグがあります。

私はR SVMを使用しました(正確にはrattleからKSVMを使用しました)。平面の関数(変数に基づく重み)を取得して、その関数を他のデータシステムで使用したいと考えています。何か案が?

ありがとう!

4

2 に答える 2

1

私もこれでしばらく悩みました!最後に答えが見つかりました。これはkernlab、2 クラスの場合にパッケージを使用して示します。

library(kernlab)
# set seed to make this reproducible
set.seed(101)
# create a matrix of inputs
x <- rbind(matrix(rnorm(120),,2),matrix(rnorm(120,mean=3),,2)); head(x)
# create an output...something simple and contrived
y <- matrix(c(rep(1,60),rep(-1,60))); head(y); tail(y)
# train svm model
our_svm <- ksvm(x,y,type="C-svc")
# if you want to plot classification results, run plot(our_svm,data=x)

# get the weights of the classifier
(w <- colSums(coef(our_svm)[[1]] * x[unlist(alphaindex(our_svm)),]))
# get the intercept
(b <- b(our_svm))

# our classifier takes the form g(x) = sign(f(x)),
# where f(x) = w*x + b, and input variables x are SCALED AND TRANSPOSED

# scale it
x_sc <- scale(x); head(x_sc)
# get the f(x) (don't forget to transpose x!)
(f_x <- colSums(t(x_sc)*w) + b)
# get the sign, which is the class of the inputs
(g_x <- sign(f_x))

# if we run fitted(our_svm), we'll see it came up with the same results
# as our manual calculations
table(Manual_Calc = g_x, From_Model = fitted(our_svm))

したがって、新しい入力がある場合は、それをスケーリングし、転置してf(x)にプラグインし、次にg(x)にプラグインしてそのクラスを取得します。これら 2 つの関数が SVM 分類子です。

于 2015-08-03T09:27:30.113 に答える
0
  1. RStudio を開き、rattle を呼び出します。
  2. GUIを使用してモデルを実行します。
  3. ログタブがあります (一番右のもの)。このタブには、GUI を使用して行った対応するすべての R コマンドが含まれています。
  4. コマンドを見つけてコピーし、必要な場所で使用します。
于 2014-10-05T09:13:19.867 に答える