오답노트

[ML] machine learning - all_estimators 본문

머신러닝, 딥러닝

[ML] machine learning - all_estimators

장비 정 2021. 1. 27. 20:13

머신러닝에는 분류, 회귀모델에 따라 sklearn 에서만 50여개의 모델들이 존재한다.

 

0.20.x 대에 최적화가 되어있어 현재 내가 사용하고 있는 0.23.0 버전에서는 쓸 수 없는 것들이 몇 개가 존재하는데,

 

남아있는 것들만으로도 꽤나 유용하게 사용할 수 있다.

 

사용방법을 말하자면

 

우선 모델들을 가져오기 위해선

 

from sklearn.utils.testing import all_estimators

 

를 추가한다.

 

all_estimators 에는 0.20.x 기준 쓸 수 있는 모델들이 존재하는데,

 

위의 라이브러리에서 모든 모델들을 한 눈에 보기 위해선 for 문을 이용해주면 된다.

 

우선 분류 모델의 경우

 

from sklearn.datasets import load_wine

from sklearn.metrics import accuracy_score

 

datasets=load_wine()

x=datasets.data

y=datasets.target

 

allAlgorithms=all_estimators(type_filter='classifier')

 

for (name, algoritm) in allAlgoritms:

    try:

        model=algoritm()

        model.fit(x, y)

        y_pred=model.predict(x)

        print(name, '의 정답률', accuracy_score(y, y_pred))

    except:

        print(name, '은 없는 모델')

 

와 같은 식으로 작성을 한다.

 

그럼

 

AdaBoostClassifier 의 정답률 0.9722222222222222

BaggingClassifier 의 정답률 0.9166666666666666

BernoulliNB 의 정답률 0.4444444444444444

CalibratedClassifierCV 의 정답률 0.8888888888888888

CategoricalNB 은 없는 모델

CheckingClassifier 의 정답률 0.25

ClassifierChain 은 없는 모델

ComplementNB 의 정답률 0.6388888888888888

DecisionTreeClassifier 의 정답률 0.8888888888888888

DummyClassifier 의 정답률 0.3333333333333333

ExtraTreeClassifier 의 정답률 0.8055555555555556

ExtraTreesClassifier 의 정답률 0.9444444444444444

GaussianNB 의 정답률 0.9722222222222222

GaussianProcessClassifier 의 정답률 0.3888888888888889

GradientBoostingClassifier 의 정답률 0.9166666666666666

HistGradientBoostingClassifier 의 정답률 0.9722222222222222

KNeighborsClassifier 의 정답률 0.6944444444444444

LabelPropagation 의 정답률 0.3333333333333333

LabelSpreading 의 정답률 0.3333333333333333

LinearDiscriminantAnalysis 의 정답률 1.0

LinearSVC 의 정답률 0.8611111111111112

LogisticRegression 의 정답률 0.9166666666666666

LogisticRegressionCV 의 정답률 0.9166666666666666

MLPClassifier 의 정답률 0.9166666666666666

MultiOutputClassifier 은 없는 모델

MultinomialNB 의 정답률 0.8333333333333334

NearestCentroid 의 정답률 0.7777777777777778

NuSVC 의 정답률 0.8611111111111112

OneVsOneClassifier 은 없는 모델

OneVsRestClassifier 은 없는 모델

OutputCodeClassifier 은 없는 모델

PassiveAggressiveClassifier 의 정답률 0.6388888888888888

Perceptron 의 정답률 0.6111111111111112

QuadraticDiscriminantAnalysis 의 정답률 1.0

RadiusNeighborsClassifier 은 없는 모델

RandomForestClassifier 의 정답률 0.9722222222222222

RidgeClassifier 의 정답률 1.0

RidgeClassifierCV 의 정답률 1.0

SGDClassifier 의 정답률 0.5

SVC 의 정답률 0.6388888888888888

StackingClassifier 은 없는 모델

VotingClassifier 은 없는 모델

 

와 같은 식으로 해당 라이브러리 안에 있는 모든 모델들이 구동 되며 각 값들이 나오게 된다.

 

회귀모델의 경우엔 데이터 로드를 회귀모델 데이터셋으로 바꾸고

 

allAlgoritms=all_estimators(type_filter='regressor') 로 바꿔주면 된다.

 

from sklearn.datasets import load_boston

from sklearn.metrics import r2_score

 

datasets=load_boston()

x=datasets.data

y=datasets.target

 

allAlgoritms=all_estimators(type_filter='regressor')

 

