Рубрики
Без рубрики

Анализ отчета о тяжести автомобильной аварии с IBM Watson

А. Введение 🔥 Стремясь уменьшить частоту столкновений автомобилей в сообществе, … Tagged DataScience, Python, новички.

Стремясь уменьшить частоту столкновений автомобилей в сообществе, должен быть разработан алгоритм, чтобы предсказать тяжесть аварии, учитывая текущую погоду, условия дороги и видимости. Когда условия плохие, эта модель будет предупреждать драйверов, чтобы напомнить им о том, чтобы они были более осторожными.

Наша предиктор или целевая переменная будет SearityCode Потому что он используется измеряйте серьезность аварии от 0 до 5 в рамках набора данных. Атрибуты, используемые для взвешивания тяжести аварии, являются Погода , Roadcond и Светконд .

Коды тяжести следующие:

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!

Теперь давайте проверим типы данных новых столбцов в наших данных. Двигаясь вперед, мы будем использовать только новые столбцы для нашего анализа.

Наша целевая переменная SearityCode только 42% сбалансировано. Фактически, код серьезности в классе 1 почти в три раза больше класса 2.

Мы можем исправить это, переполняя класс большинства.

Идеально сбалансирован (как все должно быть!)

Наши данные теперь готовы к моделям машинного обучения.

Мы будем использовать следующие модели:

  • K-nearest сосед (KNN) KNN поможет нам предсказать код серьезности результата, обнаружив наиболее похожую точку данных на расстоянии K.

  • Дерево решений Модель дерева решений дает нам макет всех возможных результатов, чтобы мы могли полностью проанализировать последствия решения. В контексте, дерево решений наблюдает за всеми возможными результатами различных погодных условий.

  • Логистическая регрессия Поскольку наш набор данных дает нам только два результата кода серьезности, наша модель будет предсказать только один из этих двух классов. Это делает наши данные двоичными, которые идеально подходят для логистической регрессии.

Давайте начнем!

Инициализация 👑

  • Определите X и Y
  • Нормализовать набор данных
  • Транс-тест расколоть

Моделирование 📊

  • К-ближайший сосед Поиск лучшего значения 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]

массив ([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))

Точность решений: 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)

Вот краткое изложение баллов, представленных на этапе оценки:

0.56 НА 0.55 КНС
0.56 НА 0.54 Древо решений
0.52 0.68 0.51 Логистическая регрессия

В начале этой записной книжки у нас были категориальные данные, которые были типа «объект». Это не тот тип данных, который мы могли бы питать с помощью алгоритма, поэтому кодирование метки использовалось для создания новых классов, которые были типа Int8; Численный тип данных.

После решения этой проблемы нам были представлены другие несбалансированные данные. Как упоминалось ранее, класс 1 был почти в три раза больше, чем класс 2. Решением этого было снижение класса большинства с инструментом Resample Sklearn. Мы понижались, чтобы соответствовать классу меньшинства с 58188 значениями каждый.

После того, как мы проанализировали и очистили данные, они были проведены через три модели ML; К-ближайший сосед, дерево решений и логистическая регрессия. Хотя первые два идеально подходят для этого проекта, логистическая регрессия наиболее имела смысл из -за его бинарной природы.

Метрики оценки, используемые для тестирования точности наших моделей, были индекс Jaccard, оценка F-1 и логарифмическая потери для логистической регрессии. Выбор различных значений k, максимальной глубины и гиперметра C помог повысить нашу точность, чтобы быть наилучшим.

Основываясь на исторических данных из погодных условий, указывающих на определенные классы, мы можем сделать вывод, что конкретные погодные условия имеют некоторое влияние на то, может ли путешествие привести к повреждению имущества (класс 1) или травмам (класс 2).

Спасибо за чтение! 😊

Оригинал: “https://dev.to/rohanwww/car-accident-severity-report-analysis-with-ibm-watson-1noc”