【发布时间】:2014-06-03 21:49:43
【问题描述】:
我正在使用 libsvm 做一个项目,并且我正在准备我的数据以使用该 lib。如何将 CSV 文件转换为 LIBSVM 兼容数据?
CSV 文件: https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/datasets/data/iris.csv
在频率问题中:
如何将其他数据格式转换为 LIBSVM 格式?
这取决于您的数据格式。一种简单的方法是在 libsvm matlab/octave 接口中使用 libsvmwrite。以 UCI 机器学习存储库中的 CSV(逗号分隔值)文件为例。我们下载 SPECTF.train。标签位于第一列。以下步骤生成 libsvm 格式的文件。
matlab> SPECTF = csvread('SPECTF.train'); % read a csv file
matlab> labels = SPECTF(:, 1); % labels from the 1st column
matlab> features = SPECTF(:, 2:end);
matlab> features_sparse = sparse(features); % features must be in a sparse matrix
matlab> libsvmwrite('SPECTFlibsvm.train', labels, features_sparse);
The tranformed data are stored in SPECTFlibsvm.train.
Alternatively, you can use convert.c to convert CSV format to libsvm format.
但我不想使用 matlab,我使用 python。
我也使用JAVA 找到了这个解决方案
谁能推荐解决这个问题的方法?
【问题讨论】:
-
你打算使用
libsvm可执行文件吗?还是 Python 绑定? -
如果
libsvm,则需要将csv转换为libsvm数据。如果是Python绑定,则需要将csv加载到Python中。 -
我将使用 libsvm 可执行文件。我找到了这个(github.com/seamusabshere/vector_embed),我现在正在弄清楚它是否有帮助。但我想在预测变量和目标(这是列之一)之间进行拆分。这会影响吗?
-
似乎把第一列为目标。您需要正确修改代码。这是红宝石代码。你需要
Python version吗? -
这是与 libsvm 的第一次交互,我只需要知道如何分离预测变量(许多列)和目标(一个特定列)。我会使用这个脚本 (github.com/zygmuntz/phraug/blob/master/csv2libsvm.py) 如果你能解释更多,我会很高兴。