对于有机器学习经验的人来说,这可能非常简单+ 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中加载我的数据以及如何使用它来分类新图像?我找到很多使用单词的例子,但没有使用简单的数字。
答案 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])