是否有任何包将.arff格式的文件加载到matlab中? .arff格式用于运行机器学习算法Weka。如何将.arff格式文件加载到matlab
回答
是的,MATLAB File Exchange上的WEKA文件有几个MATLAB接口,我通常使用这个:http://www.mathworks.com/matlabcentral/fileexchange/21204-matlab-weka-interface,其中有一个saveARFF()和一个loadARFF()函数。
Searching the MATLAB Central File Exchange揭示了一些可能性。特别是,Durga Lal Shrestha和Gerald Augusto Corzo Perez的结果看起来很有希望,尽管我还没有尝试过。
由于Weka is a Java library,你可以直接使用它暴露给读取ARFF文件API:
%## 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
如果你只想要加载存储在“ARFF”格式到Matlab文件,并且不需要任何其他功能从Weka中删除“arff”文件的头部分(这些属性定义),并将文件保存为csv格式(应该用数字等价替换类值),然后使用内置的“csvread”函数的Matlab。这样就不需要找到第三方包。
M = importdata('filename.arff');
对于大文件非常慢,但它的工作原理
这很难相信,因为matlab文档http://www.mathworks.com/help/matlab/import_export/supported-file-formats.html没有调用arff。除非matlab的'importdata'转储所有的头文件/属性信息? – John
如果上述方法都不奏效,并且报头信息是必需的,加载WEKA的ARFF文件(在MATLAB 2010年b测试),然后选择另存为选项并使用csv文件格式保存数据。
只需在arff开始处删除所有带有“@”的行,然后将其保存为.txt格式,之后您只需将其拖入工作区或甚至导入它即可。 它每次都适用于我 干杯
- 1. 如何将文件加载到MATLAB?
- 2. 如何将从.arff文件加载的arff对象转换为数据框格式?
- 3. 如何将.arff格式的文件转换为.txt文件格式?
- 4. 如何将特殊格式的数据文件加载到matlab中?
- 5. Conver .CSV文件到weFF的ARFF文件
- 6. 如何将文件加载到javascript
- 7. 如何使用parquet格式加载和索引文件到elasticsearch?
- 8. 如何将条件格式添加到XML/Excel文件?
- 9. 将文件加载到Oracle TIMESTAMP(6)格式
- 10. Matlab的:加载的文件
- 11. ELKI和ARFF文件
- 12. 读取ARFF文件
- 13. 如何将多个文件模式加载到数据库中?
- 14. 如何将html加载到样式文件
- 15. 如何从.txt创建.arff文件?
- 16. 如何用R读取.arff文件?
- 17. 如何从ACE生成arff文件
- 18. Python:如何将文件内容附加到格式字符串?
- 19. 如何将MATLAB类保存到文件
- 20. 从加载的arff文件创建列车和测试变量
- 21. 将多个.mat文件加载到Matlab工作空间
- 22. 将文件加载到TAdvMemo
- 23. 如何使用MATLAB从文件夹读取img格式文件
- 24. 无法转换到的.csv文件.arff
- 25. 从html格式加载文本到div
- 26. 如何将XML格式的字符串加载到XElement中
- 27. 如何将样式加载到ckeditor中?
- 28. 如何连接或加载file.dll到matlab?
- 29. 如何将autohotkey文件加载到另一个autohotkey文件(.ahk)
- 30. 如何使用.earth文件将kml文件加载到osgEarth中?
有关它如何使用的任何示例? –
如果您将fileexchange文件解压缩到工作目录中,则可以通过以下方式使用loadARFF: data = loadARFF('myfile.arf')。 –
我收到一个错误,但我会再次检查。我已经解压缩并通过点击“设置路径”按钮在子路径中添加了文件夹。这是对的吗?为了导入工具包,我还必须做其他事情吗? –