経緯
pythonではじめる機械学習p97をやっているのですが、svmパラメータを調整する時のコードに出てくる二重のfor文の挙動が分からず困っています。
for とifの組み合わせによるネストについてに出てくるコードのように、
「iの一番目、二番目、三番目の要素についてjの要素全てを順にループしていく」という構造のfor文は理解できるのですが、
今回のようなfor文ではその考えだと、「ax,Cに対してa,gammaをループする」という意味が通らない解釈しかできず、また、最初のfor文の引数にgammaを入れてあげたほうがシンプルになるという考えもできてしまい(=最初のfor文の引数を三つにする)、非常に混乱しています。
簡単な質問かと思われますが、プログラムがどのように動作しているのかをご教授いただけないでしょうか?
-----------------追記---------------------
Cの各要素についてgammaの要素を順にループしていくというところは理解できますが、axは3行3列のaxesデータ(座標軸のデータ)aは9つの座標軸データを持っており、axの各要素に対してaがループされたのでは9*9でグラフが81個プロットされる計算になってしまい(ここが誤解の元だと思います。)どのようにループされるのかわかりかねております。
-----------------追記2---------------------
このような理解で間違いないでしょうか。
-----------------追記3---------------------
再度ループの階層(?)を意識してループのイメージを書き直しました。もともと混乱した原因は「外側、内側」という言葉が何を表しているのかよくわからなかったからだと思うのですが、これでだいたいあっていると思います。ただ、ループの描写もあまりうまくありませんが…
fig, axes = plt.subplots(3,3,figsize=(15,10)) for ax, C in zip(axes, [-1, 0, 3]): for a, gamma in zip(ax, range(-1, 2)): mglearn.plots.plot_svm(log_C=C, log_gamma=gamma, ax=a) axes[0,0].legend(['class 0','class 1','sv class 0','sv class 1',], ncol=4, loc=(.9,1.2))
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/07 16:07 編集
2020/03/07 16:10
2020/03/08 04:56 編集