对于多类问题,我使用Scikit-Learn。我发现关于如何加载具有多个类的自定义数据集的示例很少。sklearn.datasets.load_files
方法似乎不适合,因为文件需要多次存储。我现在有以下结构:
X => 带有功能列表的 Python 列表(文本)。
y => 带有类列表的 Python 列表(文本)。
如何将其转换为Scikit-Learn可以在分类器中使用的结构?
import numpy as np
from sklearn.preprocessing import MultiLabelBinarizer
X = np.loadtxt('samples.csv', delimiter=",")
y_aux = np.loadtxt('targets.csv', delimiter=",")
y = MultiLabelBinarizer().fit_transform(y_aux)
代码解释:假设您将所有特征存储在一个名为 samples.csv
的文件中,将多类标签存储在另一个名为 targets.csv
的文件中(它们当然可以存储在同一个文件中,您只需要拆分列)。为了清楚起见,在本例中,我的文件包含:
samples.csv
4.0,3.2,5.5
6.8,5.6,3.3targets.csv
1,4 <-- 样本一属于第 1 类和第 4
类2,3 <-- 样本二属于类 2,3
MultiLabelBinarizer
对输出目标进行编码,使变量y
准备好输入多类分类器。代码的输出为:
y = array([[1, 0, 0, 1],
[0, 1, 1, 0]])
这意味着样本 1 属于类 1 和 4,样本 2 属于类 2 和 3。