俺人〜OREGIN〜俺、バカだから人工知能に代わりに頑張ってもらうまでのお話

俺って、おバカさんなので、とっても優秀な人工知能を作って代わりに頑張ってもらうことにしました。世界の端っこでおバカな俺が夢の達成に向けてチマチマ頑張る、そんな小さなお話です。現在はG検定、E資格に合格し、KaggleやProbSpaceのコンペに参画しながら、Pythonや機械学習、統計学、Dockerなどの勉強中です。学習したことをブログにアウトプットすることで、自分の身に着けていきたいと思います。まだまだ道半ばですが、お時間がありましたら見て行ってください。

ep4-1: オライリー・ジャパン社「実践 機械学習システム」に学ぶ。

「Kaggle」のデータセットKickstarter Projects」の取り組みで、かなり苦戦したので、今一度、基礎から学ぶために、オライリージャパン社の「実践 機械学習システム」に取り組んでまいります。

今回は、データの読み込みと欠損値の処理を学びます。

では、順に取り組んでいきます。

この書籍では、実践というだけあって、さっそく、増加するWebアクセスに対応するために、サーバなどのインフラ整備が必要となっているWeb関連のベンチャー企業を想定して、分析がはじまります。

 1.まずは、ライブラリのインポート。

#各ライブラリのインポート
import matplotlib.pyplot as plt
import scipy as sp 

図形描画用にmatplotlib、機械学習処理用にscipyをインポート。

2.データを読み込みます。

#経過時間ごとのアクセス数のデータをタブ区切りで読み込む
data = sp.genfromtxt("web_traffic.tsv", delimiter="\t")
#最初の10個を表示
print(data[:10])
[[1.000e+00 2.272e+03]
[2.000e+00 1.656e+03]
[3.000e+00 1.386e+03]
[4.000e+00 1.365e+03]
[5.000e+00 1.488e+03]
[6.000e+00 1.337e+03]
[7.000e+00 1.883e+03]
[8.000e+00 2.283e+03]
[9.000e+00 1.335e+03]
[1.000e+01 1.025e+03]]
タブ区切りで、一列目が経過時間、二列目がアクセス数にんっている敵sとファイルからデータを読み込みます。
scipyのgenfromtxtメソッドの引数にファイル名と、区切り文字(delimiter)を指定することでファイルを読み込みます。

3.欠損値を取り除く。

#経過時間の列(0)をxに格納
x = data[:, 0]
#アクセス数の列(1)をyに格納
y = data[:, 1]

#isnanメソッドを使って欠損値を表示
print("欠損値:", sp.sum(sp.isnan(y)))

#欠損値を除外
x = x[~sp.isnan(y)]
y = y[~sp.isnan(y)]
欠損値: 4

scipyのisnanメソッドにアクセス数の列(y)を渡すことで、yが「nan」欠損値であるデータを、真理型(ブーリアン型)で取得。

sumメソッドで、欠損値の数を合計して表示。

欠損値が4個あったので、~sp.isnan(y)とすることで、欠損以外のインデックスを取得して、欠損以外のx,yを取得。 

 4.データを散布図描画する。

plt.scatter(x,y)
plt.title("Web traffic over the last month")
plt.xlabel("Time")
plt.ylabel("Hits/hour")
plt.xticks([w*7*24 for w in range(10)],['week %i'%w for w in range(10)])
plt.autoscale(tight=True)
plt.grid()
plt.show()
 

f:id:kanriyou_h004:20190623224733p:plain

データを分析にあたって、まずは、散布図にプロットしてみます。

この図から、最初のほうは、あまりアクセスが伸びていませんが、4週目から急激にアクセスが高まっていることが分かります。

今回は、データの内容を確認するところまで取り組みました。

次回からは、この情報をもとに将来のアクセス数を予測する回帰モデルを考えていきます。

 

 2019年3月9日(土)にG検定を受験し、見事合格できました!

受験の体験記や勉強法などを別のブログにまとめました。

これから受験される方がいらっしゃいましたらご参考まで。

g-kentei.hatenablog.com