我有一个对象列表,我们称之为dataset
,我想分成两个新列表,让我们称之为trainSet
和testSet
,同时读取输入{{1逐行列出,其中列表对象继承自dataset
读取流对象(在此特定情况下)。
让我们定义分割比率node
,以便将split_ratio=0.75
分成dataset
至少75%的trainSet
和25%的dataset
1}}列出长度(例如):
testSet
逐行阅读时我会做
var dataSize = dataset.length,
lim_75 = 0,
lim_25 = 0;
lim_75 = Math.floor(dataSize * split_ratio); // e.g.: .75
if (lim_75 < 1) lim_75 = 1;
lim_25 = Math.floor(dataSize * (1 - split_ratio)); // eg: 1-.75=.25
if (lim_25 < 1) lim_25 = 1;
这是有效的,我将在最后得到两个大小为0.75的while (row = dataset.next()) {
var r = Math.random(); // split randomness seed
if (r < split_ratio && lim_75_count < lim_75 || r >= split_ratio && lim_25_count > lim_25) {
lim_75_count += 1;
trainSet.write(row);
} else {
lim_25_count += 1;
testSet.write(row);
}
}
和trainSet
列表长度为0.25的testSet
。
现在,假设dataset
列表中的对象具有类似
dataset
其中{
objectId: 12345,
objectClass: 'CLASS_A`
objectValue: 'The quick brown fox jumps over the lazy dog'
}
属于objectClass
,CLASS_A
等值的枚举。
我希望保留上面针对CLASS_B
和split_ratio
长度比率定义的trainSet
,但添加一个新条件,让我以新比例分割testSet
,根据此分区映射,按对象键dataset
对列表进行分区:
objectClass
哪个是正确的分区条件,哪个适用于[
{
objectClass: 'TYPE_A',
ratio: 0.30
},
{
objectClass: 'TYPE_B',
ratio: 0.20
},
{
objectClass: 'TYPE_C',
ratio: 0.50
}
]
,第一个基于大小?
示例
一个澄清的现实世界的例子:
假设AND
,如果`dataset.length = 100,则必须split_ratio=.70
,trainSet.length=70
。
现在,给定两个testSet.length=30
类型的objectClass
值为
ratio
和CLASS_A=0.20
,我们CLASS_B=0.80
0.2*70/100
和CLASS_A
trainSet
必须有0.80*30/100
项testSet
项,0.80*70/100
中的CLASS_B
和trainSet
0.20*30/100
项CLASS_B
项testSet
项CLASS_A
项。
在这种情况下,假设分区映射中只有CLASS_B
和[
{
objectClass: 'TYPE_A',
ratio: 0.20
},
{
objectClass: 'TYPE_B',
ratio: 0.80
}
]
类型,如:
<input type='text' name='date_from' class="form-control date_picker" placeholder="Data de ida..." id='datetimepicker1' required/>
<div id="datepicker1" class="calendar"></div>