簡體   English   中英

sklearn支持向量機未學習

[英]sklearn support vector machine is not learning

我正在嘗試使用sklearnsvm.SVC分類器對圖像進行分類,但它不是學習的,經過訓練后我獲得了0.1的准確度(有10個類別,所以0.1的准確度與隨機猜測相同)

我正在使用CIFAR-10數據集。 表示為3072 uint8 s的10000張圖像。 前1024個是紅色像素,第二個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)

有誰知道我的問題可能是什么,或者可以指出我的資源來解決這個問題?

我不確定,但我認為您需要調整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來自動調整超參數。

是有關tuning the hyper-parameters scikit-learn中tuning the hyper-parameters公共文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM