私はRには新しく、Rで自分のsvmモデルを保存しようとしていますが、ドキュメントを読みましたが、何が間違っているのか分かりません。Rオブジェクトは行列ではありません
"オブジェクトはマトリックスではありません"というエラーが表示されます。これは、データがマトリックスではないように見えるかもしれませんが、それは...欠けているものです。
私のデータは次のように定義されています。それがあるべきようにこれはそう
:として
data = read.table("data.csv")
trainSet = as.data.frame(data[,1:(ncol(data)-1)])
最後の行は、私のラベル
である私は私のモデルを定義しようとしています
正しいが、私は他の例を探すのに苦労している。
# load libraries
require(e1071)
require(pracma)
require(kernlab)
options(warn=-1)
# load dataset
SVMtimes = 1
KERNEL="polynomial"
DEGREE = 2
data = read.table("head.csv")
results10foldAll=c()
# Cross Fold for training and validation datasets
for(timesRun in 1:SVMtimes) {
cat("Running SVM = ",timesRun," result = ")
trainSet = as.data.frame(data[,1:(ncol(data)-1)])
trainClasses = as.factor(data[,ncol(data)])
model = svm(trainSet, trainClasses, type="C-classification",
kernel = KERNEL, degree = DEGREE, coef0=1, cost=1,
cachesize = 10000, cross = 10)
accAll = model$accuracies
cat(mean(accAll), "/", sd(accAll),"\n")
results10foldAll = rbind(results10foldAll, c(mean(accAll),sd(accAll)))
}
# create model
svm.model <- svm(type ~ ., data = trainSet, type='C-classification', kernel='polynomial',scale=FALSE)
私のサンプルのうちの一つの例は、次のようになります:
ここ10.135338 7.214543 5.758917 6.361316 0.000000 18.455875 14.082668 31
再現可能な例がないと難しいです。どのパッケージからの 'svm'関数は' data '引数が行列であると期待していますか?もしそうなら、それはあなたの問題です。 'read.table'は、より高いレベルの構造であるdata.frameオブジェクトとしてデータをインポートします。 'data = as.matrix(trainSet)'を試してください。 – jdobres
@jdobresこれはe1071パッケージからのものです。私は現在のコードを追加しました。私のデータセットは本当に大きいですが、私は例を示しました。私のデータセットは実際に各サンプルに対して約3000の特徴を持っていますので、ここでは簡略化しました。 – badner
'model.matrix()'や 'sparse.model.matrix()'のようなものを使うとエラーになります(データサイズが大きいためです)。 'svm()'の前に 'sparse.model.matrix()'を使うときのヒントは、コード内のデータを標準化します。 – abhiieor