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

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

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

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

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

Q&A

解決済

1回答

886閲覧

python 線形SVMのハイパーパラメーター グラフが何を意味しているのか教えていただきたいです。

ryo123445556

総合スコア6

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

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

0グッド

0クリップ

投稿2021/07/11 09:21

下のコードのグラフが何を意味しているのか教えていただきたいです。

Cのパラメーターが何を意味していて
実行結果のグラフから何がわかるのか簡単に教えていただけると嬉しいです。

python

1import matplotlib.pyplot as plt 2from sklearn.linear_model import LogisticRegression 3from sklearn.svm import LinearSVC 4from sklearn.datasets import make_classification 5from sklearn import preprocessing 6from sklearn.model_selection import train_test_split 7%matplotlib inline 8 9# データの生成 10X, y = make_classification( 11 n_samples=1250, n_features=4, n_informative=2, n_redundant=2, random_state=42) 12train_X, test_X, train_y, test_y = train_test_split(X, y, random_state=42) 13 14# Cの値の範囲を設定(今回は1e-5,1e-4,1e-3,0.01,0.1,1,10,100,1000,10000) 15C_list = [10 ** i for i in range(-5, 5)] 16 17# グラフ描画用の空リストを用意 18svm_train_accuracy = [] 19svm_test_accuracy = [] 20log_train_accuracy = [] 21log_test_accuracy = [] 22 23# 以下にコードを書いてください。 24for C in C_list: 25 # 線形SVMのモデルを構築してください 26 model1 = LinearSVC(C=C, random_state=42) 27 model1.fit(train_X, train_y) 28 svm_train_accuracy.append(model1.score(train_X, train_y)) 29 svm_test_accuracy.append(model1.score(test_X, test_y)) 30 31 # ロジスティック回帰のモデルを構築してください 32 model2 = LogisticRegression(C=C, random_state=42) 33 model2.fit(train_X, train_y) 34 log_train_accuracy.append(model2.score(train_X, train_y)) 35 log_test_accuracy.append(model2.score(test_X, test_y)) 36 37# グラフの準備 38# semilogx()はxのスケールを10のx乗のスケールに変更する 39 40fig = plt.figure() 41plt.subplots_adjust(wspace=0.4, hspace=0.4) 42ax = fig.add_subplot(1, 1, 1) 43ax.grid(True) 44ax.set_title("SVM") 45ax.set_xlabel("C") 46ax.set_ylabel("accuracy") 47ax.semilogx(C_list, svm_train_accuracy, label="accuracy of train_data") 48ax.semilogx(C_list, svm_test_accuracy, label="accuracy of test_data") 49ax.legend() 50ax.plot() 51plt.show() 52fig2 =plt.figure() 53ax2 = fig2.add_subplot(1, 1, 1) 54ax2.grid(True) 55ax2.set_title("LogisticRegression") 56ax2.set_xlabel("C") 57ax2.set_ylabel("accuracy") 58ax2.semilogx(C_list, log_train_accuracy, label="accuracy of train_data") 59ax2.semilogx(C_list, log_test_accuracy, label="accuracy of test_data") 60ax2.legend() 61ax2.plot() 62plt.show()

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

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

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

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

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

jbpb0

2021/07/12 07:05 編集

> Cのパラメーターが何を意味していて 「LinearSVC」は、 サポートベクターマシン ソフトマージン でググると、解説記事がたくさん見つかるので、それの「ソフトマージン」の説明を見てください 「LogisticRegression」は、 ロジスティック回帰 正則化 でググると、解説記事がたくさん見つかるので、それの「正則化」の説明を見てください
ryo123445556

2021/07/12 06:28

ありがとうございます。
jbpb0

2021/07/12 07:11

> 実行結果のグラフから何がわかる グラフの「accuracy of test_data」の値が高くなる時の「C」の値を使うと、未知のデータに対する予測精度が高くなることが期待できます
guest

回答1

0

ベストアンサー

Cのパラメーターが何を意味していて

「LinearSVC」は、

サポートベクターマシン ソフトマージン

でググると解説記事がたくさん見つかるので、それの「ソフトマージン」の説明を見てください

「LogisticRegression」は、

ロジスティック回帰 正則化

でググると解説記事がたくさん見つかるので、それの「正則化」の説明を見てください

実行結果のグラフから何がわかる

グラフの「accuracy of test_data」の値が高くなる時の「C」の値を使うと、未知のデータに対する予測精度が高くなることが期待できます

投稿2021/07/14 08:51

jbpb0

総合スコア7651

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問