我正在阅读 R 中的 predict() 并且很困惑:
有一个 Spam 数据集,我们从中使用随机抽样创建了训练数据和测试数据。我们使用了 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
预测测试数据中的垃圾邮件。它似乎正在使用从训练数据中拟合的 predictionModel$。然后我们继续与测试数据的垃圾邮件进行比较。有人可以解释吗?
这是我的理解。在行中:
predictionModel = glm(numType ~ charDollar, family = "binomial", data = trainSpam)
我们使用 trainSpam 数据创建模型。
在下一行:
predictionTest = predict(predictionModel, testSpam)
我们使用相同的模型创建预测测试,但使用测试数据。
在下一行:
predictSpam = rep("nonspam", dim(testSpam)[1])
我们创建了一个包含所有值“非垃圾邮件”的向量
在下一行:
预测垃圾邮件[predictionModel$fitted > 0.5] = "垃圾邮件"
我们正在使用 predictionModel$fitted,它已在训练数据上进行拟合,以决定将哪些行分类为垃圾邮件。难道我们不应该使用类似 predictTest 的东西来识别垃圾邮件吗?
我的想法应该是:
> 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)