2017-10-20 16 views
1

私はいくつかの予測モデルを作成しており、そこに何があるのか​​、どのように予測タスクを実行しているのかを見るために異なる種類の回帰変数をベンチマークしたいと考えています。Sklearns回帰分析器をすべてインポートするには

これは、kaggle kernelによって作成者の本質的に手作業で手作業で手動で分類器(約10)をインポートし、ベンチマークすることでインスピレーションを受けました。

sklearnに回帰変数の包括的なリストを見つけるのが難しいので、私はimport文を自動化しようとしています。自動的に私が使用できるクラスのリストを返します。

from importlib import import_module 
import sklearn 

def all_regressors(): 
    regressors=[] 
    for module in sklearn.__all__: 
     try: 
      regressors.extend([cls for cls in import_module(f'sklearn.{module}').__all__ if 'Regress' in cls ]) 
     except: 
      pass 
    regressors.append(sklearn.svm.SVR) 
    return regressors 
print(all_regressors()) 

しかし、私だけではなく、クラスよりも、文字列として名前を取り戻す:

['RandomForestRegressor', 'ExtraTreesRegressor', 'BaggingRegressor', 
'GradientBoostingRegressor', 'AdaBoostRegressor', 
'GaussianProcessRegressor', 'IsotonicRegression', 'ARDRegression', 
'HuberRegressor', 'LinearRegression', 'LogisticRegression', 
'LogisticRegressionCV', 'PassiveAggressiveRegressor', 
'RandomizedLogisticRegression', 'SGDRegressor', 'TheilSenRegressor', 
'RANSACRegressor', 'MultiOutputRegressor', 'KNeighborsRegressor', 
'RadiusNeighborsRegressor', 'MLPRegressor', 'DecisionTreeRegressor', 
'ExtraTreeRegressor', <class 'sklearn.svm.classes.SVR'>] 

がどのように私は、実際のクラスを取得することができます

私は動的にクラスをインポートしようとした

答えて

2

私は私がモジュールオブジェクトにgetattrを使用していた考え出し:

from importlib import import_module 
import sklearn 

def all_regressors(): 
    regressors=[] 
    for module in sklearn.__all__: 
     try: 
      module = import_module(f'sklearn.{module}') 
      regressors.extend([getattr(module,cls) for cls in module.__all__ if 'Regress' in cls ]) 
     except: 
      pass 
    regressors.append(sklearn.svm.SVR) 
    return regressors 
print(all_regressors()) 
[<class 'sklearn.ensemble.forest.RandomForestRegressor'>, <class 
'sklearn.ensemble.forest.ExtraTreesRegressor'>, <class 
'sklearn.ensemble.bagging.BaggingRegressor'>, <class 
'sklearn.ensemble.gradient_boosting.GradientBoostingRegressor'>, 
<class 'sklearn.ensemble.weight_boosting.AdaBoostRegressor'>, <class 
'sklearn.gaussian_process.gpr.GaussianProcessRegressor'>, <class 
'sklearn.isotonic.IsotonicRegression'>, <class 
'sklearn.linear_model.bayes.ARDRegression'>, <class 
'sklearn.linear_model.huber.HuberRegressor'>, <class 
'sklearn.linear_model.base.LinearRegression'>, <class 
'sklearn.linear_model.logistic.LogisticRegression'>, <class 
'sklearn.linear_model.logistic.LogisticRegressionCV'>, <class 
'sklearn.linear_model.passive_aggressive.PassiveAggressiveRegressor'>, 
<class 'sklearn.linear_model.randomized_l1.RandomizedLogisticRegression'>, <class 
'sklearn.linear_model.stochastic_gradient.SGDRegressor'>, <class 
'sklearn.linear_model.theil_sen.TheilSenRegressor'>, <class 
'sklearn.linear_model.ransac.RANSACRegressor'>, <class 
'sklearn.multioutput.MultiOutputRegressor'>, <class 
'sklearn.neighbors.regression.KNeighborsRegressor'>, <class 
'sklearn.neighbors.regression.RadiusNeighborsRegressor'>, <class 
'sklearn.neural_network.multilayer_perceptron.MLPRegressor'>, <class 
'sklearn.tree.tree.DecisionTreeRegressor'>, <class 
'sklearn.tree.tree.ExtraTreeRegressor'>, <class 
'sklearn.svm.classes.SVR'>] 
関連する問題