for (name, algoritm) in allAlgoritms :

    try:

        model=algoritm()

        model.fit(x, y)

        y_pred=model.predict(x)

        print(name, '의 정답률 : ', r2_score(y, y_pred))

    except:

        print(name, '은 없는 모델')

 

이런 식으로 작성하게 되면

 

ARDRegression 의 정답률 :  0.6780654234186746

AdaBoostRegressor 의 정답률 :  0.776194166401695

BaggingRegressor 의 정답률 :  0.7873230948251595

BayesianRidge 의 정답률 :  0.6739193815224682

CCA 의 정답률 :  0.5576945849111905

DecisionTreeRegressor 의 정답률 :  0.6534503223136072

DummyRegressor 의 정답률 :  -0.031660985575741485

ElasticNet 의 정답률 :  0.6572152690673503

ElasticNetCV 의 정답률 :  0.6511781759646544

ExtraTreeRegressor 의 정답률 :  0.6962575163023874

ExtraTreesRegressor 의 정답률 :  0.8561258157520168

GammaRegressor 의 정답률 :  -0.03166098557574171

GaussianProcessRegressor 의 정답률 :  -6.268062458366597

GeneralizedLinearRegressor 의 정답률 :  0.6357080657222156

GradientBoostingRegressor 의 정답률 :  0.8460120732954517

HistGradientBoostingRegressor 의 정답률 :  0.8266449770654344

HuberRegressor 의 정답률 :  0.6608858502164057

IsotonicRegression 은 없는 모델

KNeighborsRegressor 의 정답률 :  0.6287611999602677

KernelRidge 의 정답률 :  0.6380510278766541

Lars 의 정답률 :  0.6904233544589051

LarsCV 의 정답률 :  0.694605245686085

Lasso 의 정답률 :  0.6592074324274

LassoCV 의 정답률 :  0.6718127236890896

LassoLars 의 정답률 :  -0.031660985575741485

LassoLarsCV 의 정답률 :  0.6947879909064452

LassoLarsIC 의 정답률 :  0.6941895120920321

LinearRegression 의 정답률 :  0.6922908805512095

LinearSVR 의 정답률 :  0.41629853589365995

MLPRegressor 의 정답률 :  0.332126247305081

MultiOutputRegressor 은 없는 모델

MultiTaskElasticNet 은 없는 모델

MultiTaskElasticNetCV 은 없는 모델

MultiTaskLasso 은 없는 모델

MultiTaskLassoCV 은 없는 모델

NuSVR 의 정답률 :  0.3425415759545364

OrthogonalMatchingPursuit 의 정답률 :  0.529297335443208

OrthogonalMatchingPursuitCV 의 정답률 :  0.6172155412505074

PLSCanonical 의 정답률 :  -3.777796560776414

PLSRegression 의 정답률 :  0.6682815688704427

PassiveAggressiveRegressor 의 정답률 :  -1.1679063112342427

PoissonRegressor 의 정답률 :  0.7291992765601093

RANSACRegressor 의 정답률 :  -0.27578665395079094

RadiusNeighborsRegressor 은 없는 모델

RandomForestRegressor 의 정답률 :  0.8356724285652815

RegressorChain 은 없는 모델

Ridge 의 정답률 :  0.6833396417695796

RidgeCV 의 정답률 :  0.6910916738785535

SGDRegressor 의 정답률 :  -2.8716544035278645e+26

SVR 의 정답률 :  0.31226916707634644

StackingRegressor 은 없는 모델

TheilSenRegressor 의 정답률 :  0.6736380992958029

TransformedTargetRegressor 의 정답률 :  0.6922908805512095

TweedieRegressor 의 정답률 :  0.6357080657222156

VotingRegressor 은 없는 모델

_SigmoidCalibration 은 없는 모델

 

와 같은 식으로 나오게 된다.

 

 

분류는 accuracy_score 를 사용

회귀는 r2_score 를 사용하였다.

 

해당 데이터들을 토대로 향후 딥러닝 모델의 대략적인 지표 기준을 만들 수 있게 되었다.

'머신러닝, 딥러닝' 카테고리의 다른 글

[ML] XGBoost - eval_metric, eval_set, eval_results  (0) 2021.02.02
[ML] GridSearchCV, RandomizedSearchCV  (0) 2021.01.28
[ML] KFold, cross_val_score  (0) 2021.01.28
[DL] Google Colab  (0) 2021.01.26
[DL] pinball loss - Dacon  (1) 2021.01.25