1
我使用gbm()函數來創建模型,我想要得到精度。以下是我的代碼:如何計算GBM精度r
df<-read.csv("http://freakonometrics.free.fr/german_credit.csv", header=TRUE)
str(df)
F=c(1,2,4,5,7,8,9,10,11,12,13,15,16,17,18,19,20,21)
for(i in F) df[,i]=as.factor(df[,i])
library(caret)
set.seed(1000)
intrain<-createDataPartition(y=df$Creditability, p=0.7, list=FALSE)
train<-df[intrain, ]
test<-df[-intrain, ]
install.packages("gbm")
library("gbm")
df_boosting<-gbm(Creditability~.,distribution = "bernoulli", n.trees=100, verbose=TRUE, interaction.depth=4,
shrinkage=0.01, data=train)
summary(df_boosting)
yhat.boost<-predict (df_boosting ,newdata =test, n.trees=100)
mean((yhat.boost-test$Creditability)^2)
但是,使用匯總功能時,會出現錯誤。錯誤消息如下。
Error in plot.window(xlim, ylim, log = log, ...) :
유한한 값들만이 'xlim'에 사용될 수 있습니다
In addition: Warning messages:
1: In min(x) : no non-missing arguments to min; returning Inf
2: In max(x) : no non-missing arguments to max; returning -Inf
,當與平均函數測量MSE,下面的錯誤也出現:
Warning message:
In Ops.factor(yhat.boost, test$Creditability) :
요인(factors)에 대하여 의미있는 ‘-’가 아닙니다.
你知道爲什麼這兩種錯誤出現?先謝謝你。
爲什麼我應該改變Creditability變量的類型??它是一個由0和1組成的因子類型變量。有沒有辦法以%形式而不是MSE獲得準確性?或者,MSE是衡量準確性的唯一方法嗎? –
@신익수因爲它是'gbm'的要求,所以我將'Creditability'從因子改爲數字。我沒有考慮用於計算'gbm'的預測性能的方法。無論如何,在這種情況下,MSE不是一個合適的方法。我建議使用例如基於ROC曲線的方法。 –
@Macro Sandri然後,要在r中執行gbm,我是否必須將目標變量(因變量)更改爲數字? ?不是類別?但是,數據與分類有關,而不是迴歸。 –