сохранить прогноз randomForest как вектор - PullRequest
1 голос
/ 13 июня 2019

Я оцениваю randomForest, затем запускаю функцию randomForest.predict для некоторых удерживаемых данных.

Что я хотел бы сделать, это (предпочтительно) добавить прогноз для каждой строки в фрейм данных, содержащий данные удержания в качестве нового столбца, или (второй выбор) сохранить (номер строки в тестовых данных, прогноз для этой строки) как файл .csv.

Что я не могу сделать, так это получить доступ к внутренним объектам объекта результатов таким образом, чтобы я мог это сделать. Я новичок в R, поэтому я ценю вашу помощь.

У меня есть:

    res <-predict(forest_tst1, 
                  test_d,
                  type="response")

, который успешно дает мне кучу предсказаний.

Следующее недопустимо R, но в идеале я бы сделал что-то вроде:

test_d$predicted_value <- results[some_field_of_the_results]

или

for i = 1:nrow(test_d)
    test_d[i, new_column] = results[prediction_for_row_i]
end

По сути, я просто хочу столбец предсказанных 1 или 0, соответствующих строкам в test_d. Я пытался использовать следующие команды для доступа к внутренним объектам res, но я не нашел ничего, что мне помогло.

attributes(res)
names(res)

Наконец-то - меня немного смущает следующее, если кто-нибудь может объяснить!

typeof(res) = "integer"

Редактировать: я могу сделать

res != test_d$gold_label

, что немного сбивает с толку, потому что я сравниваю столбец и объект, не являющийся столбцом (??), и

length(res) = 2053

и res представляется индексируемым

attributes(res[1])
$names
[1] "6836"

$levels
[1] "0" "1"

$class
[1] "factor"

но я не могу разумным образом выбрать части

> res[1][1]
6836 
   0 
Levels: 0 1

> res[1]["levels"]
<NA> 
<NA> 
Levels: 0 1

1 Ответ

0 голосов
/ 13 июня 2019

Если вы правильно поняли, все, что вы пытаетесь сделать, это добавить прогнозы к своим тестовым данным?

ind <- sample(2, nrow(iris), replace = TRUE, prob=c(0.8, 0.2)) 
TestData = iris[ind == 2,] ## Generate Test Data
iris.rf <- randomForest(Species ~ ., data=iris[ind == 1,]) ## Build Model
iris.pred <- predict(iris.rf, iris[ind == 2,]) ## Get Predictions
TestData$Predictions <- iris.pred ## Append the Predictions Column

OutPut:
    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species Predictions
9            4.4         2.9          1.4         0.2     setosa      setosa
16           5.7         4.4          1.5         0.4     setosa      setosa
17           5.4         3.9          1.3         0.4     setosa      setosa
32           5.4         3.4          1.5         0.4     setosa      setosa
42           4.5         2.3          1.3         0.3     setosa      setosa
46           4.8         3.0          1.4         0.3     setosa      setosa
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...