即使我找到错误 "y must have at least 2 data points" 的逻辑解决方案,它也不起作用

Even I find the logical solution of the error "y must have at least 2 data points" , It doesn't work

按照下面的代码所示准备好数据库后,我尝试将数据拆分为训练和测试。所以我使用 createDataPartition 函数来做到这一点。

我的 C# R 脚本:

// the data base
DataFrame BASE = engine.Evaluate("BASE<-data.frame(Type_peau,PEAU_CORPS,SENSIBILITE,IMPERFECTIONS,BRILLANCE,GRAIN_PEAU,RIDES_VISAGE,ALLERGIES,MAINS,INTERET_ALIM_NATURELLE,INTERET_ORIGINE_GEO,INTERET_VACANCES,INTERET_COMPOSITION,INT_AGE,priorite2,priorite1,MILRES,Profil_Select,Age,Nbre_gift,Achat_client)").AsDataFrame();

// Converting categorical variables into quantitatives

engine.Evaluate("must_convert<-sapply(BASE,is.factor)").AsExpression();
engine.Evaluate("M2<-sapply(BASE[,must_convert],unclass)").AsExpression();
engine.Evaluate("out<-cbind(BASE[,!must_convert],M2)").AsExpression();
engine.Evaluate("out=unlist(lapply(out,as.numeric))").AsExpression();
engine.Evaluate("out=as.data.frame(out)").AsExpression();
engine.Evaluate("out$Achat_client=sapply(out$Achat_client,function(x) (if (x==1) {'Fidèle'} else {'Non Fidèle'}))").AsExpression();
engine.Evaluate("out$Achat_client=as.factor(unlist(out$Achat_client))").AsExpression();

// Creating new data base

DataFrame M1 =engine.Evaluate("M1=out").AsDataFrame();

// Creating the index of splitting

engine.Evaluate("val_index<-createDataPartition(M1$Achat_client,p=.75,list=FALSE)").AsExpression();

我在上面代码的最后一行遇到了一个错误:

Error in createDataPartition(M1$Achat_client, p = 0.75, list = FALSE) : y must have at least 2 data points

我搜索并在此处找到了这个合乎逻辑的解决方案 r- caret package error- createDataParition no observation

所以我用 M1[[21]] 替换了 M1$Achat_client M1[21] 在其他时间只是为了尝试它是否有效,但错误仍然显示!

其他,也许我的原始脚本在 R 中以使用 M1$Achat_client 的方式工作得很好。我很惊讶为什么在 c# 中我有这些类型的错误?请问这个怎么解释?

嗯,作为一个解决方案,我通过使用 dickoa

How to split data into training/testing sets using sample function

。目的是一样的!在我的使用情况下效果很好!