質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

504閲覧

エラー箇所と改善方法を教えてください

pekeuto

総合スコア19

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/02/12 08:50

前提・実現したいこと

教師あり学習をしているときにエラーが出ました。
エラー箇所と改善方法を教えてください

発生している問題・エラーメッセージ

Traceback (most recent call last): File "test4.py", line 39, in <module> clf.fit(train_X, train_y) File "C:\Users\Anaconda3\lib\site-packages\sklearn\model_selection\_search.py", line 639, in fit cv.split(X, y, groups))) File "C:\Users\Anaconda3\lib\site-packages\sklearn\externals\joblib\parallel.py", line 779, in __call__ while self.dispatch_one_batch(iterator): File "C:\Users\Anaconda3\lib\site-packages\sklearn\externals\joblib\parallel.py", line 625, in dispatch_one_batch self._dispatch(tasks) File "C:\Users\Anaconda3\lib\site-packages\sklearn\externals\joblib\parallel.py", line 588, in _dispatch job = self._backend.apply_async(batch, callback=cb) File "C:\Users\Anaconda3\lib\site-packages\sklearn\externals\joblib\_parallel_backends.py", line 111, in apply_async result = ImmediateResult(func) File "C:\Users\Anaconda3\lib\site-packages\sklearn\externals\joblib\_parallel_backends.py", line 332, in __init__ self.results = batch() File "C:\Users\Anaconda3\lib\site-packages\sklearn\externals\joblib\parallel.py", line 131, in __call__ return [func(*args, **kwargs) for func, args, kwargs in self.items] File "C:\Users\Anaconda3\lib\site-packages\sklearn\externals\joblib\parallel.py", line 131, in <listcomp> return [func(*args, **kwargs) for func, args, kwargs in self.items] File "C:\Users\Anaconda3\lib\site-packages\sklearn\model_selection\_validation.py", line 458, in _fit_and_score estimator.fit(X_train, y_train, **fit_params) File "C:\Users\Anaconda3\lib\site-packages\sklearn\linear_model\logistic.py", line 1222, in fit self.dual) File "C:\Users\Anaconda3\lib\site-packages\sklearn\linear_model\logistic.py", line 438, in _check_solver_option "a multinomial backend." % solver) ValueError: Solver liblinear does not support a multinomial backend.

該当のソースコード

python

1from sklearn.datasets import load_digits 2from sklearn.model_selection import train_test_split 3from sklearn.svm import SVC 4from sklearn.tree import DecisionTreeClassifier 5from sklearn.ensemble import RandomForestClassifier 6from sklearn.model_selection import RandomizedSearchCV 7from sklearn.metrics import f1_score 8from sklearn.svm import LinearSVC 9from sklearn.linear_model import LogisticRegression 10 11data = load_digits() 12train_X, test_X, train_y, test_y = train_test_split( 13 data.data, data.target, random_state=42) 14 15best_score = 0 16best_model = None 17best_param = None 18 19models_name = ["SVM", "決定木", "ランダムフォレスト","線形SVM","ロジスティク回帰"] 20models = [SVC(), DecisionTreeClassifier(), RandomForestClassifier(), LinearSVC(),LogisticRegression()] 21params = [{"C": [0.01, 0.1, 1.0, 10, 100], 22 "kernel": ["linear", "rbf", "poly", "sigmoid"], 23 "random_state": [42], 24 "decision_function_shape":["ovo","ovr"]}, 25 {"max_depth": [i for i in range(1, 10)], 26 "random_state": [i for i in range(100)]}, 27 {"n_estimators": [i for i in range(10, 20)], 28 "max_depth": [i for i in range(1, 10)], 29 "random_state": [i for i in range(100)]}, 30 {"C": [0.01, 0.1, 1.0, 10, 100], 31 "random_state": [42], 32 "multi_class":["crammer_singer","ovr"]}, 33 {"C": [0.01, 0.1, 1.0, 10, 100], 34 "random_state": [42], 35 "multi_class":["multinomial","ovr"]}] 36for name, model, param in zip(models_name, models, params): 37 clf = RandomizedSearchCV(model, param) 38 clf.fit(train_X, train_y) 39 pred_y = clf.predict(test_X) 40 score = f1_score(test_y, pred_y, average="micro") 41 42 if best_score < score: 43 best_score = score 44 best_model = name 45 best_param = clf.best_params_ 46 47print("学習モデル:{},\nパラメーター:{}".format(best_model, best_param)) 48 49print(best_score) 50 51

試したこと

Solver liblinear does not support a multinomial backend.
=>ソルバーliblinearは、多項式バックエンドをサポートしません

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

エラー原因

LogisticRegressionのパラメータに問題があります。リファレンスの以下の説明のとおりです。

For multiclass problems, only ‘newton-cg’, ‘sag’, ‘saga’ and ‘lbfgs’ handle multinomial loss; ‘liblinear’ is limited to one-versus-rest schemes.
https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html

対策

モデルをインスタンス化する時点で、multinomial lossを扱えるいずれかのsolverにしておくと良いかと思います。

投稿2019/02/12 09:01

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pekeuto

2019/02/12 09:15

具体的にはどうすればよいのでしょうか? 教えていただけたら幸いです
hayataka2049

2019/02/12 09:16

models = [SVC(), DecisionTreeClassifier(), RandomForestClassifier(), LinearSVC(),LogisticRegression()] の行のLogisticRegression()の部分を LogisticRegression(solver="自分が選んだsolverの名前") のように書き換えます。 どれを選ぶべきかは一概に言えない気がするので、リファレンスの説明を参考にいろいろ試してみると良いかと思います。
pekeuto

2019/02/12 09:21

ありがとうございます。 試してみます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問