Прежде чем вы перейдете к хиппи-машинному обучению-предикату-xyz, имеет смысл проверить входные данные, в противном случае выгрузка мусора не так ли?
Если вы делаете сводку ваших предикторов:
summary(small.eset)
GSM101114 GSM101115 GSM101116 GSM114089
Min. : 6.64 Min. : 6.052 Min. : 6.309 Min. : 0.5
1st Qu.: 15.42 1st Qu.: 14.814 1st Qu.: 15.167 1st Qu.: 31.7
Median : 38.56 Median : 37.746 Median : 38.643 Median :116.9
Mean : Inf Mean : Inf Mean : Inf Mean : Inf
3rd Qu.:152.05 3rd Qu.:158.972 3rd Qu.:156.699 3rd Qu.:503.9
Max. : Inf Max. : Inf Max. : Inf Max. : Inf
GSM114090 GSM114091 GSM114092 GSM114093
Min. : 0.2 Min. : 0.7 Min. : 0.4 Min. : 0.3
1st Qu.: 30.3 1st Qu.: 51.0 1st Qu.: 40.5 1st Qu.: 38.7
Median :115.9 Median :175.3 Median :145.2 Median :136.2
Mean : Inf Mean : Inf Mean : Inf Mean : Inf
3rd Qu.:510.9 3rd Qu.:555.2 3rd Qu.:515.9 3rd Qu.:546.1
Max. : Inf Max. : Inf Max. : Inf Max. : Inf
Это много Inf, с которым нужно иметь дело. И, взглянув на предыдущие шаги,
e.mat <- 2^(exprs(gse[[1]])[,c(20:40)])
Значения уже находятся в некотором диапазоне от 0,1 до 1e5, если вы возьмете 2 степени этого, вы получите астрономические числа.
Вы используют randomForest, один из вариантов - просто go опередить модель с необработанными значениями при условии, что они нормализованы:
x <- exprs(gse[[1]])[,c(20:40)]
# half of the samples are above 25% quantile
x <- x[rowMeans(x>quantile(x)[2]) > 0.5,]
x <- t(x)
y=as.factor(group)
rf <- randomForest(x=x, y=as.factor(group), ntree=100)
Или вы можете стабилизировать предикторы по отклонениям:
library(vsn)
x <- exprs(gse[[1]])[,c(20:40)]
x <- x[rowMeans(x>quantile(x)[2]) > 0.5,]
fit = vsn2(x)
xnorm = predict(fit, x)
rf <- randomForest(x=t(xnorm), y=as.factor(group), ntree=100)