利用加州圣马特奥市数据(crash_data第二次大作业.xlsx),构建交通小区是否发生过非PDO事故的Logistic 回归模型
时间: 2024-05-12 20:18:43 浏览: 180
首先,我们需要进行数据预处理,包括数据清洗、缺失值处理、异常值处理等。在数据清洗后,我们可以对数据集进行探索性数据分析(EDA),以了解数据的特征和分布情况,为建模做准备。
接下来,我们可以使用Logistic回归模型来预测交通小区是否发生过非PDO事故。Logistic回归是一种二分类模型,可以用于预测一个二元变量的概率。在这个问题中,我们可以将交通小区是否发生过非PDO事故作为二元变量,将其他特征作为自变量,建立Logistic回归模型。
在建立Logistic回归模型之前,我们需要首先将数据集分为训练集和测试集。然后,我们可以使用Python中的Scikit-learn库来建立Logistic回归模型。具体步骤如下:
1. 导入必要的库和数据集:
```python
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
data = pd.read_excel('crash_data第二次大作业.xlsx')
```
2. 数据预处理:
```python
# 清洗数据
data.drop_duplicates(inplace=True)
# 处理缺失值
data.dropna(inplace=True)
# 处理异常值
data = data[data['TotalInjuries'] < data['TotalPersons']]
data = data[data['TotalDeaths'] < data['TotalPersons']]
```
3. EDA:
```python
# 绘制散点图
pd.plotting.scatter_matrix(data[['TotalInjuries', 'TotalDeaths', 'TotalPersons', 'NonPDO']], alpha=0.2, figsize=(10,10))
```
4. 划分数据集:
```python
X = data[['TotalInjuries', 'TotalDeaths', 'TotalPersons']]
y = data['NonPDO']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
```
5. 建立Logistic回归模型:
```python
model = LogisticRegression()
model.fit(X_train, y_train)
```
6. 预测结果:
```python
y_pred = model.predict(X_test)
```
7. 评估模型表现:
```python
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
print('Accuracy:', accuracy_score(y_test, y_pred))
print('Confusion Matrix:', confusion_matrix(y_test, y_pred))
print('Classification Report:', classification_report(y_test, y_pred))
```
通过以上步骤,我们可以建立一个Logistic回归模型,用于预测交通小区是否发生过非PDO事故。通过评估模型表现,我们可以了解模型的准确性、召回率和精确度等指标,以进一步优化模型。
阅读全文