今日はPythonで犯罪予測を行う方法について取り上げます。
犯罪が日々増加し、警察官の数が減少している現代において、人が犯罪者かどうかを予測するために、機械学習モデルを活用することがあります。
Pythonで犯罪予測を実装する
今回は、ある人の特徴をもとに、その人が犯罪者であるかどうかを予測するモデルを開発します。
データセットはtechgigから取得しました。
Pythonノートブック、データ辞書、データセットはこちらで入手できます。
ステップ1:必要なライブラリのインポート
犯罪予知の本題に入る前に、必要なライブラリをインポートしておきましょう。
1
2
3
4
|
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
|
ステップ2:データセットのロード
次のステップでは、pandasモジュールの read_csv
関数を使用してデータファイルをプログラムにロードします。
1
2
|
df = pd.read_csv( 'train.csv' )
df.head() |
ステップ3:データのクリーニング
次のステップは、その中に欠損値があるかどうかを確認することです。
このチュートリアルのために、我々はすべての欠損値を除去しました。
print (df.isna(). sum ())
|
ステップ4:訓練とテストの分割
このステップでは、80-20ルールとsklearn
ライブラリ関数を用いて、データをトレーニングデータとテストデータに分割します。
1
2
3
4
5
6
7
8
9
10
|
from sklearn.ensemble import ExtraTreesClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix , plot_roc_curve
from imblearn.over_sampling import SMOTE
smote = SMOTE()
#stratify for equal no. of classes in train and test set x_train,x_test ,y_train,y_test = train_test_split(df.iloc[:, 1 : - 1 ],df.iloc[:, - 1 ], stratify = df.iloc[:, - 1 ],test_size = 0.2 ,random_state = 42 )
X_re ,y_re = smote.fit_resample(x_train,y_train)
|
犯罪者クラスの不均衡の問題を解決するために、SMOTE (Synthetic Minority Oversampling Approach) というデータセットバランシングの手法を採用します。
ここでは、学習データのみをバランスさせ、テストデータはバランスさせない。
要約すると、Smoteはクラスタリングを用いて、オーバーサンプリングのためにインバランスクラスの新しいインスタンスを生成します。
ステップ5:ツリーベース分類器の作成
木ベースのモデルは、数多くのカテゴリの特徴に使用することができます。
ExtraTreesClassifierが利用されました。
1
2
3
|
clf = ExtraTreesClassifier()
clf.fit(X_re,y_re) clf.score(x_test,y_test) |
出力は、0.94335
というスコアを表示しました。
ステップ6:ROC曲線の表示
最後に、以下のコードを用いて、我々のモデルのROC曲線をプロットしてみましょう。
plot_roc_curve( clf,x_test,y_test) |
まとめ
Pythonプログラミング言語と機械学習を使って犯罪予測装置を構築する方法を学びました。
このチュートリアルが気に入りましたか?いずれにせよ、以下のチュートリアルをご覧になることをお勧めします。
- Pythonを使った株価予測
- Pythonを使った暗号の価格予測
- Pythonによる株価予測
- Pythonによる興行収入予測 – 簡単な実装例
お時間を割いていただき、ありがとうございました! 何か新しいことを学べたでしょうか!
この記事もチェック:Pythonで機械学習をライブラリや概要をまとめてみた