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



与仅使用稀疏输入尝试它们并得到错误相反。类似于此处显示的分类器列表:具有不同基础学习者的AdaBoostClassifier

好的,为子孙后代回答我自己的问题,按照安德里亚斯的建议,用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从默认值更改为可以接受稀疏输入并具有所有必要方法/属性的方法,并且使用可以索引的稀疏表示(csr_matrixcsc_matrix),则BaggingClassifierAdaBoostClassifier等非基于树的集成方法可以接受稀疏输入。

相关内容

  • 没有找到相关文章

最新更新