오답노트
[ML] machine learning - all_estimators 본문
머신러닝에는 분류, 회귀모델에 따라 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 |