【发布时间】:2013-11-17 02:08:59
【问题描述】:
我正在尝试使用一组 1664(列)x 208(行)的数据运行随机森林。我的因变量是保留时间(秒),我的自变量是 1664 个不同的描述符,所有不同的化合物。所有描述符都给出一个值,而不是分类变量。我正在尝试执行随机森林进行回归。但是,当我尝试使用以下代码运行它时:-
urine.rf <- randomForest(RT..seconds.~., data=urine, importance=TRUE)
我收到消息:-
randomForest.default(m, y, ...) 中的错误: 无法处理超过 32 个类别的类别预测变量。
我在网上看到你可以通过构建某种形式的 model.matrix 来解决这个问题。我对 R 完全陌生,对如何做到这一点一无所知。我已经尝试在我的 csv 文件中格式化我的单元格,以便所有单元格都是数字,但由于某种原因,它仍然会作为分类预测变量出现。我该如何解决这个问题?
RT (seconds) 1_MW 2_AMW 3_Sv 4_Se 5_Sp 6_Ss
46.58353 155.18 7.76 11.8 20.61 12.21 32.67 0.59
46.79514 145.29 5.01 14.76 28.37 16.11 21 0.51
48.18893 169.21 7.36 13.4 23.49 13.97 34.17 0.58
49.94328 169.21 7.36 13.4 23.49 13.97 34.17 0.58
50.81087 187.33 5.51 17.87 33.59 19.32 30.17 0.53
51.3834 104.2 4.96 10.39 20.67 11.41 16.5 0.49
51.51799 125.17 8.94 7.41 14.81 8.3 27.92 0.53
52.67208 117.13 7.81 8.2 15.73 8.45 29.33 0.55
52.79043 137.18 7.22 11.59 19.12 12.13 26.33 0.61
52.79046 161.23 6.2 13.71 26.27 14.7 33.5 0.53
这就是我使用的数据库的样子。我希望 RT 成为我的 Y 变量,而其他所有内容(1_MW 和之后的所有其他变量)都成为我的自变量(有 1664)
谢谢
【问题讨论】:
-
什么是
table(apply(urine, 2, class))? -
(另外,对于 208 行来说,预测变量的数量非常可笑,但这是另一个问题!)
-
我应用了该代码并得到:- 字符 1661 所以我猜它没有将我的数据注册为数值?
-
是的,我知道它有大量的预测因子,这一切都是为了确定代谢物的哪些理化性质在确定保留时间时最重要,并且有很多不同的性质需要考虑哈哈
-
是的,也就是说你有 1661 个字符向量。你是如何导入这些数据的(你使用了
read.csv)?您可能选择了一个有趣的header设置,这意味着它将您的标题解释为数据,或者您有一行包含非数字的数据。names(urine)[1:3]是否等于[1] RT (seconds) 1_MW 2_AMW?
标签: r random-forest