与仅使用稀疏输入尝试它们并获得错误相反。 类似于此处显示的分类列表: AdaBoostClassifier with different base learners
答案 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从默认值更改为可以采用稀疏输入且具有所有必需方法/属性的方法,则基于非树的集合方法(如BaggingClassifier
和AdaBoostClassifier
)可以采用稀疏输入并使用可以编入索引的稀疏表示(csr_matrix
或csc_matrix
)。