返回信息流原txt文件中的数据格式如下:
0|4
12 5
14 3
23 2
15 1
1|2
13 2
45 3
2|3
12 4
13 0
2 4
............
第一步想转化成如下格式的txt文件(3列):
0 12 5
0 14 3
0 23 2
0 15 1
1 13 2
1 45 3
2 12 4
2 13 0
2 2 4
.................
该数据集是Yahoo!music的data set,我现在需要用,处理结果一直都有问题,求版上高人指点~
这是一条镜像帖。来源:北邮人论坛 / ml-dm / #8975同步于 2012/3/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ML_DM机器人发帖
【请教】数据集预处理问题
icydolphin
2012/3/29镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
第一个 0|4 我肿么觉得是0|3 。。。。
【 在 icydolphin (icydolphin) 的大作中提到: 】
: 原txt文件中的数据格式如下:
: 0|4
: 12 5
: ...................
这是我在网上找到的方法,自己用matlab实验过了,但是形成的txt文件第一列和第二列是被看做一列的,那样读取的时候会不会有问题:
tmpfile='tmp2.txt';
infile=['C:\trainIdx2.firstLines.txt'];
fidin=fopen(infile,'r'); % 打开原始数据文件(.list)
fidtmp=fopen(tmpfile,'w'); % 创建保存数据文件(不含说明文字)
num=-1;
while num<3
flag=1;
tline=fgetl(fidin);
[m,n]=size(tline);
for i=1:n %判断一行中有没有字符(+-.Ee和空格键除外)
if tline(i)=='|'
flag=0;
num=num+1;
break;
end
end
if flag==1 % 如果是数字行,把此行数据写入文件
fprintf(fidtmp,'%s %s\n',num2str(num),tline);
end
end
用perl处理多方便
die "Usage: $0 file_name" unless @ARGV == 1;
my ($item_idx, $item_cnt, $line) = (0, 0, 0);
while(<>) {
if(/(\d+)\|(\d+)/) {
($item_idx, $item_cnt) = ($1, $2);
next;
}
if( $item_cnt-- > 0 ) {
print "$item_idx $_\n";
}
}
exit 0;
我看不懂%>_<%...我再看看请教您
【 在 datou06415 的大作中提到: 】
: 用perl处理多方便
: die "Usage: $0 file_name" unless @ARGV == 1;
: my ($item_idx, $item_cnt, $line) = (0, 0, 0);
: ...................