最適なモデル選びall_estimators()

機械学習




最適なモデル選び

0.18では動きます。
機械学習では、様々なモデル(アルゴリズム)が存在する。

scikit-learnでも、多くのモデルが用意されている。

all_estimators()を使うことで、正解率が高い=最適なモデルを選ぶことができる。

all_estimatorsでは、分類問題・回帰問題・クラスタリング問題を選択できる。
それぞれ、‘classifier’, ‘regressor’, ‘cluster’

データの形が合わないとエラーが出るので、全てに対応していないと全てのモデルをテストできないことに注意
sklearn.utils.testing.all_estimators

classifier:分類問題を扱う

SepalLength、SepalWidth、PetalLength、PetalWidthの4つの変数から、Nameを予測する。

データの形式

結果

以上の結果から、正解率の高いモデルを選べば良い。

ソースコード

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.utils.testing import all_estimators
from sklearn.datasets import load_iris
import warnings
warnings.filterwarnings('ignore')
iris = load_iris()
X = iris.data
y = iris.target

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, shuffle=False)


#最適なモデルを選ぶall_estimators()
allAlgorithms = all_estimators(type_filter="classifier")
for (name, algorithm) in allAlgorithms:
    clf = algorithm()
    
    clf.fit(X_train, y_train)

    y_pred = clf.predict(X_test)
    
    print(name,"の正解率=", accuracy_score(y_test, y_pred))

regressor:回帰問題

from sklearn.utils.testing import all_estimators
from sklearn.datasets import load_diabetes
from sklearn.metrics import mean_squared_error
import pandas as pd
import numpy as np
import warnings
warnings.filterwarnings('ignore')

diabetes = load_diabetes()

# 説明変数データを取得
data_X = pd.DataFrame(diabetes.data, columns=diabetes.feature_names)
#被説明変数データを取得
data_y = pd.DataFrame(diabetes.target, columns=['target'])

from sklearn.model_selection import train_test_split
 
train_X, test_X, train_y, test_y = train_test_split(data_X, data_y, test_size=0.4, random_state=0)


allAlgorithms = all_estimators(type_filter="regressor")
for (name, algorithm) in allAlgorithms:
    clf = algorithm()
     
    clf.fit(train_X, train_y)
 
    pred_y = clf.predict(test_X)
     
    print(name,"の正解率=", np.sqrt(mean_squared_error(test_y, pred_y)))

参考書

タイトルとURLをコピーしました