与仅使用稀疏输入尝试它们并得到错误相反。类似于此处显示的分类器列表:具有不同基础学习者的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_matrix
或csc_matrix
),则BaggingClassifier
和AdaBoostClassifier
等非基于树的集成方法可以接受稀疏输入。