我正在使用此函式來計算 MCC:https : //www.rdocumentation.org/packages/mltools/versions/0.3.5/topics/mcc。
它生成此錯誤:
Error in mcc (actuals = data.test $ Y, preds = pred_rf, TP = tab_rf [1, 1],:
Either {'preds' and 'actuals'} or {'TP', 'FP', 'TN', 'FN'} or {'confusionM'} should be provided.
我的代碼如下(我使用的是隨機森林):
library("mltools")
library("caret")
library("MASS")
library("MLmetrics")
data=data.frame()
for (i in 0:4){
mu1=c(0 i,4)
Sigma= matrix(c(1,0.5,0.5,1),ncol=2)
X1_distribution=mvrnorm(n=100,mu=mu1,Sigma=Sigma)
mu2=c(5-i,1)
Sigma= matrix(c(1,0.5,0.5,1),ncol=2)
X2_distribution=mvrnorm(n=100,mu=mu2,Sigma=Sigma)
X=rbind(X1_distribution,X2_distribution)
Y=c(rep(1,100),
rep(0,100))
data.aux=data.frame(Y=Y,
X1=X[,1],
X2=X[,2])
data=rbind(data,data.aux)
}
data.train=data[1:800,]
data.test=data[801:1000,]
method_rf= train(form= formula('factor(Y) ~ .'),data=data.train, method="rf") #randomForest
pred_rf=predict(method_rf,data.test[,2:3]) #Predict randomForest
tab_rf=table(actual=data.test$Y, #ConfusionMatrix for RF
predicted=pred_rf)
metrics_rf=data.frame(MCC_rf=mcc(actuals=data.test$Y,
preds=pred_rf,
TP=tab_rf[1,1],
FP=tab_rf[1,2],
TN=tab_rf[2,2],
FN=tab_rf[2,1],
confusionM=tab_rf))
metrics_rf
uj5u.com熱心網友回復:
隨著錯誤訊息意味著,你應該使用兩種 {'preds' and 'actuals'} 或 {'TP', 'FP', 'TN', 'FN'} 或 {'confusionM'},但肯定不是所有的人都togetner,因為你正試圖在這里做。
將代碼中的 MCC 計算更改為
MCC_rf=mcc(TP=tab_rf[1,1],
FP=tab_rf[1,2],
TN=tab_rf[2,2],
FN=tab_rf[2,1])
奇跡般有效:
> MCC_rf
[1] 0.60012
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/317847.html
