java randomize_Java Instances.randomize方法代码示例

该代码示例展示了如何在Java中根据随机种子对数据集进行随机化。首先从指定路径读取原始ARFF文件,然后使用Random对象对数据集进行随机化。接着,将数据分为'InTrace'和'OutTrace'两类,并按比例选择实例生成新的数据集,最后将新数据集保存到指定路径。
摘要由CSDN通过智能技术生成

import weka.core.Instances; //导入方法依赖的package包/类

/**

Generate Random sample according to random seed on Desktop, each sample has the same distribution of InTrace/OutTrace

* and have SIZE instances.

*

* @param path original arff file to be sampled in path

* @param rand random seed

* @param num the number of selection

* */

public static void generateARFF(String path, int rand, int num) throws Exception{

/*** original dataset reading */

Instances data = DataSource.read(path);

data.setClassIndex(data.numAttributes()-1);

/*** randomize the dataset */

data.randomize(new Random(rand));

/*** dataIn to save instances of InTrace class */

Instances dataIn = new Instances("dataIn", InsMerge.getStandAttrs(), 1);

dataIn.setClassIndex(dataIn.numAttributes() - 1);

/*** dataOut to save instances of OutTrace class */

Instances dataOut = new Instances("dataOut", InsMerge.getStandAttrs(), 1);

dataIn.setClassIndex(dataIn.numAttributes() - 1);

/*** add OutTrace instances into dataOut */

for(int i=0; i

if(data.get(i).stringValue(data.get(i).classAttribute()).equals("OutTrace")){

dataOut.add(data.get(i));

}

}

/** add InTrace instances into dataIn */

for(int i=0; i

if(data.get(i).stringValue(data.get(i).classAttribute()).equals("InTrace")){

dataIn.add(data.get(i));

}

}

/*** get the In/Out ratio in original dataset */

int inTrace = dataIn.numInstances();

int outTrace = dataOut.numInstances();

double ratioI = inTrace*1.0/(outTrace + inTrace);

/*** expected number to select from original dataset*/

int intrace = (int) (num * ratioI);

int outtrace = num - intrace;

/** create new generated dataset train*/

Instances train = new Instances("dataIn", InsMerge.getStandAttrs(), 1);

train.setClassIndex(train.numAttributes() - 1);

/** train get X instances from dataIn*/

for(int i=0; i

train.add(dataIn.get(i));

}

/** train get Y instances from dataOut*/

for(int j=0; j

train.add(dataOut.get(j));

}

/** save the dataset in path, we save the arff into D:/Users/LEE/Desktop/New_Data/XXX.arff */

String filename = "files/generated/" + filterName(path) + rand + ".arff";

DataSink.write(filename, train);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值