如何将.arff格式文件加载到matlab
是否有任何包要加载.arff格式的文件到matlab中?如何将.arff格式文件加载到matlab,matlab,weka,Matlab,Weka,是否有任何包要加载.arff格式的文件到matlab中? .arff格式用于运行机器学习算法。揭示了一些可能性。特别是,和的结果看起来很有希望,尽管我也没有尝试过。是的,在MATLAB文件交换上有几个用于WEKA文件的MATLAB接口,我通常使用这个接口:其中有一个saveARFF()和一个loadARFF()函数。因为,您可以直接使用它公开的API来读取ARFF文件: %## paths WEKA_HOME = 'C:\Program Files\Weka-3-7'; javaaddpath(
.arff格式用于运行机器学习算法。揭示了一些可能性。特别是,和的结果看起来很有希望,尽管我也没有尝试过。是的,在MATLAB文件交换上有几个用于WEKA文件的MATLAB接口,我通常使用这个接口:其中有一个saveARFF()和一个loadARFF()函数。因为,您可以直接使用它公开的API来读取ARFF文件:
%## paths
WEKA_HOME = 'C:\Program Files\Weka-3-7';
javaaddpath([WEKA_HOME '\weka.jar']);
fName = [WEKA_HOME '\data\iris.arff'];
%## read file
loader = weka.core.converters.ArffLoader();
loader.setFile( java.io.File(fName) );
D = loader.getDataSet();
D.setClassIndex( D.numAttributes()-1 );
%## dataset
relationName = char(D.relationName);
numAttr = D.numAttributes;
numInst = D.numInstances;
%## attributes
%# attribute names
attributeNames = arrayfun(@(k) char(D.attribute(k).name), 0:numAttr-1, 'Uni',false);
%# attribute types
types = {'numeric' 'nominal' 'string' 'date' 'relational'};
attributeTypes = arrayfun(@(k) D.attribute(k-1).type, 1:numAttr);
attributeTypes = types(attributeTypes+1);
%# nominal attribute values
nominalValues = cell(numAttr,1);
for i=1:numAttr
if strcmpi(attributeTypes{i},'nominal')
nominalValues{i} = arrayfun(@(k) char(D.attribute(i-1).value(k-1)), 1:D.attribute(i-1).numValues, 'Uni',false);
end
end
%## instances
data = zeros(numInst,numAttr);
for i=1:numAttr
data(:,i) = D.attributeToDoubleArray(i-1);
end
%## visualize data
parallelcoords(data(:,1:end-1), ...
'Group',nominalValues{end}(data(:,end)+1), ...
'Labels',attributeNames(1:end-1))
title(relationName)
您甚至可以直接从MATLAB使用它的功能。例如:
%## classification
classifier = weka.classifiers.trees.J48();
classifier.buildClassifier( D );
fprintf('Classifier: %s %s\n%s', ...
char(classifier.getClass().getName()), ...
char(weka.core.Utils.joinOptions(classifier.getOptions())), ...
char(classifier.toString()) )
输出C4.5决策树:
Classifier: weka.classifiers.trees.J48 -C 0.25 -M 2
J48 pruned tree
------------------
petalwidth <= 0.6: Iris-setosa (50.0)
petalwidth > 0.6
| petalwidth <= 1.7
| | petallength <= 4.9: Iris-versicolor (48.0/1.0)
| | petallength > 4.9
| | | petalwidth <= 1.5: Iris-virginica (3.0)
| | | petalwidth > 1.5: Iris-versicolor (3.0/1.0)
| petalwidth > 1.7: Iris-virginica (46.0/1.0)
Number of Leaves : 5
Size of the tree : 9
Classifier:weka.classifiers.trees.J48-c0.25-m2
J48修剪树
------------------
瓣宽0.6
|花瓣宽1.7:维吉尼亚鸢尾(46.0/1.0)
假期数:5
树的大小:9
如果您只想将一个以“arff”格式存储的文件加载到Matlab中,而不需要Weka的任何其他功能,只需删除“arff”文件的头部分(那些属性定义),并将文件保存为csv格式(您应该用数值等价物替换类值),然后使用内置的“csvread”Matlab的功能。这样就不需要找到第三方软件包
M = importdata('filename.arff');
对于大文件来说速度非常慢,但它可以工作(在MATLAB 2010b中测试)如果上述方法不起作用,并且需要标题信息,请在weka中加载arff文件,然后选择“另存为”选项并使用csv文件格式保存数据。这很难相信,因为MATLAB文档没有调用arff。除非matlab的
importdata
转储所有头/属性信息?有关于如何使用它的示例吗?如果您将文件交换文件解压缩到工作目录中,您可以这样使用loadARFF:data=loadARFF('myfile.arf')。我得到一个错误,但我会再次检查。我已经解压了它,并通过点击“设置路径”按钮在路径中添加了包含子文件夹的文件夹。对吗?为了导入工具包,我还需要做其他事情吗?