我来自主要是python + scikit学习背景,我想知道如何获得R中逻辑回归模型的交叉验证准确度?我一直在寻找和惊讶,没有简单的方法。我正在寻找相应的东西:
import pandas as pd
from sklearn.cross_validation import cross_val_score
from sklearn.linear_model import LogisticRegression
## Assume pandas dataframe of dataset and target exist.
scores = cross_val_score(LogisticRegression(),dataset,target,cv=10)
print(scores)
对于R:我有:
model = glm(df$Y~df$X,family=binomial')
summary(model)
现在我被卡住了。原因是,我的R模型的偏差是1900,这意味着它不合适,但是python给了我85%10倍交叉验证的准确性..这意味着它的好处。看起来有点奇怪...所以我想在R中运行cross val以查看它是否有相同的结果。
感谢任何帮助!
答案 0 :(得分:7)
使用插入包的R版本:
library(caret)
# define training control
train_control <- trainControl(method = "cv", number = 10)
# train the model on training set
model <- train(target ~ .,
data = train,
trControl = train_control,
method = "glm",
family=binomial())
# print cv scores
summary(model)
答案 1 :(得分:1)
下面我回答from here并进行了一些更改。
我所做的更改是使其成为logit(逻辑)模型,添加建模和预测,存储CV的结果,并使其成为一个完整的工作示例。
另请注意,您可以使用许多软件包和功能,包括来自cv.glm()
的{{1}}。
boot
您可以添加一行来计算循环内的精确度,或者在循环完成后再执行此操作。