根据给定概率随机按行分割文件
来源:互联网 发布:松下剃须刀哪款好 知乎 编辑:程序博客网 时间:2024/06/07 04:44
最近处理决策树输入数据的时候遇到一个问题:如果输入文件为一个文件,如何分为训练样本和测试样本呢?而且一般是训练数据多于测试数据。下面就说下我的实现思路:
假如以7:3的概率分割输入文件,那么可以使用一个随机数。随机产生一个0~9的随机数,判断此数是否小于7(此处数值可以根据训练数据和测试数据的比值进行设置),若小于则应该把此行输入数据归为训练数据,否则归为测试数据;
下面是java实现代码:
package org.fansy.filesplit.random;import java.io.*;import java.util.*;public class SplitFile {/** * 随机把一个文件以行为单位按照一定概率分为两个 * 主要是为了一个做训练样本,一个做测试样本; * @param args * @throws IOException */public static void main(String[] args) throws IOException {String sourceStr="/home/fansy/data/forest/car.txt";String des1Str="/home/fansy/data/forest/car_train.txt";String des2Str="/home/fansy/data/forest/car_test.txt";File source =new File(sourceStr);File des1=new File(des1Str);File des2=new File(des2Str);if(!source.exists()){System.out.println("source file does not exist");return ;}exist(des1);exist(des2);FileWriter des1W=new FileWriter(des1,true);FileWriter des2W=new FileWriter(des2,true);// read source file and split it into two filesFileReader fileReader =new FileReader(source);BufferedReader bf=new BufferedReader(fileReader);String line=null;Random r=new Random();int temp=0;while((line=bf.readLine())!=null){ temp=Math.abs(r.nextInt())%10; if(temp<7){ // '7' can be changed in order to set the probability of train data and test data des1W.append(line+"\n"); }else{ des2W.append(line+"\n"); }}bf.close();fileReader.close();des1W.close();des2W.close();System.out.println("split file done ...");}private static void exist(File f){if(f.exists()){f.delete();boolean flag=false;try {flag = f.createNewFile();} catch (IOException e) {e.printStackTrace();}System.out.println("create file:"+f.getName()+" :"+flag);}}}
分享,快乐,成长
转载请注明出处:http://blog.csdn.net/fansy1990
- 根据给定概率随机按行分割文件
- c# 按给定概率随机选择列表元素
- java根据概率随机中奖 测试类
- 给定等概率随机产生1~M的随机函数, 实现等概率随机产生1~N的随机函数
- RandomAccessFile随机访问分割文件
- 根据离散概率随机返回int值java代码&理解
- 如何根据概率密度函数生成随机分布
- Java-随机范围内分割大文件
- 按某字符串分割给定字符串
- python 按行分割文件
- java按行分割文件
- 按指定概率随机立减
- 概率随机问题【3】给定能随机生成1到5的函数,写出能随机生成1到7的函数
- 给定数组随机排序
- 给定一个函数rand5(),使函数rand7()可以随机等概率的生成1-7的整数
- 【转】给定一个函数rand5(),使函数rand7()可以随机等概率的生成1-7的整数
- 给定一个函数rand5(),使函数rand7()可以随机等概率的生成1-7的整数
- 【转】给定一个函数rand5(),使函数rand7()可以随机等概率的生成1-7的整数
- 使用firefox插件httperrequest,模拟发送及接收Json请求
- Warning: $HADOOP_HOME is deprecated.
- 【SWF】 —— 极限研究
- 就知道1234
- Apache xerces xml解析器
- 根据给定概率随机按行分割文件
- 仙剑奇侠传5杂感
- Example - void atexit(void)
- rtp server
- 交换排序:冒泡排序,快速排序
- C/C++开发环境(GTK/GNOME/Qt/KDE)
- DBCP连接池的配置
- python模块——logging(日志管理)
- 数据库约束