1. ホーム

Pythonのエラー "non-default argument follows default argument" を解決する。

2022-02-22 17:35:33

     先日、面白いAI学習サイトを見つけたのですが、分かりやすいので、思わずご紹介します。 クリックするとチュートリアルに飛びます 

    今日、モデルのトレーニング中にエラーが発生しました。おそらく、今までpythonのパラメータについてあまり知らなかったため、このエラーに初めて遭遇したのだと思います。そこで調べてみると、ウェブ上にいくつかのリンクがあり、何が起こっているのか理解することができました。

参考にしてください。
http://stackoverflow.com/questions/17893820/python-default-argument-syntax-error

http://stackoverflow.com/questions/16932825/why-non-default-arguments-cant-follows-default-argument

http://stackoverflow.com/questions/24719368/syntaxerror-non-default-argument-follows-default-argument

    つまり、デフォルト値のあるパラメータをデフォルト値のないパラメータの前に置いたということです。

    私が元々持っていた関数は

def random_predict(model_file='model/svm_model.pkl', X_train, y_train, X_test, y_test)
    clf = joblib.load("model/svm_model.pkl")
    result = []
    for i in range(10):
        lin = random.randint(0, 150)
        prediction_train = clf.predict(X_train[lin])
        prediction_test = clf.predict(X_test[lin])
        print prediction_train
        print '----------------------------------------------------------------'
        print prediction_test
        for i in prediction_train:
            result.append(i)
        for j in prediction_test:
            result.append(j)
    print result

に変更します。

def random_predict(X_train, y_train, X_test, y_test, model_file='model/svm_model.pkl'):
    model = joblib.load(model_file)
    clf = joblib.load("model/svm_model.pkl")
    result = []
    for i in range(10):
        lin = random.randint(0, 150)
        prediction_train = clf.predict(X_train[lin])
        prediction_test = clf.predict(X_test[lin])
        print prediction_train
        print '----------------------------------------------------------------'
        print prediction_test
        for i in prediction_train:
            result.append(i)
        for j in prediction_test:
            result.append(j)
    print result

これは、エラーが発生しないように修正されています