フィルタリング機能を用いて分析する¶
ここでは、RAPID機械学習 マッチング Python APIのフィルタリング機能を用いた分析の例として、 ある求人企業1社にマッチする求職者を予測します。
データを準備する¶
ユーザがアクセス可能なディレクトリにrapid-matching-python-getting_started.zipを格納します。
格納したファイルを解凍します。
$ unzip rapid-matching-python-getting_started.zip -d ~/work
[work/examples/filtering] ディレクトリに移動します。
$ cd ~/work/examples/filtering/
分析データファイル内の root_path に [work/examples/filtering/data] ディレクトリの絶対パスを指定します。
$ sed -i '2c "root_path": "'$(pwd)/data/\", data/data_conf_sse.json
分析を実行する¶
1. データ加工¶
学習データと予測データの加工を行います。
In [1]:
from rapid_matching_python import convert
convert('cls', 'data/data_conf_sse.json')
2. 予測モデル作成¶
学習データを用いて分類問題の予測モデルを作成します。
In [2]:
from rapid_matching_python import train_filtering
train_filtering('cls', 'data/data_conf_sse_new.json', 'data/hparam_sse.json')
3. 結果評価¶
予測データと予測モデルを用いて予測を実行します。
In [3]:
from rapid_matching_python import predict_filtering
predict_filtering('cls', 'data/data_conf_sse_new.json', 'data/hparam_sse.json')
予測結果を表示します。
In [4]:
import pandas as pd
result_df = pd.read_csv('data/predict/result_cls.csv', index_col='q_id')
result_df.head(5)
Out[4]:
正解ラベルごとのフィルタリングスコアをグラフに表示して確認します。
In [5]:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
df_p = result_df[result_df['truth']=='P']['score_P']
df_n = result_df[result_df['truth']=='N']['score_P']
hist_p, bins_p = np.histogram(df_p, bins=1001, range=(0, 1.001))
hist_n, bins_n = np.histogram(df_n, bins=1001, range=(0, 1.001))
plt.plot(bins_p[:-1], hist_p, 'blue')
plt.plot(bins_n[:-1], hist_n, 'red')
plt.plot([0.5, 0.5], [0.0, max(hist_p.max(), hist_n.max())], 'black', linestyle='dashed')
plt.ylim(0, max(np.r_[hist_p, hist_n]))
plt.xlabel("Score for label P")
plt.ylabel("Number of samples")
plt.show()