【问题标题】:List of all classification algorithms所有分类算法列表
【发布时间】:2017-06-10 04:53:14
【问题描述】:

我有一个分类问题,我想测试所有可用的算法,以测试它们在解决问题方面的表现。

如果您知道除了下面列出的分类算法之外的任何分类算法,请在此处列出。

GradientBoostingClassifier()
DecisionTreeClassifier()
RandomForestClassifier()
LinearDiscriminantAnalysis()
LogisticRegression()
KNeighborsClassifier()
GaussianNB()
ExtraTreesClassifier()
BaggingClassifier()

【问题讨论】:

  • 要求列出所有分类算法的范围太广了——数量会很大。有关 scikit-learn 中当前可用的所有分类算法的列表,您可以查看 scikit-learn 文档中的“监督学习”。 scikit-learn.org/stable/supervised_learning.html 你错过了例如SVM 和神经网络。
  • 所有分类算法的列表将是巨大的。但是您可能会要求最流行的分类算法。对于任何分类任务,首先尝试逻辑回归、朴素贝叶斯、线性 SVM、决策树等简单(线性)方法,然后尝试使用 RBF 内核的 SVM 非线性方法、随机森林、梯度提升树等集成方法,然后尝试深度学习等高级方法。
  • 在什么上下文中分类?在某些特定的机器学习环境中?对于某些特定的机器学习库?这个问题的范围有多广?标签是否为此提供提示还不清楚。你能在问题正文中更清楚地make it吗? (但没有“编辑:”、“更新:”或类似的 - 问题应该看起来好像是今天写的)。

标签: python algorithm machine-learning scikit-learn classification


【解决方案1】:

你可能想看看以下问题:

How to list all scikit-learn classifiers that support predict_proba()

接受的答案显示了在 scikit 中获取所有支持 predict_probas 方法的估计器的方法。只需在不检查条件的情况下迭代并打印所有名称,您就可以获得所有估算器。 (分类器、回归器、集群等)

对于仅分类器,如下修改它以检查所有实现ClassifierMixin的类

from sklearn.base import ClassifierMixin
from sklearn.utils.testing import all_estimators
classifiers=[est for est in all_estimators() if issubclass(est[1], ClassifierMixin)]
print(classifiers)

对于 >= 0.22 的版本,请使用 this

from sklearn.utils import all_estimators

而不是sklearn.utils.testing

注意事项:

  • 名称后缀有 CV 的分类器实现了内置的交叉验证(如 LogisticRegressionCV、RidgeClassifierCV 等)。
  • 有些是集成的,可能在输入参数中采用其他分类器。
  • _QDA_LDA 等一些分类器是其他分类器的别名,可能会在 scikit-learn 的下一版本中删除。

您应该在使用它们之前查看它们各自的参考文档

【讨论】:

  • \deprecation.py:144: FutureWarning: sklearn.utils.testing 模块在 0.22 版中已弃用,并将在 0.24 版中删除。应该从 sklearn.utils 导入相应的类/函数。任何无法从 sklearn.utils 导入的东西现在都是私有 API 的一部分。
  • @celsowm 我已经更新了答案。感谢您的告知。
【解决方案2】:

答案没有提供分类器的完整列表,所以我在下面列出了它们。

from sklearn.tree import ExtraTreeClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.svm.classes import OneClassSVM
from sklearn.neural_network.multilayer_perceptron import MLPClassifier
from sklearn.neighbors.classification import RadiusNeighborsClassifier
from sklearn.neighbors.classification import KNeighborsClassifier
from sklearn.multioutput import ClassifierChain
from sklearn.multioutput import MultiOutputClassifier
from sklearn.multiclass import OutputCodeClassifier
from sklearn.multiclass import OneVsOneClassifier
from sklearn.multiclass import OneVsRestClassifier
from sklearn.linear_model.stochastic_gradient import SGDClassifier
from sklearn.linear_model.ridge import RidgeClassifierCV
from sklearn.linear_model.ridge import RidgeClassifier
from sklearn.linear_model.passive_aggressive import PassiveAggressiveClassifier    
from sklearn.gaussian_process.gpc import GaussianProcessClassifier
from sklearn.ensemble.voting_classifier import VotingClassifier
from sklearn.ensemble.weight_boosting import AdaBoostClassifier
from sklearn.ensemble.gradient_boosting import GradientBoostingClassifier
from sklearn.ensemble.bagging import BaggingClassifier
from sklearn.ensemble.forest import ExtraTreesClassifier
from sklearn.ensemble.forest import RandomForestClassifier
from sklearn.naive_bayes import BernoulliNB
from sklearn.calibration import CalibratedClassifierCV
from sklearn.naive_bayes import GaussianNB
from sklearn.semi_supervised import LabelPropagation
from sklearn.semi_supervised import LabelSpreading
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.svm import LinearSVC
from sklearn.linear_model import LogisticRegression
from sklearn.linear_model import LogisticRegressionCV
from sklearn.naive_bayes import MultinomialNB  
from sklearn.neighbors import NearestCentroid
from sklearn.svm import NuSVC
from sklearn.linear_model import Perceptron
from sklearn.discriminant_analysis import QuadraticDiscriminantAnalysis
from sklearn.svm import SVC
from sklearn.mixture import DPGMM
from sklearn.mixture import GMM 
from sklearn.mixture import GaussianMixture
from sklearn.mixture import VBGMM

【讨论】:

    【解决方案3】:

    另一种选择是使用模块from sklearn.utils import all_estimators。以下是导入所有分类器的示例:

    from sklearn.utils import all_estimators
    
    estimators = all_estimators(type_filter='classifier')
    
    all_clfs = []
    for name, ClassifierClass in estimators:
        print('Appending', name)
        try:
            clf = ClassifierClass()
            all_clfs.append(clf)
        except Exception as e:
            print('Unable to import', name)
            print(e)
    

    Here's Colaboratory code 工作正常。

    【讨论】:

    • TypeError: __init__() 缺少 1 个必需的位置参数:'base_estimator'
    • 您必须小心,因为一些朴素贝叶斯模型只能采用某些类型的特征。例如CategoricalNB 模型只能将非负整数值作为特征。
    • 是的,这里的重点是让每个人都知道模块from sklearn.utils import all_estimators,但是,每个估算器都必须谨慎对待。
    • 以下分类器无法在 Colab 笔记本中实例化:附加 ClassifierChain 无法导入 ClassifierChain __init__() 缺少 1 个必需的位置参数:'base_estimator' 无法导入 MultiOutputClassifier 无法导入 OneVsOneClassifier 无法导入 OneVsRestClassifier 无法导入 OutputCodeClassifier 无法导入 StackingClassifier 无法导入 VotingClassifier __init__() 缺少 1 个必需的位置参数:'estimators'
    猜你喜欢
    • 2010-10-29
    • 2017-11-05
    • 2019-08-04
    • 2014-04-15
    • 1970-01-01
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多