Python 是否有一种简单的方法列出所有采用稀疏训练输入的sklearn实现?
而不是仅仅用稀疏的输入尝试它们,然后得到一个错误。 类似于此处所示的分类器列表:Python 是否有一种简单的方法列出所有采用稀疏训练输入的sklearn实现?,python,scikit-learn,Python,Scikit Learn,而不是仅仅用稀疏的输入尝试它们,然后得到一个错误。 类似于此处所示的分类器列表: 好的,为后代回答我自己的问题,按照安德烈亚斯的建议,用尝试修改原始帖子。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
好的,为后代回答我自己的问题,按照安德烈亚斯的建议,用
尝试修改原始帖子。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:传递了稀疏矩阵,但需要密集的数据,否则会错过任何因错误而失败的操作。使用X.toarray()转换为密集的numpy数组。
,为了让大家知道我有多认真,唯一一个由于其他原因失败的是EllipticeDevelop
。我查过了。:)此外,如果您将基本估计量从默认值更改为可以接受稀疏输入且具有所有必要方法/属性的估计量,并且您使用可以索引的稀疏表示,则非基于树的集成方法(如BaggingClassifier
和AdaBoostClassifier
)可以接受稀疏输入(csr_矩阵
或csc_矩阵
)。您可以使用类似的方法,然后尝试
以稀疏数据拟合它们。@AndreasMueller yep yep。谢谢。