我有一个数据集,其中包含“概率”(X),“结果”(y)和“损失”(z)。
X包含分类的概率。将选择每个阵列的最高概率。对于每个数组,都有相应的“丢失”值和“结果”值。但有时这种分类是不正确的。这由y中的结果表示。 1
=正确的分类,0
=错误的分类。
我想预测另一个数据集(test_data)的结果。
X
看起来像这样(5461行):
[[ 7.52080159e-05 3.52246707e-06 9.99919772e-01 1.60897298e-06]
[ 5.29095473e-07 1.37183363e-07 9.99999166e-01 6.71615084e-08]
[ 8.79671461e-06 3.60849692e-04 4.20530778e-05 9.99588311e-01]
[...]]
总体而言,只有0
,其余为1
。而且,概率非常高(约95%和更高)。
不过,我还是想正确预测结果。事实上,即使我用train_data测试它,SVM也只返回1
。无论是否应该0
。
例如。对于X[29]
,结果为0
。但预测返回1
。
import numpy as np
from sklearn import svm
f = np.load('analyse.npy', encoding='latin1', fix_imports=True)
test_file = np.load('test.npy', encoding='latin1', fix_imports=True)
X = np.array(f.item()['probabilities'])
X = X.reshape(-1,4)
print(X[:3])
y = np.array(f.item()['result'])
print(list(y))
clf = svm.SVC(kernel='linear');
clf = clf.fit(X, y)
pred = clf.predict(X)
print(list(pred))
print(X[29])
print(y[29])
我在这里缺少什么?我对SVM比较陌生。首先,我想跳过“损失”值,但似乎,我需要它,对吗?由于概率非常高,我必须对它们进行缩放/标准化吗?