R中关于SVM分类器的查询
Posted
技术标签:
【中文标题】R中关于SVM分类器的查询【英文标题】:Query about SVM classifier in R 【发布时间】:2016-03-16 16:12:21 【问题描述】:我正在处理一个音乐数据集,我必须将音乐数据分类为流派。我有测试和训练数据集。 我已链接数据集供您检查 here. 我在 Rstudio 工作
这是我编写的代码。我是初学者,不知道我在做什么。我随机射箭。如果您需要更多信息,请告诉我。
使用的库是:-
library("e1071")
代码:-
svm.model <- svm(GENRE ~ ., data = musictraindata, cost = 62.5, gamma = 0.5)
现在我的问题是在 x 参数中放什么。我已经从火车数据集中输入了“GENRE”,但它给了我以下错误。
svm.default(x, y, scale = scale, ..., na.action = na.action) 中的错误: 需要用于回归的数值因变量。
请有人指导我应该做什么。谢谢。
更正后:- 我用上述更正运行了代码。我得到了一个 svm.model 如下:-
svm.model
Call:
svm(formula = factor(GENRE) ~ ., data = musictraindata, cost = 62.5, gamma = 0.5, type = "C-classification",
tolerance = 0.01)
Parameters:
SVM-Type: C-classification
SVM-Kernel: radial
cost: 62.5
gamma: 0.5
Number of Support Vectors: 11880
现在我尝试通过将其与测试数据一起使用来创建预测模型。
svm.pred <- predict(svm.model,musictestdata)
当我绘制svm.pred
时,我得到如下图,这是极不可能的。这里是:
这是我应该如何进行的对吗?难道我做错了什么 ? 告诉我。
【问题讨论】:
【参考方案1】:很难说没有可重复的示例,但我会确认您的因变量(类型)的类是一个因素,并且没有像 NA 那样愚蠢的事情发生。使用class(musictraindata$GENRE)
进行检查。另外值得注意的是,R 对大小写敏感,因此“流派”和“流派”会有所不同。
您还可以尝试指定要运行的 SVM 类型,方法是使用
(type = "C-classification")
看看它是否会引发更有用的错误?
【讨论】:
class(musictraindata$GENRE) 给我“ [1] "character" " 作为输出。通过使用 (type = "C-classification") 运行代码,Rstudio 需要花费大量时间来处理。如果我得到一些输出,我会更新帖子。同时让我知道我是否可以做其他事情或者您需要更多信息。再次感谢。svm.model <- svm(factor(GENRE) ~ ., data = musictraindata, cost = 62.5, gamma = 0.5)
应该可以工作,或者您可以使用 musictraindata$GENRE <- factor(musictraindata$GENRE)
并运行您的原始 svm 代码。您需要将流派作为一个因素,而不是一个角色。
尝试summary(factor(musictraindata$GENRE))
以确保其中包含正确的流派。 SO 新手,但如果有聊天/方式让我查看您的数据,我不介意提供帮助。
我做到了。当我重新运行代码时,它可以正常工作。万分感谢 ! PS:我可能已经发送了 LinkedIN 连接请求以进一步讨论此事,但我想它已经解决了。如果我在进一步深入研究数据集时被赶上,会告诉你。 :D以上是关于R中关于SVM分类器的查询的主要内容,如果未能解决你的问题,请参考以下文章
将 SVM 分类器应用于看不见的新数据时,我遇到了错误消息。 (R 用户)