前回から取り組み始めた「Kaggle」の過去問「Kickstarter Projects」にて、分類に採用する説明変数を選択していきたいと思います。
0.前回の続きなので、ライブラリのインポートや、データ読み込み、データの前処理が実施されている前提です。前回をご覧になっていない方は、以下をご参照ください。
1.散布図行列を描いてみます。
# まず、201801の散布図行列を書いてみる pd.plotting.scatter_matrix(df_f18_SorF, figsize=(30,30)) plt.show()散布図行列から「state」と相関がありそうなのは、「goal」、「pledged」、「backers」、「usd pledged」、「usd_pledged_real」、「usd_goal_real」にみえるのですが、「pledged」、「usd pledged」、「usd_pledged_real」は、結果として得られる数値なので、予測には使えません。 実質、「goal」、「backers」、「usd_goal_real」の3つが予測には使えると判断し、さらなる分析を実施する。
2.「goal」と「usd_goal_real」の関係を見てみる。
#成功と、失敗でデータを分ける。 df_f18_S = df_f18_SorF[df_f18_SorF['state']==1] df_f18_F = df_f18_SorF[df_f18_SorF['state']==0] #それぞれをプロットしてみるplt.grid(which='major',color='black',linestyle=':') plt.grid(which='minor',color='black',linestyle=':') plt.plot(df_f18_F["usd_goal_real"], df_f18_F["goal"], 'o', color='C1', label='false') plt.plot(df_f18_S["usd_goal_real"], df_f18_S["goal"], 'o', color='C0', label='successful') plt.legend(loc='best') plt.show()
原点周りで重なっていてうまくわかれていなさそうです。
両方の対数をとってみます。
plt.grid(which='major',color='black',linestyle=':') plt.grid(which='minor',color='black',linestyle=':') plt.plot(np.log(df_f18_F["usd_goal_real"]), np.log(df_f18_F["goal"]), 'o', color='C1', label='false') plt.plot(np.log(df_f18_S["usd_goal_real"]), np.log(df_f18_S["goal"]), 'o', color='C0', label='successful') plt.legend(loc='best') plt.show()
はやり重なってしまっているので、どちらかの説明変数で十分そうです。
「goal」を採用することにします。
3.「goal」と「usd_goal_real」の関係を見てみる。
#成功と、失敗でデータを分ける。 df_f18_S = df_f18_SorF[df_f18_SorF['state']==1] df_f18_F = df_f18_SorF[df_f18_SorF['state']==0] #それぞれをプロットしてみる plt.grid(which='major',color='black',linestyle=':') plt.grid(which='minor',color='black',linestyle=':') plt.plot(df_f18_S["backers"], df_f18_S["goal"], 'o', color='C0', label='successful') plt.plot(df_f18_F["backers"], df_f18_F["goal"], 'o', color='C1', label='false') plt.legend(loc='best') plt.show
なんとなく、オレンジと青が分かれていることが見えてきた。
オレンジ、青ともに大きくなるほど分散しているように見えるので、対数をとってみることにします。
#Log(0)対策 delta=1 #「goal」、「backers」の対数の関係を見てみる。 plt.grid(which='major',color='black',linestyle=':') plt.grid(which='minor',color='black',linestyle=':') plt.plot(np.log(df_f18_S["backers"]+delta), np.log(df_f18_S["goal"]+delta), 'o', color='C0', label='successful') plt.plot(np.log(df_f18_F["backers"]+delta), np.log(df_f18_F["goal"]+delta), 'o', color='C1', label='false') plt.legend(loc='best') plt.show()さらに分かれている感が出てきました。
「goal」と「backers」は、説明変数として使えそうです。
ここまでの関係の調査から、目的変数「state」を'successful'と'false'に分類するためには、説明変数として「goal」と「backers」が使えそうだということがわかってきました。
次回は、この2つの説明変数を使って分類モデルを作っていきたいと思います。
2019年3月9日(土)にG検定を受験し、見事合格できました!
受験の体験記や勉強法などを別のブログにまとめました。
これから受験される方がいらっしゃいましたらご参考まで。