ScipyとMatplotlibを使ってデータの近似モデルを構築するこの広告は、90日以上更新していないブログに表示しています。ScipyとMatplotlibを使ってデータの近似モデルを構築するエクセルでええやんっていうツッコミは禁止。「プログラマーじゃない人が始める人工知能」の各記事はこちら。【目次】データを整形する近似モデルを構築する描画するデータを整形するいよいよ機械学習にとりかかる。オライリー先生の第1章では、架空の会社のデータを使って学習する。用意されているのは、架空会社の時間毎のWebリクエスト件数データだ。会社のインフラは、時間あたり100,000件のWebリクエストを超えると処理しきれなくなるので、いつの時点で100,000件を超えるのかを予測する。Githubに落ちているので、"Raw"ボタンを右クリック保存。データの中身はこんな感じ。・このデータを読み込んで、処理しやすいように整形していく。以下のようなコードを書く。y[~sp.isnan(y)]まず、ScipyとMatplotのpyplot(後で説明する)を読み込んでおく。以降、Scipyならsp.~、pyplotならplt.~を使うことで、ライブラリの関数を呼び出すことができる。Scipyのgenfromtxtを使ってデータを読み込みする。delimiter="\t"はデータがタブ区切りだよ、という指定。データの時間とアクセス件数を個別のデータとして扱うために二つのベクトルに分割する。これでベクトル毎に異なる処理を適用できる。[:,0]というのはScipyの記法で、0番目の次元を抽出しろというもの。含まれているので、Scipyのisnanを使って除外。isnanは、配列の要素に数値があるかどうかの判定結果を返してくれる。~を使うと論理否定演算をしてくれる。isnanを使って、対応するy(アクセス件数)が数値ではないx(時間)の配列と、対応するyが数値ではないyの配列を、xとyに入れ直す。近似モデルを構築するデータを眺めてみると、時間が経つにつれて、アクセス件数が増加している。このアクセス件数がどのくらいの伸びなのか、また、どれだけ時間が経てば100,000件に達するのかを予測したい。右肩上がりっぽい増加なので、まずは1次式の近似モデルを構築してみる。full=True)Scipyのpolyfitは、引数に配列をわたすだけで、最小二乗法的に近似となる関数の傾きと切片を求めてくれる超便利な関数である。最小二乗法とは、データの組がn個与えられた時に、データの関係を表すもっともらしいを関数を求める手法のこと。Wikipediaのページでも良いが、以下のページが分かりやすい。mathtrain.jppolyfitの素晴らしい点は、最小二乗法の計算式を理解していなくとも、勝手に係数を計算してくれるところである。理解を深めるには、偏微分を使って最小二乗法を計算する方法を知っておいたほうがいいのだが、うーん...。それはまた次に出てきた時に。(ほんとかよ)polyfitでx、yの配列を引数にわたし、次元1を指定し、係数を求める。5個の変数に値を入れているが、使うのは最初のfp1のみ。fp1の中身はこんな感じ。989.02487106]つまり、こんな式を得たわけだ。描画する時間が横軸、アクセス件数が縦軸の散布図を描き、そこに求めた近似モデルの直線を引っ張ろう。すれば、n時間目にどれだけのアクセス件数があるか、線を辿れば予測ができる。range(10)])plt.autoscale(tight=True)plt.grid()plt.showpolyfitで係数を取得したので、それを基にpoly1dを使って関数をつくる。poly"1"dである。次に直線を引っ張る用意。linspaceをつかって"線形に等間隔なベクトル"をつくる。0,x[-1]の範囲で、1,000個の点を出力しろよ、と指定している。Matplotlibのpyplotを使う。plt.plotで、fxの範囲で、f1の関数の直線を引っ張れと指定。データを直線と併せて描画したいので、plt.scatterを使う。titleとかlabel、xtics等は散布図の体裁を整えているだけなので、説明は割愛。consoleに描画される。近似モデルが描画できた。この1次式の近似モデルを使ってアクセス件数が100,000件に達する地点を予測しても良いのだが、データを眺めてみると、week3から急激にアクセス件数が伸びている。直線の近似モデルは上手くフィットしていないようだ。次回はn次元の近似モデルをいくつか作って、どれが最もデータに適合しそうかを判定する。以下、上述のコードを全部載せておく。対話型シェルと統合開発環境Spyderまだ機械学習してません。NetEaseに対する訴状内容まとめ2010年代の海外ドラマ革命と、映画、ゲーム。ついてid:ktadakiこのブログについてはてなブログをはじめよう!ktadakiさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。