如何将数值数据馈送到分类器中



对于有机器学习+sklearn经验的人来说,这可能很简单,但我是一个彻头彻尾的菜鸟,我被困住了。我正在尝试根据三个数字特征将图像分类为"剪贴画"和"照片"。

我的数据集(可能)如下所示:

data = (
    ("photo",   (213, 32, 2)),
    ("clipart", (453, 465, 212)),
    ("clipart", (23, 2, 6552)),
    ("photo",   (8797, 0, 872)),
    ("photo",   (67, 4325, 43)),
    ("clipart", (11, 21, 77)),
    ...
)

每个项目都包含以下数据:(图像类型、(功能 1、功能2、功能3))

从 sklearn 文档中,我得到了这个例子:

from sklearn.datasets import load_digits
digits = load_digits()
from sklearn import svm
clf = svm.SVC(gamma=0.001, C=100.)
clf.fit(digits.data[:-1], digits.target[:-1])
svm.SVC(C=100.0, cache_size=200, class_weight=None, coef0=0.0, degree=3, gamma=0.001, kernel='rbf', max_iter=-1, probability=False, random_state=None, shrinking=True, tol=0.001, verbose=False)
print clf.predict(digits.data[-1])
>>>> [8]

对示例数据"数字"的最后一项进行分类/预测。

我认为 SVM 是实现我目的的正确方法。但是如何在 sklearn 中加载我的数据以及如何使用它来对新图像进行分类?我发现很多使用单词的例子,但没有一个用于处理简单数字的例子。

从文档中:

数据集生成函数和 svmlight 加载器共享一个 简单接口,返回一个元组 (X, y),由 n_samples x n_features numpy 数组 X 和长度n_samples数组 包含目标 y。

所以你必须构造两个 numpy 数组:第一个数组如下:

data = np.array([x[0] for x in data])

第二个

target = np.array([x[1] for x in data])

相关内容

  • 没有找到相关文章

最新更新