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

对于有机器学习和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_digitsdigits = load_digits()from sklearn import svmclf = 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]

这个例子对示例数据“digits”的最后一个项目进行了分类/预测。

我认为SVM是适合我的方法。但我该如何在sklearn中加载我的数据,以及如何使用它来分类新图像?我找到了很多使用单词的例子,但没有一个是处理简单数字的。


回答:

文档中:

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

所以你需要构建两个numpy数组:第一个像这样:

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

第二个像这样:

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

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注