如何将数字数据输入分类器?

时间:2014-12-31 10:54:18

标签: python machine-learning numbers scikit-learn svm

对于有机器学习经验的人来说,这可能非常简单+ sklearn,但我是一个完整的新手而且我被困住了。我试图将图像分类为" cliparts"和"照片"基于三个数字特征。

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

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)),
    ...
)

每个项目都包含以下数据:(图像类型,(feature1,feature2,feature3))

从sklearn docs我得到了这个例子:

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中加载我的数据以及如何使用它来分类新图像?我找到很多使用单词的例子,但没有使用简单的数字。

1 个答案:

答案 0 :(得分:0)

来自doc

  

数据集生成函数和svmlight加载器共享一个   简单的接口,返回由a组成的元组(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])