C# 如何将数据X、Y分割到训练和测试中?

C# 如何将数据X、Y分割到训练和测试中?,c#,.net,machine-learning,svm,ml.net,C#,.net,Machine Learning,Svm,Ml.net,大家好)我正在开发股票预测应用程序(大学项目),以便进行培训 SVM模型我需要将数据分成训练集和测试集x\u-train,x\u-test,y\u-train,y\u-test 我有X和Y两个集合,我需要分开。在python中,我知道有一些函数可以轻松地将数据分成四个变量x\u-train,x\u-test,y\u-train,y\u-test,但我在c中找不到类似的函数。在微软官方网站上,我只找到了这个例子,但正如我提到的,它只接受一个变量,在我的例子中,SVM将无法正常工作。 我听说过Mic

大家好)我正在开发股票预测应用程序(大学项目),以便进行培训 SVM模型我需要将数据分成训练集和测试集
x\u-train,x\u-test,y\u-train,y\u-test
我有X和Y两个集合,我需要分开。在python中,我知道有一些函数可以轻松地将数据分成四个变量
x\u-train,x\u-test,y\u-train,y\u-test
,但我在c中找不到类似的函数。在微软官方网站上,我只找到了这个例子,但正如我提到的,它只接受一个变量,在我的例子中,SVM将无法正常工作。 我听说过MicrosoftML项目,但它只拆分一个变量。 我尝试过这个例子,但正如我所提到的,它只接受一个veriable,并提供train和testsplit

var mlContext = new MLContext();// Creating the ML.Net IHostEnvironment
var dataview = mlContext.Data.LoadFromEnumerable(examples);

var split = mlContext.Data.TrainTestSplit(dataview, testFraction: 0.1, samplingKeyColumnName: "Group");

var trainSet = mlContext.Data.CreateEnumerable<DataPoint>(split.TrainSet, reuseRowObject: false);

var testSet = mlContext.Data.CreateEnumerable<DataPoint>(split.TestSet,reuseRowObject: false);
var mlContext=new mlContext();//创建ML.Net IHostEnvironment
var dataview=mlContext.Data.LoadFromEnumerable(示例);
var split=mlContext.Data.TrainTestSplit(dataview,testFraction:0.1,samplingKeyColumnName:“组”);
var trainSet=mlContext.Data.CreateEnumerable(split.trainSet,reuseRowObject:false);
var testSet=mlContext.Data.CreateEnumerable(split.testSet,reuseRowObject:false);
可能有人有这个问题?

数据集创建 首先合并X、Y列,为每个训练和测试形成一个数据集(或IDataView)

然后,您可以拆分合并的数据集中的任何一个,以创建额外的保留/验证拆分。在股票数据集中,我将训练集拆分为训练+验证(或在训练中使用交叉验证),以避免测试数据集中的泄漏,并确保测试数据集中的度量是准确的

泄漏 希望您的
samplingKeyColumnName:“Group”
列能够部分保护您免受随机拆分时间序列数据集的泄漏。拆分将使您的模型学习比评分数据更新和旧的数据点。泄漏将人为地导致您的指标高于预期。基于股票代码的拆分在某种程度上仍然会泄漏,例如,了解谷歌的未来,将为我提供有关预测微软金融时报的有用信息。见:

通常,您希望基于时间对时间序列数据集进行分割(序列中最早、验证中最新、测试中最新);或者使用滚动原点交叉验证