当训练集和测试集是单独的数据集时,如何评估svm分类器的预测意义



我正在使用sklearn,并试图评估是否可以使用适合我的训练集的模型来预测我的测试集的标签(训练集和测试集是两个不同的数据集(。

这就是我目前所做的:

model.fit(X_train, y_train)
y_predicted = model.predict(X_test)

u2028u2028我的问题如下:

  1. 我如何获得«预测分数»(我认为我必须以某种方式比较y_predicted和y_test(
  2. 如何使用基于测试数据集排列的零分布来计算经验p值以评估预测得分的显著性?u2028u2028

如果训练集和测试集来自同一个数据集,我将使用以下内容:

cv = KFold(n_splits=5)
score, permutation_scores, pvalue = sklearn.model_selection.permutation_test_score(svc, X, y, cv=cv, scoring = « accuracy », n_permutations=1000)

但在目前的情况下,我迷失了方向,因为我有两组X和y(即X_train、y_train、X_test、y_test(,以及一个已经拟合的模型。

找到解决方案

我有一个已经拟合好的模型(适用于我的火车集(,在这里我试图用它来预测我的测试集的地面实况标签:

score = model.score(X_test,y_test)

然后,我打乱测试集的基本事实标签,并尝试预测它们1000次,以获得经验机会水平的估计值:

n_permutations = 1000
permutation_scores = np.zeros(n_permutations)
for i in range(n_permutations):
y_test_permuted = shuffle(y_test)
permutation_score = model.score(X_test, y_test_permuted)
permutation_scores[i]=permutation_score
permutation_scores = np.array(permutation_scores)

然后,我计算一个p值来估计我在尝试预测基本事实测试标签时得到的分数是否显著高于机会水平:

pvalue = (np.sum(permutation_scores >= score) + 1.0) / (n_permutations + 1)

最新更新