データアナリストって何やるの? (1/2) に続き、データアナリストが実際に使うプログラムを紹介します。
分析で使うツールには、PythonやR、Juliaといったプログラム言語や、クラウドサービスやパッケージ製品がありますが、今回は最もよく使われるPythonに限定して解説します。
実際の仕事をしていると、こういったプログラムはググって調べながら進めていくものです。全て覚えている訳ではありません。Pythonの基礎に慣れ、以下のようなパターンがあることだけ知っていれば仕事のスタートはきれると思います。
「データ準備」で使うプログラム例
- データの欠落を埋める
データが欠落し"NaN"となっている箇所を指定した値で埋めます。下記は平均値で埋めています。
1 2 3 |
import pandas as pd data = pd.read_csv('sample.csv') data['カラム1'] = data['カラム1'].fillna(data['カラム1'].mean()) |
- データの異常値を除外する
あるデータ箇所の値が飛びぬけて異なる数値だった場合、分析に悪影響を及ぼすため、それはレコード毎削除するのが賢明です。下記はある数値以上のレコードを除外しています。
1 2 3 |
import pandas as pd data = pd.read_csv('sample.csv') data = data.query('カラム1 <= 数値') |
- 数値の正規化(標準化)をする
カラム同士の値の規模の違いが分析に影響しないよう、数値を正規化(標準化)します。例えば気温の数値と気圧の数値は桁が違うため、どちらも0~1の範囲の数値に置き換えます。これを行わないと良い予測ができません。
1 2 3 |
from sklearn import preprocessing data = pd.read_csv('sample.csv') data['カラム1'] = preprocessing.scale(data['カラム1']) |
「データ分析」で使うプログラム例
- データの統計
データの件数、平均値、標準偏差、最小値、最大値、四分位点を計算し、傾向を見ます。describe命令1つで全てが計算されます。
1 2 3 |
import pandas as pd data = pd.read_csv('sample.csv') data.describe() |
- データの可視化
数値のデータは棒グラフで、カテゴリデータはヒストグラムでグラフ化します。これによってデータの偏りが分かります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import pandas as pd from matplotlib import pyplot as plt # カラムの中が数値データの場合はヒストグラム column1 = data['カラム1'] column1.plot.hist() plt.show() # カラム中がカテゴリデータの場合は棒グラフ counts = data['カラム1'].value_counts() # 棒グラフ化 counts.plot.bar(title='カラム1の頻度') plt.xlabel('カラム1') plt.ylabel('件数') plt.show() |
- 不要なカラムの除外
データの傾向を見て、予測と関係のないカラムを見出した場合、そのカラムを除外します。例えば、売上の分析に商品コードは関係ないため除外します。
1 2 3 |
import pandas as pd data = pd.read_csv('sample.csv') data = data.drop(‘カラム2', axis=1) |
- 予測モデルのアルゴリズムの選択
予測を行うモデル(=統計的機械学習のアルゴリズム)を選択します。データの特性によって選択肢が異なります。ここでは詳しく解説しませんが、どのようなものがあるかはこちらを参照してください。-> AIの種類~ありそうで無い分類表~
- 予測モデルの学習
選択したモデルにデータを学習させます。下記ではSVRというアルゴリズムを使って学習しています。
1 2 3 4 5 6 |
import pandas as pd from sklearn.svm import SVR features_train = pd.read_csv('features.csv') labels_train = pd.read_csv('labels.csv') model = SVR() model.fit(features_train, labels_train) |
- 予測モデルで予測
学習したモデルで予測用データに対し予測を実行します。上記に続けて以下を実行します。
1 2 3 |
features_test = pd.read_csv('features_test.csv') labels_test = model.predict(features_test) print(labels_test) |
- 予測の評価
予測がどの程度正解しているか評価します。正解率とAUC値という評価値を出し、どちらも1に近づくほど精度が良いとします。
1 2 3 4 5 6 7 8 9 |
# 正解=labels_train, 予測=labels_predicted from sklearn.metrics import accuracy_score acc = accuracy_score(labels_train, labels_predicted) print("正解率︓", acc) from sklearn.metrics import roc_auc_score auc = roc_auc_score(labels_train, labels_predicted) print("AUC︓", auc) |
- モデルのチューニング
正解率やAUCの値が悪かった場合、アルゴリズムの変更やパラメータの変更を何度か検証し、良い結果のものを選択します。
パラメータはハイパーパラメータとも言い、アルゴリズムを実行する際のしきい値です。デフォルト値でよい場合が多いですが、調整することにより精度が変わります。アルゴリズム毎に違うものを複数持っています。
1 2 3 4 5 6 |
# ↓ アルゴリズムの種類 model = linear_model.SGDRegressor(loss='squared_loss') model = linear_model.LinearRegression() model = linear_model.Lasso(alpha=1.0) model = SVR(kernel='rbf') # ↑ ハイパーパラメータ |
以上、データ準備とデータ分析のフェーズで使う代表的なプログラムを挙げてみました。
具体的な命令文は後でググればいいですから、手段にどんな方法があるか知っておけばいいと思います。これを知っていることで、企画やデータ活用の思考にも役立ちます。
このブログでも統計的機械学習で実際の課題をいくつか解いています。参考にしてください。 -> AIを作ってみよう:消費予測