Я читаю через предсказать() в R и смущает:Понимания предсказать() в R
Существует набор данных от спама, который мы создали поезд данные и данные испытаний с использованием случайной выборки. Мы использовали trainSpam (набор обучающих данных для обучения системы). Мы хотим видеть, насколько хороша модель, путем тестирования тестового набора данных (testSpam).
predictionModel = glm(numType ~ charDollar, family = "binomial", data = trainSpam)
predictionTest = predict(predictionModel, testSpam)
predictedSpam = rep("nonspam", dim(testSpam)[1])
predictedSpam[predictionModel$fitted > 0.5] = "spam" #Here is my problem
table(predictedSpam, testSpam$type)
В строке, где мы говорим:
predictedSpam[predictionModel$fitted > 0.5] = "spam"
Как predictionModel$fitted
предсказать спам в тестовых данных. Кажется, что используется предсказаниеModel $, установленное из данных обучения. Затем мы продолжаем сравнивать с спамом тестовых данных. Может кто-нибудь объяснить?
Вот что я понял. В строке:
predictionModel = GLM (numType ~ charDollar, семьи = "бином", данные = trainSpam)
Мы создаем модель, используя данные trainSpam.
В следующей строке:
predictionTest = предсказать (predictionModel, testSpam)
Мы создаем predictionTest с использованием той же модели, но тестовые данные.
В следующей строке:
predictedSpam = Rep ("nonspam", тусклое (testSpam) [1])
Мы создали вектор со всеми значениями "nonspam"
В следующей строке:
predictedSpam [predictionModel $ установлен> 0,5] = "спам"
Мы используем установленное предсказаниеModel $, которое было установлено над данными обучения, чтобы решить, какие из строк следует классифицировать как спам. Разве мы не должны использовать что-то вроде предсказания для идентификации спама?
Моя идея о том, что это должно быть это:
> predictionModel = glm(numType ~ charDollar, family = "binomial", data = trainSpam)
> predictionTest = predict(predictionModel, testSpam,type="response")
> predictedSpam = rep("nonspam", dim(testSpam)[1])
> predictedSpam[predictionTest > 0.5] = "spam"
> table(predictedSpam, testSpam$type)
shoudn't быть 'predictedSpam [predictionTest> 0,5] = "спам"' вместо 'predictedSpam [predictionModel $ установлен> 0,5] = "спам" '? – Rcoster
См. Слайды Хэдли Уикхема, показывающие применение функции прогнозирования(): http://stat405.had.co.nz/lectures/23-modelling.pdf –
Я не уверен, что я придерживаюсь любого варианта, пока вы, не предоставил e, что «trainSpam». Конечно, если 'length (predictionModel $ установлен)' is! = 'Length (predictedSpam)', примечание Rcoster не будет выполнено. Можете ли вы переделать, чтобы уточнить, что такое ваш код и данные? –