泰坦尼克号幸存者预测贝叶斯
时间: 2024-12-28 21:19:56 浏览: 13
### 使用贝叶斯方法进行泰坦尼克号幸存者预测
#### 加载并预处理数据
为了使用贝叶斯分类器来进行泰坦尼克号幸存者的预测,首先需要准备数据。这包括加载数据集、查看其结构以及清理缺失值等操作。
```python
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score
# 假设已经下载了 Titanic 数据集到本地文件 'titanic.csv'
data = pd.read_csv('titanic.csv')
# 查看前几行记录以理解数据格式
print(data.head())
# 描述数据的基本信息
print(data.info())
```
对于离散型变量如性别(Sex)、登船港口(Embarked),可以将其转换成数值形式;而对于连续型变量比如年龄(Age)和票价(Fare),则应考虑填补缺失值或删除含有缺失值得样本[^1]。
#### 特征工程与选择
接着要对原始特征做一些变换以便更好地适应模型需求:
- 将类别属性编码为整数表示;
- 对于存在大量空缺的情况下的列可以选择填充均值或其他策略;
- 创建新的衍生特性可能会提高性能。
```python
# 处理缺失值
data['Age'].fillna(data['Age'].mean(), inplace=True)
data.dropna(subset=['Embarked'], inplace=True)
# 转换字符串类型的字段至数字类型
data['Sex'] = data['Sex'].map({'female': 0, 'male': 1}).astype(int)
data = pd.get_dummies(data, columns=["Embarked"], drop_first=True)
# 提取有用的特征用于训练
features = ['Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Fare', 'Embarked_Q', 'Embarked_S']
X = data[features]
y = data['Survived']
# 划分测试集合验证集
X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42)
# 标准化特征向量
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_val_scaled = scaler.transform(X_val)
```
#### 构建并训练朴素贝叶斯分类器
现在有了干净整齐的数据之后就可以构建我们的第一个机器学习模型——高斯朴素贝叶斯分类器,并对其进行拟合。
```python
gaussian = GaussianNB()
# 训练模型
gaussian.fit(X_train_scaled, y_train)
# 预测结果
Y_pred = gaussian.predict(X_val_scaled)
# 准确率评估
acc_gaussian = round(accuracy_score(y_val, Y_pred) * 100, 2)
print(f'Accuracy of Naive Bayes Classifier on validation set: {acc_gaussian}%')
```
此过程展示了如何利用Python中的`pandas`, `sklearn`库快速实现基于贝叶斯理论的生存状态预测任务。虽然在这个例子中所得到的结果并不是最优解,但它提供了一个很好的起点去探索更复杂的算法和技术来改进最终的表现效果[^3]。
阅读全文