泰坦尼克号生存预测py贝叶斯
时间: 2025-02-02 08:37:00 浏览: 33
### 使用Python和贝叶斯方法实现泰坦尼克号生存预测
#### 导入必要的库
为了完成此任务,需要导入一些常用的Python库来处理数据并构建朴素贝叶斯分类器。
```python
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder, StandardScaler
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
```
#### 加载与探索数据集
加载泰坦尼克号的数据文件,并查看前几行以了解其结构[^1]。
```python
data = pd.read_csv('titanic.csv')
print(data.head())
```
#### 数据清洗与预处理
对缺失值进行填充或删除操作;对于类别型变量采用编码转换成数值形式以便于后续建模过程。
```python
# 填充年龄列中的NaN值为平均数
data['Age'].fillna((data['Age'].mean()), inplace=True)
# 对Sex和Embarked两列做标签编码
le_sex = LabelEncoder()
data["Sex"] = le_sex.fit_transform(data["Sex"])
le_embarked = LabelEncoder()
data["Embarked"].fillna("S", inplace=True) # 替换掉空缺登船港口,默认设为'S'
data["Embarked"] = le_embarked.fit_transform(data["Embarked"])
```
#### 特征选择
挑选有助于提高模型性能的关键属性作为输入特征向量X,而目标变量y则是乘客是否存活的信息。
```python
features = ["Pclass", "Sex", "Age", "Fare", "Embarked"]
X = data[features]
y = data["Survived"]
scaler = StandardScaler().fit(X)
X_scaled = scaler.transform(X)
```
#### 划分训练集测试集
将原始样本随机分为两个部分——一部分用于训练模型参数,另一部分用来验证最终效果如何。
```python
X_train, X_test, y_train, y_test = train_test_split(
X_scaled, y, test_size=0.25, random_state=42)
```
#### 构建并训练模型
创建高斯分布假设下的朴素贝叶斯分类器实例对象gnb,并利用已知标记的学习样本来调整内部权重系数。
```python
gnb = GaussianNB()
model = gnb.fit(X_train, y_train)
```
#### 预测及评价
运用经过调优后的估计函数去推测未知类别的新观测点属于哪一类,最后统计正确率和其他度量标准来进行综合评判。
```python
predictions = model.predict(X_test)
accuracy = accuracy_score(y_test, predictions)
confusion_mat = confusion_matrix(y_test, predictions)
report = classification_report(y_test, predictions)
print(f'Accuracy: {accuracy:.3f}')
print("\nConfusion Matrix:")
print(confusion_mat)
print("\nClassification Report:\n", report)
```
阅读全文
相关推荐













