2017-01-03 7 views
1

sklearnの分類器を使用して画像を分類しようとしていますが、学習していないので、訓練後に0.1の精度があります(10クラスがあるので0.1精度はランダム推測と同じです)sklearnサポートベクトルマシンが学習していません

私はCIFAR-10データセットを使用しています。 3072 uint8として表される10000の画像。第1の1024は赤色画素であり、第2の1024は緑色画素であり、渇き1024は青色画素である。

各画像はまた、ここ数0-9

あるラベルには、私のコードでいます

import numpy as np 
from sklearn import preprocessing, svm 
import pandas as pd 
import pickle 
from sklearn.externals import joblib 

train_data = pickle.load(open('data_batch_1','rb'), encoding='latin1') 
test_data = pickle.load(open('test_batch','rb'), encoding='latin1') 

X_train = np.array(train_data['data']) 
y_train = np.array(train_data['labels']) 
X_test = np.array(test_data['data']) 
y_test = np.array(test_data['labels']) 

clf = svm.SVC(verbose=True) 
clf.fit(X_train, y_train) 

accuracy = clf.score(X_test, y_test) 

joblib.dump(clf, 'Cifar-10-clf.pickle') 

print(accuracy) 

誰もが私の問題は、何ができるか知っていますか解決するためのリソースに私を指すことができますこの?

答えて

3

私はよく分かりませんが、SVCのパラメータを調整する必要があると思います。

学習のためにいくつかのパラメータをテストしたところ、0.318の精度が得られました。ここ

はコードです:

# coding: utf-8 

import numpy as np 
from sklearn import preprocessing, svm 
import cPickle 

train_data = cPickle.load(open('data/data_batch_1', 'rb')) 
test_data = cPickle.load(open('data/test_batch', 'rb')) 

X_train = np.array(train_data['data']) 
y_train = np.array(train_data['labels']) 
X_test = np.array(test_data['data'][:1000]) 
y_test = np.array(test_data['labels'][:1000]) 

clf = svm.SVC(kernel='linear', C=10, gamma=0.01) 
clf.fit(X_train, y_train) 

accuracy = clf.score(X_test, y_test) 

print "Accuracy: ", accuracy 

そして私はハイパーパラメータのチューニング自動ためgrid search functionをお勧めします。

Thisは、scikit-learnのtuning the hyper-parametersに関する公開文書です。

関連する問題