2014-10-20 1 views
0

Я играю с немецким набором данных Credit из пакета «Caret».Различные RF-прогнозы при вставке кода из разных источников

Во-первых, я построить очень простую модель:

library(caret) 
library(randomForest) 
library(pmml) 
data(GermanCredit) 

GermanCredit <- GermanCredit[, -nearZeroVar(GermanCredit)] 
GermanCredit$CheckingAccountStatus.lt.0 <- NULL 
GermanCredit$SavingsAccountBonds.lt.100 <- NULL 
GermanCredit$EmploymentDuration.lt.1 <- NULL 
GermanCredit$EmploymentDuration.Unemployed <- NULL 
GermanCredit$Personal.Male.Married.Widowed <- NULL 
GermanCredit$Property.Unknown <- NULL 
GermanCredit$Housing.ForFree <- NULL 

set.seed(100) 
inTrain <- createDataPartition(GermanCredit$Class, p = .8)[[1]] 
GermanCreditTrain <- GermanCredit[ inTrain, ] 
GermanCreditTest <- GermanCredit[-inTrain, ] 

set.seed(1056) 
credit.rf <- randomForest(Class~., data = GermanCreditTrain, ntree = 500) 

Теперь, если я предсказать исход класса на тестовом наборе, и сделать это несколько раз, а затем сравнить результаты:

credit.pred1 <- predict(credit.rf, GermanCreditTest) 
credit.pred2 <- predict(credit.rf, GermanCreditTest) 
credit.pred3 <- predict(credit.rf, GermanCreditTest) 

all.equal(credit.pred1, credit.pred2) 
all.equal(credit.pred2, credit.pred3) 
all.equal(credit.pred1, credit.pred3) 

Я получаю те же прогнозы для всех 3 проходов. Теперь я делаю это, вручную набрав код в интерпретаторе RStudio. Но, если я скопирую код из моего текстового редактора (который я разместил здесь: https://gist.github.com/anonymous/32b3c8194362d2e10527), я получаю сообщение об ошибке, говорящее, что во втором и третьем сравнениях есть 3 строковых различия!

Как это возможно?

+0

Возможно, вы сделали опечатку в своем текстовом редакторе. –

+0

Нет, сравнивали их с WinMerge несколько раз. – neuron

ответ

0

Попробуйте использовать функцию поезда CARET в:

credit.rf <- train(Class~., data = GermanCreditTrain, method="rf") 

вместо

credit.rf <- randomForest(Class~., data = GermanCreditTrain, ntree = 500) 

Я был в состоянии воспроизвести проблему и не уверен, что является причиной его. Тем не менее, вышеприведенное, похоже, работает при вставлении:

credit.rf <- train(Class~., data = GermanCreditTrain, method="rf") 
> 
> credit.pred1 <- predict(credit.rf, GermanCreditTest) 
> credit.pred2 <- predict(credit.rf, GermanCreditTest) 
> credit.pred3 <- predict(credit.rf, GermanCreditTest) 
> 
> all.equal(credit.pred1, credit.pred2) 
[1] TRUE 
> all.equal(credit.pred2, credit.pred3) 
[1] TRUE 
> all.equal(credit.pred1, credit.pred3) 
[1] TRUE 
+0

Невероятно, это делает трюк! Есть ли у вас какие-либо идеи, что может вызвать проблему? (Или как я мог бы разобраться?) – neuron