【发布时间】:2017-08-08 19:18:55
【问题描述】:
我正在尝试在我的训练和测试数据集上运行不同类型的 SVM 回归。我所有的代码都在工作,但我觉得我没有正确运行它,因为在训练和测试中的准确度都>0.95,这肯定太高了。
下面是我如何运行回归的代码。数据集太大而无法上传(10000 行等),但包含所有已缩放的数值变量。
我想我是在它自己的模型上而不是在火车模型上运行测试,但我不知道如何改变它。我想这是所有类型的 SVM 的同一个错误,所以我刚刚上传了两种我正在做的方式,以保持整洁。
如果不能改写,我希望我已经解释得足够好。
##non linear methods
set.seed(123)
poly.tune = tune.svm(default_flag~., data=train, kernel="polynomial",degree=c(3), coef0=c(0.1))
#summary(poly.tune)
#train
best.poly = poly.tune$best.model
poly.train = predict(best.poly, newdata=train)
svmnonlintrain<-table(poly.train, train$default_flag)
##accuracy from table
nonlineartrain<-(svmnonlintrain[1,1]+svmnonlintrain[2,2])/(svmnonlintrain[1,1]+svmnonlintrain[1,2]+svmnonlintrain[2,1]+svmnonlintrain[2,2])
#test
best.poly = poly.tune$best.model
poly.test = predict(best.poly, newdata=test)
svmnonlin<-table(poly.test, test$default_flag)
##accuracy from table
nonlineartest<-(svmnonlin[1,1]+svmnonlin[2,2])/(svmnonlin[1,1]+svmnonlin[1,2]+svmnonlin[2,1]+svmnonlin[2,2])
##radial basis function
set.seed(123)
rbf.tune = tune.svm(default_flag~., data=train, kernel="radial",gamma=c(0.1,0.5))
#summary(rbf.tune)
#train
best.rbf = rbf.tune$best.model
rbf.train = predict(best.rbf, newdata=train)
svmradialtrain <- table(rbf.train, train$default_flag)
radialtrain<-(svmradialtrain[1,1]+svmradialtrain[2,2])/(svmradialtrain[1,1]+svmradialtrain[1,2]+svmradialtrain[2,1]+svmradialtrain[2,2])
#test
best.rbf = rbf.tune$best.model
rbf.test = predict(best.rbf, newdata=test)
svmradial <- table(rbf.test, test$default_flag)
radialtest<-(svmradial[1,1]+svmradial[2,2])/(svmradial[1,1]+svmradial[1,2]+svmradial[2,1]+svmradial[2,2])
【问题讨论】:
标签: r machine-learning statistics svm