在我准备好数据库后,如下面的代码所示,我尝试将数据拆分为训练和测试。所以我使用 createDataPartition 函数来执行此操作。
我在R#中的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();
我在上面代码的最后一行只出现了一个错误:
createDataPartition出错(M1 $ Achat_client,p = 0.75,list = FALSE) :y必须至少有2个数据点
我搜索过,我在这里找到了这个逻辑解决方案r- caret package error- createDataParition no observation。
所以我在 M1 [[21]] 以及其他时间的 M1 [,21] 重新推出 M1 $ Achat_client 尝试它是否可行,但错误仍然显示!
其他事情,perphaps我的原始脚本在R中使用 M1 $ Achat_client 非常好。我很惊讶为什么在c#中我有这些错误?请问您如何解释这个?
答案 0 :(得分:0)
好吧,作为一个解决方案,我重新使用函数 createDataPartition 来使用 dickoa
提出的其他方法来拆分数据库How to split data into training/testing sets using sample function
。它有同样的目的!在我使用的情况下,它的效果非常好!