MLPClassifier 阈值因子,用于消除与训练数据不匹配的测试样本

数据挖掘 机器学习 Python scikit-学习 数据科学模型
2022-03-06 08:15:22

我正在使用 scikit-learn中的 MLPClassifer 示例

训练代码:

from sklearn.neural_network import MLPClassifier
X = [[0., 0.], [1., 1.]]
y = [0, 1]
clf = MLPClassifier(solver='lbfgs', alpha=1e-5,
                    hidden_layer_sizes=(5, 2), random_state=1)

clf.fit(X, y)                         

在预测步骤中,我们使用测试数据 [2., 2.], [-1., -2.] in clf.predict([[2., 2.], [-1., -2.]])这个函数的输出是 array([1, 0])

正如我们所观察到的,测试数据 [2.,2.] 不在我们通过的训练数据集中。尽管如此,我们还是得到了最接近的匹配标签 1。

我想要找到的是,如果我提供的测试数据不在火车数据集中,我应该向用户打印一条消息,表明数据无效,而不是告诉他错误的标签为 1。

例如,在 knn 分类中,我有kneighbours 函数,它告诉我最近的邻居与我以 0 到 1 的比例提供的测试数据的距离。因此,我可以通过将阈值保持在 0.6 或 0.7 来轻松消除与我的训练数据样本相距甚远的测试数据样本。

有没有像这样的标准/阈值我可以用 MLPClassifier 或这里提到的任何一个增量分类器来限制我的测试样本如果不存在于训练数据集中?

从SO迁移的问题

1个回答

SGDClassifier 具有desicion_function,它告诉超平面的距离,与这些值进行比较。

这个值可能意味着太大和太低的值。