是否有一种简单的方法可以列出所有需要稀疏训练输入的sklearn实现?

时间:2014-11-10 03:41:59

标签: python scikit-learn

与仅使用稀疏输入尝试它们并获得错误相反。 类似于此处显示的分类列表: AdaBoostClassifier with different base learners

1 个答案:

答案 0 :(得分:3)

好的,回答我自己的后代问题,根据andreas的建议调整原帖try。 Def应该想到这一点。

from scipy.sparse import csc_matrix
from sklearn.utils.testing import all_estimators
import numpy as np
import random
y = np.array([random.randrange(0,2) for i in xrange(1000)])
X = csc_matrix(np.array([[random.randrange(0,2) for i in xrange(1000)], 
                         [random.randrange(0,2) for i in xrange(1000)], 
                         [random.randrange(0,2) for i in xrange(1000)]])).T
for name, Clf in all_estimators(type_filter='classifier'):
    try:
        clf = Clf()
        clf.fit(X,y)
        print name
    except:
        pass

给出了这个清单:

BernoulliNB
DummyClassifier
KNeighborsClassifier
LabelPropagation
LabelSpreading
LinearSVC
LogisticRegression
MultinomialNB
NearestCentroid
NuSVC
PassiveAggressiveClassifier
Perceptron
RadiusNeighborsClassifier
RidgeClassifier
RidgeClassifierCV
SGDClassifier
SVC

我知道这是快速而肮脏的,并且错过任何因TypeError: A sparse matrix was passed, but dense data is required. Use X.toarray() to convert to a dense numpy array.以外的错误而失败的错误,只是让每个人都知道我是多么尽职尽责,唯一因其他原因失败的是EllipticEnvelope 。我检查了。 :)此外,如果您将base_estimator从默认值更改为可以采用稀疏输入且具有所有必需方法/属性的方法,则基于非树的集合方法(如BaggingClassifierAdaBoostClassifier)可以采用稀疏输入并使用可以编入索引的稀疏表示(csr_matrixcsc_matrix)。