我只是在R中使用插入符號包進行常規邏輯迴歸。我有一個編碼爲1或0的二項式響應變量,稱爲SALES_FLAG和140個數字響應變量,我使用了dummyVars在R中的函數轉換爲虛擬變量。從Caret軟件包中預測函數給出錯誤
data <- dummyVars(~., data = data_2, fullRank=TRUE,sep="_",levelsOnly = FALSE)
dummies<-(predict(data, data_2))
model_data<- as.data.frame(dummies)
這給了我一個工作的數據框。所有的變量都是數字的。接下來,我分割爲訓練和測試:
trainIndex <- createDataPartition(model_data$SALE_FLAG, p = .80,list = FALSE)
train <- model_data[ trainIndex,]
test <- model_data[-trainIndex,]
時間使用火車功能訓練我的模型:
model <- train(SALE_FLAG~. data=train,method = "glm")
一切都運行不錯,我得到一個模型。但是,當我運行預測功能它並沒有給我什麼,我需要:
predict(model, newdata =test,type="prob")
,我得到一個錯誤:當我更換「概率」與
Error in dimnames(out)[[2]] <- modelFit$obsLevels :
length of 'dimnames' [2] not equal to array extent
在另一方面的「原始」對於預測函數內部的類型,我得到了預測,但我需要概率,所以我可以將它們編碼爲給定我的閾值的二進制變量。
不知道爲什麼會發生這種情況。我做同樣的事情,而不使用插入符包和它的工作應該如何:我
model2 <- glm(SALE_FLAG ~ ., family = binomial(logit), data = train)
predict(model2, newdata =test, type="response")
花一些時間看這個,但不知道是怎麼回事,它似乎很奇怪我。我已經嘗試了火車功能的許多變體,這意味着我沒有使用公式並使用X和Y.我使用method ='bayesglm'以及檢查和id給了我同樣的錯誤。我希望有人能幫助我。我不需要使用它,因爲火車功能得到我需要的,但caret包是一個很好的包,有很多工具,我希望能夠弄清楚這一點。
謝謝!在將響應變量轉換爲一個因子後,它就像它應該那樣工作。在使用Caret內部的列車功能時,這是否會成爲它們的基礎? – user3527301