即使我发现错误的逻辑解决方案“y必须至少有2个数据点”,它不起作用

时间:2018-01-11 15:19:46

标签: c# r.net

在我准备好数据库后,如下面的代码所示,我尝试将数据拆分为训练和测试。所以我使用 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#中我有这些错误?请问您如何解释这个?

1 个答案:

答案 0 :(得分:0)

好吧,作为一个解决方案,我重新使用函数 createDataPartition 来使用 dickoa

提出的其他方法来拆分数据库

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

。它有同样的目的!在我使用的情况下,它的效果非常好!