scikit-learn虚拟分类器的理论基础是什么?

joh*_*doe 11 python artificial-intelligence machine-learning svm scikit-learn

根据文档,我读到可以使用虚拟分类器根据分类算法对其进行测试.

此分类器可用作与其他(实际)分类器进行比较的简单基线.不要将它用于实际问题.

虚拟分类器在使用分层方法时会做什么.我知道文件说:

通过尊重训练集的类分布来生成预测.

任何人都可以给我一个更理论的解释,为什么这是分类器性能的证明?

duh*_*ime 20

虚拟分类器为您提供"基线"性能的度量 - 即即使只是猜测也应该达到的成功率.

假设您希望确定给定对象是否拥有某个属性.如果您已经分析了大量这些对象并且发现90%包含目标属性,那么猜测对象的每个未来实例都拥有目标属性,这使您有90%的正确猜测可能性.以这种方式构建猜测等同于使用most_frequent您引用的文档中的方法.

因为许多机器学习任务试图提高(例如)分类任务的成功率,所以评估基线成功率可以为一个分类器应该执行的最小值提供最低值.在上面讨论的假设中,您希望您的分类器获得超过90%的准确度,因为90%是即使是"虚拟"分类器可用的成功率.

如果stratified使用上面讨论的数据训练具有参数的虚拟分类器,则该分类器将预测其遇到的每个对象具有90%的概率拥有目标属性.这与使用most_frequent参数训练虚拟分类器不同,因为后者会猜测所有未来对象都具有目标属性.这里有一些代码来说明:

from sklearn.dummy import DummyClassifier
import numpy as np

two_dimensional_values = []
class_labels           = []

for i in xrange(90):
    two_dimensional_values.append( [1,1] )
    class_labels.append(1)

for i in xrange(10):
    two_dimensional_values.append( [0,0] )
    class_labels.append(0)

#now 90% of the training data contains the target property
X = np.array( two_dimensional_values )
y = np.array( class_labels )

#train a dummy classifier to make predictions based on the most_frequent class value
dummy_classifier = DummyClassifier(strategy="most_frequent")
dummy_classifier.fit( X,y )

#this produces 100 predictions that say "1"
for i in two_dimensional_values:
    print( dummy_classifier.predict( [i]) )

#train a dummy classifier to make predictions based on the class values
new_dummy_classifier = DummyClassifier(strategy="stratified")
new_dummy_classifier.fit( X,y )

#this produces roughly 90 guesses that say "1" and roughly 10 guesses that say "0"
for i in two_dimensional_values:
    print( new_dummy_classifier.predict( [i]) )
Run Code Online (Sandbox Code Playgroud)

  • 我已经详细说明并添加了一些代码来说明。我希望这有帮助! (2认同)