残念ながら | python3Xのブログ

python3Xのブログ

ここでは40代、50代の方が日々の生活で役に立つ情報や私の趣味であるプログラム、Excelや科学に関する内容で投稿する予定です。

書籍の通りには上手くいきませんでした.

『base_estimator を指定しろ』ということでしょうが

AdaBoostClassifier の正解率 =  0.9666666666666667
BaggingClassifier の正解率 =  0.9666666666666667
BernoulliNB の正解率 =  0.26666666666666666
CalibratedClassifierCV の正解率 =  0.9333333333333333
CheckingClassifier の正解率 =  0.26666666666666666
 
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-10-f82dcd1e4d8f> in <module>
      1 for(name, algorithm) in all_estimators(type_filter="classifier"):
      2     # 各アリゴリズムのオブジェクトを作成 
----> 3     clf = algorithm()
      4 
      5     # 学習して、評価する

TypeError: __init__() missing 1 required positional argument: 'base_estimator'

そこで、あまり感心できない手を使ってしまいましたが、ほとんどの分類器を比較することが出来ました..

 

最適なアルゴリズムを見つける

①様々なアルゴリズムを比較する
②様々なパターンのデータに対して安定した結果が得られるか検証する

import sklearn
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import warnings                                    # エラー表示
from sklearn.utils.testing import all_estimators   # 全ての推定器(分類器)

# アヤメデータの読み込み
iris_# アヤメデータをラベルと入力データに分離する
y = iris_data["Name"]
x = iris_data.drop("Name", axis=1)data = pd.read_csv("iris4.csv", encoding="utf-8")

# 学習用とテスト用に分離する
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.2, train_size = 0.8, shuffle = True)

 

clfs = [clf1, clf2, clf3, clf4, clf5,  ・・・]
names = ["AdaBoostClassifier","BaggingClassifier", "BernoulliNB",  ・・・]
count = 0
warnings.filterwarnings('ignore')
for clf in clfs:
    # 各アリゴリズムのオブジェクトを作成
    clf = clf()
    # 学習して、評価する
    clf.fit(x_train, y_train)
    y_pred = clf.predict(x_test)
    print(names[count],"の正解率 = " , accuracy_score(y_test, y_pred))
    count = count + 1
AdaBoostClassifier の正解率 =  0.9333333333333333
BaggingClassifier の正解率 =  0.9333333333333333
BernoulliNB の正解率 =  0.23333333333333334
CalibratedClassifierCV の正解率 =  0.9333333333333333
CheckingClassifier の正解率 =  0.3333333333333333
ClassifierChain の正解率 =  0.7666666666666667
ComplementNB の正解率 =  0.9333333333333333
DecisionTreeClassifier の正解率 =  0.5
DummyClassifier の正解率 =  0.8666666666666667
ExtraTreeClassifier の正解率 =  0.9666666666666667
GaussianNB の正解率 =  0.9666666666666667
GaussianProcessClassifier の正解率 =  0.9333333333333333
GradientBoostingClassifier の正解率 =  0.9666666666666667
KNeighborsClassifier の正解率 =  0.9666666666666667
LabelPropagation の正解率 =  0.9666666666666667
LabelSpreading の正解率 =  1.0
LinearDiscriminantAnalysis の正解率 =  0.9666666666666667
LinearSVC の正解率 =  0.9333333333333333
LogisticRegression の正解率 =  0.9666666666666667
LogisticRegressionCV の正解率 =  1.0 MLPClassifier の正解率 =  0.9333333333333333
MultinomialNB の正解率 =  0.9333333333333333
NearestCentroid の正解率 =  0.9666666666666667
NuSVC の正解率 =  1.0
PassiveAggressiveClassifier の正解率 =  0.7
Perceptron の正解率 =  0.9333333333333333
QuadraticDiscriminantAnalysis の正解率 =  0.9666666666666667
RadiusNeighborsClassifier の正解率 =  0.9666666666666667
RandomForestClassifier の正解率 =  0.9666666666666667
RidgeClassifier の正解率 =  0.8666666666666667
RidgeClassifierCV の正解率 =  0.8666666666666667
SGDClassifier の正解率 =  0.7666666666666667
SVC の正解率 =  0.9666666666666667