我正在訓練1200個標籤2的示例和1200個具有RBF內核的標籤1的示例的SVM。我以爲我獲得了77%的準確性,並且我使用sklearn.metrics.accuracy_score
獲得了準確性。但是當我手推我自己的精確分數時,像這樣:Scikit學會返回不正確的分類報告和準確性分數
def naive_accuracy(true, pred):
number_correct = 0
i = 0
for y in true:
if pred[i] == y:
number_correct += 1.0
return number_correct/len(true)
它得到了50%。我相信我基於錯誤的準確性評分和分類報告浪費了數週的時間。任何人都可以提供給我解釋爲什麼會發生這種情況嗎?對於這種情況如何發生,我非常困惑。我不明白我做錯了什麼。當我測試像pred = [1, 1, 2, 2];
test = [1, 2, 1, 2]
這樣的一些虛擬數據上的metrics.accuracy_score函數時,它給了我50%的預期。我認爲由於某些原因,我的具體數據可能會導致accuracy_score錯誤。
我有27的特徵向量和1級的1200個載體和2班的1200個矢量我的代碼如下:
X = scale(np.asarray(X))
y = np.asarray(y)
X_train, X_test, y_train, y_test = train_test_split(X, y)
######## SVM ########
clf = svm.SVC()
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
# 77%
print "SVM Accuracy:", accuracy_score(y_test, y_pred) # debugging
# 50%
print "*True* SVM Accuracy:", naive_accuracy(y_test, y_pred) # in-house debugging
# also 77%!
print "Classification report:\n", classification_report(y_test, y_pred) # debugging
嘛,是不是覺得有趣。謝謝! – Matt 2014-09-30 07:49:22
不客氣:) – axiom 2014-09-30 08:20:12