这段代码,用mymyeclipse查找文件名软件输出以后文件名为txttxt,想让里面的数据变成arff

数据挖掘(1)
首先,我们要有一个.txt文件,每一行中的元素个数是相同的(因为每一行中的每一个元素就代表了一种类型的属性值),文尾已奉上,读者自行下载。有的就不用下载了,
然后,,,
代码如下,具体的就不细讲了
import java.io.*;
import java.util.ArrayL
* Created by Administrator on .
public class dataMinner {
public static void main(String[] args) throws IOException {
FileReader reader = new FileReader(&E:\\50words_TRAIN.txt&);
BufferedReader br = new BufferedReader(reader);
StringBuffer sb = new StringBuffer(&&);
String str=
str=br.readLine();
String str2=
String[] attributes = str.split(&,&);
while((str=br.readLine())!=null){
sb.append(str+&\r\n&);
br.close();
reader.close();
FileWriter writer = new FileWriter(&E:\\50words_TRAIN.arff&);
BufferedWriter bw = new BufferedWriter(writer);
bw.write(&@relation&+& &+&test&+&\r\n&);
for(int i = 0;i&attributes.i++){
bw.write(&@attribute&+& &+&attribute&+i+& &+&numeric&+&\r\n&);
bw.write(&@data&+&\r\n&);
bw.write(str2+&\r\n&);
bw.write(sb.toString());
bw.close();
writer.close();
在此需注意的是java中换行符的表示是 \r\n ,而不是 \n ,因为windows不能识别 \n&
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:706次
排名:千里之外
原创:18篇
(6)(3)(1)(7)(3)(1)1040人阅读
数据预处理(1)
matlab(23)
weka(10)
在RUSBoost和SMOTEBoost中提供了csv转换为arff格式的方法,详见CSVtoARFF.m
function r = CSVtoARFF (data, relation, type)
[rows cols] = size(data);
farff = fopen(strcat(type,'.arff'), 'w');
fprintf(farff, '@relation %s', relation);
fid = fopen('ARFFheader.txt','r');
tline = fgets(fid);
while ischar(tline)
tline = fgets(fid);
fprintf(farff,'%s',tline);
fclose(fid);
for i = 1 : rows
for j = 1 : cols - 1
if data(i,j) ~= -1
fprintf(farff, '%d,', data(i,j));
fprintf(farff, '?,');
fprintf(farff, '%d\n', data(i,end));
fclose(farff);
该方法的不足之处就是要单独提供ARFFheader.txt ,很多情况下,该表头需要人工添加(属性少时),但当属性大时,相对较麻烦,还是可以通过程序循环添加。
下面给出一个可以直接将.mat,.txt和.csv格式转换为weka中的arff格式
function Mat2Arff('input_filename','arff_filename')
% This function is used to convert the input data to '.arff'
% file format,which is compatible to weka file format ...
% Parameters:
% input_filename -- Input file name,only can conversion '.mat','.txt'
% or '.csv' file format ...
% arff_filename -- the output '.arff' file ...
%The input 'M*N' file data must be the following format:
% N: sample features and label,"1:N-1" -- features, "N" - sample label ...
% 读取文件数据 ...
if strfind(input_filename,'.mat')
matdata = importdata(input_filename);
elseif strfind(input_filename,'.txt')
matdata = textread(input_filename) ;
elseif strfind(input_filename,'.csv')
matdata = csvread(input_filename);
[row,col] = size(matdata);
f = fopen(arff_filename,'wt');
if (f & 0)
error(sprintf('Unable to open the file %s',arff_filename));
fprintf(f,'%s\n',['@relation ',arff_filename]);
for i = 1 : col - 1
st = ['@attribute att_',num2str(i),' numeric'];
fprintf(f,'%s\n',st);
% 保存文件头最后一行类别信息
floatformat = '%.16g';
Y = matdata(:,col);
uY = unique(Y); % 得到label类型
st = ['@attribute label {'];
for j = 1 : size(uY) - 1
st = [st sprintf([floatformat ' ,'],uY(j))];
st = [st sprintf([floatformat '}'],uY(length(uY)))];
fprintf(f,'%s\n\n',st);
% 开始保存数据 ...
labelformat = [floatformat ' '];
fprintf(f,'@data\n');
for i = 1 : row
Xi = matdata(i,1:col-1);
s = sprintf(labelformat,Y(i));
s = [sprintf([floatformat ' '],[; Xi]) s];
fprintf(f,'%s\n',s);
fclose(f);
最后给出关于weka数据处理的简明介绍。
简单总结一下:
weka中的arff格式数据是由两部分组成:头部定义和数据区。
头部定义包含了关系名称(relation name)、一些属性(attributes)和对应的类型,如
@RELATION iris
@ATTRIBUTE sepallength
@ATTRIBUTE sepalwidth
@ATTRIBUTE petallength
@ATTRIBUTE petalwidth
@ATTRIBUTE class
{Iris-setosa,Iris-versicolor,Iris-virginica}
NUMERIC说明其为数字型,属性class的取值是限定的,只能是Iris-setosa,Iris-versicolor,Iris-virginica中的一个。数据类型还可以是string和data数据区有@data开头,如:
5.1,3.5,1.4,0.2,Iris-setosa
4.9,3.0,1.4,0.2,Iris-setosa
4.7,3.2,1.3,0.2,Iris-setosa
4.6,3.1,1.5,0.2,Iris-setosa
5.0,3.6,1.4,0.2,Iris-setosa
5.4,3.9,1.7,0.4,Iris-setosa
4.6,3.4,1.4,0.3,Iris-setosa
5.0,3.4,1.5,0.2,Iris-setosa
4.4,2.9,1.4,0.2,Iris-setosa
4.9,3.1,1.5,0.1,Iris-setosa
因此,完整的一个arff文件如下:
@RELATION iris
@ATTRIBUTE sepallength
@ATTRIBUTE sepalwidth
@ATTRIBUTE petallength
@ATTRIBUTE petalwidth
@ATTRIBUTE class
{Iris-setosa,Iris-versicolor,Iris-virginica}
5.1,3.5,1.4,0.2,Iris-setosa
4.9,3.0,1.4,0.2,Iris-setosa
4.7,3.2,1.3,0.2,Iris-setosa
4.6,3.1,1.5,0.2,Iris-setosa
5.0,3.6,1.4,0.2,Iris-setosa
5.4,3.9,1.7,0.4,Iris-setosa
4.6,3.4,1.4,0.3,Iris-setosa
5.0,3.4,1.5,0.2,Iris-setosa
4.4,2.9,1.4,0.2,Iris-setosa
4.9,3.1,1.5,0.1,Iris-setosa
更多细节可查看
weka使用自己的文件格式,叫做ARFF,如果想从*matlab和Weka之间相互转换,这里有现成的package*:
不要以为下载下来就能用,你会在如下地方报错:
if(~wekaPathCheck),wekaOBJ = []; return,end
import weka.core.converters.ArffL
import java.io.F
Tricky的事情就是得把weka.jar加入到matlab的classpath.txt列表。classpath.txt在哪儿?到matlab的command窗口敲:
which classpath.txt
D:\CMWang\MATLABR2014b\toolbox\local\classpath.txt
然后就是到classpath.txt里加入一行,weka.jar的绝对路径,例如:
C:\Program Files\Weka-3-8 \weka.jar
这样就配置完毕了。
该部分参考
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:85716次
积分:1973
积分:1973
排名:第15849名
原创:87篇
转载:132篇
评论:29条
(1)(9)(15)(3)(7)(26)(7)(8)(12)(33)(25)(24)(3)(1)(1)(1)(6)(1)(2)(1)(37)}

我要回帖

更多关于 myeclipse 搜索文件名 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信