自動車事故重症度レポート


A .はじめに🔥


コミュニティの自動車衝突の頻度を減らすために、現在の天気、道と可視性条件を与えられた事故の重大度を予測するために、アルゴリズムを開発しなければなりません.状況が悪いとき、このモデルは、彼らがより慎重であるのを思い出させるために、ドライバーに警告します.

データ理解🔬


データセット内で0から5までの事故の重大度を測定するため、予測値またはターゲット変数はSEVERITYCODEになります.事故の重大度を測定するために使用される属性はWEATHERROADCONDLIGHTCONDである.
severityコードは以下の通りです.
0 : Little to no Probability (Clear Conditions)

1 : Very Low Probability - Chance or Property Damage

2 : Low Probability - Chance of Injury

3 : Mild Probability - Chance of Serious Injury

4 : High Probability - Chance of Fatality

抽出データセットと変換🏭


元の形式では、このデータは分析に適していません.一つには、このモデルでは使用しないカラムがたくさんあります.また、ほとんどの特徴は数値型でなければ型オブジェクトです.
我々は目的のデータ型に特徴を隠すためにラベル符号化を使用しなければなりません.

新しい列で、我々は今我々の分析とMLモデルでこのデータを使用することができます!
では、データの新しい列のデータ型をチェックしましょう.前方に移動すると、我々は分析のための新しい列を使用します.

d .データセットのバランス📝


我々の目標変数SEVERITYCODEはわずか42 %バランスが取れています.実際、クラス1のseverityコードはクラス2の3倍近くです.
我々は、多数のクラスをダウンサンプリングすることによってこれを修正することができます.

完全にバランスが保たれる

方法論💾


我々のデータは、現在機械学習モデルに供給される準備ができています.
次のモデルを使用します.
  • K最近傍(KNN)
    KNNは、K距離以内のデータポイントに最も類似していることを見つけることによって、結果の重大度コードを予測するのを助けます.
  • 決定木
    決定木モデルは、我々が完全に決定の結果を分析することができるように、すべての可能な結果のレイアウトを与えます.IT文脈、決定木は、異なる気象条件のすべての可能な結果を観察します.
  • ロジスティック回帰
    我々のデータセットだけが2つの重大度コード結果を私たちに提供するので、我々のモデルはそれらの2つのクラスのうちの1つを予測するだけです.これはロジスティック回帰で使用するのに最適なデータバイナリを作成します.
  • 始めましょう!

    初期設定👑

  • はXとY
  • を定義します
  • はデータセット
  • を正規化します
    スプリットテスト

    モデリング📊


  • k最近傍
    最良のk値の発見

  • #Train Model & Predict  
    k = mean_acc.argmax()+1
    neigh = KNeighborsClassifier(n_neighbors = k).fit(X_train,y_train)
    neigh
    
    Kyhat = neigh.predict(X_test)
    Kyhat[0:5]
    
    array([2, 2, 1, 1, 2])

  • 決定木
  • # Building the Decision Tree
    from sklearn.tree import DecisionTreeClassifier
    colDataTree = DecisionTreeClassifier(criterion="entropy", max_depth = 7)
    colDataTree
    colDataTree.fit(X_train,y_train)
    predTree = colDataTree.predict(X_test)
    print("DecisionTrees's Accuracy: ", metrics.accuracy_score(y_test, predTree))
    
    DecisionTrees's Accuracy: 0.5664365709048206
    # Train Model & Predict
    DTyhat = colDataTree.predict(X_test)
    print (predTree [0:5])
    print (y_test [0:5])
    
    [2 2 1 1 2]
    [2 2 1 1 1]

  • ロジスティック回帰
  • # Building the LR Model
    from sklearn.linear_model import LogisticRegression
    from sklearn.metrics import confusion_matrix
    LR = LogisticRegression(C=6, solver='liblinear').fit(X_train,y_train)
    
    # Train Model & Predicr
    LRyhat = LR.predict(X_test)
    
    yhat_prob = LR.predict_proba(X_test)
    

    F .概要📚


    以下は評価段階で報告されたスコアのまとめです.
    アルゴリズム
    ジャカード
    F 1スコア
    損失
    KNN
    0.56
    0.55
    Na
    決定木
    0.56
    0.54
    Na
    ロジスティック回帰
    0.52
    0.51
    0.68

    ディスカッション☕


    このノートブックの初めに、私たちはタイプ「オブジェクト」のカテゴリーデータを持っていました.これはアルゴリズムを通してフィードできるデータ型ではないので、ラベル符号化を使用してINT 8型の新しいクラスを作成しました.数値データ型
    その問題を解決した後、我々は別の不均衡データを提示された.前述したように、クラス1はクラス2より3倍近い.この解決策は、SkLearnのResampleツールで大多数のクラスをダウンサンプリングしました.私たちは、58188値と正確にマイノリティークラスと一致するためにサンプルダウンしました.
    一旦分析して、データを掃除したならば、それはそれから3つのMLモデルによって供給されました;K最近傍,決定木とロジスティック回帰最初の2つはこのプロジェクトに理想的ですが、ロジスティック回帰はそのバイナリの性質のために最も意味をなしました.
    我々のモデルの精度をテストするために使用される評価メトリクスは、ロジスティック回帰のためのJaccardインデックス、F - 1スコアとログ損失でした.別のkを選択すると、最大深さと超メーターのC値は最良の可能性に我々の精度を向上させるのに役立ちました.

    結論🎯


    特定のクラスを指す気象条件からの歴史的なデータに基づいて、我々は特定の気象条件が旅行がプロパティ損害(クラス1)または怪我(クラス2)に終わるかどうかに少しの影響を及ぼすと結論することができます.
    読んでくれてありがとう!畝