泰坦尼克号幸存者预测数据集
时间: 2023-11-08 10:05:21 浏览: 240
泰坦尼克号幸存者预测数据集是一个经典的机器学习数据集,包含了泰坦尼克号上的乘客信息以及他们是否在船沉没后幸存的标签。数据集中包含了乘客的个人信息,如性别、年龄、船票信息等,以及一些辅助特征,如年龄是否缺失、所在船舱是否缺失等。数据集的目标是根据这些特征预测乘客是否幸存。这个数据集可以用来进行二分类问题的机器学习实验,也是学习数据清洗和特征工程的好素材。
相关问题
泰坦尼克号幸存者预测 贝叶斯
### 使用贝叶斯方法进行泰坦尼克号幸存者预测
#### 加载并预处理数据
为了使用贝叶斯分类器来进行泰坦尼克号幸存者的预测,首先需要准备数据。这包括加载数据集、清理缺失值以及转换类别型变量。
```python
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score
# 假设已经下载了 Titanic 数据集到本地文件 'titanic.csv'
data = pd.read_csv('titanic.csv')
# 清洗数据:删除无关列和含有大量缺失值的列;填充剩余少量缺失值
data.drop(['Cabin', 'Ticket'], axis=1, inplace=True)
data['Age'].fillna(data['Age'].median(), inplace=True)
# 转换性别和其他字符串类型的特征为数值形式
label_encoders = {}
for column in ['Sex', 'Embarked']:
le = LabelEncoder()
data[column] = le.fit_transform(data[column].astype(str))
label_encoders[column] = le
X = data.drop('Survived', axis=1).values
Y = data['Survived'].values
# 划分训练集与测试集
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=42)
```
#### 构建并训练模型
接下来构建高斯朴素贝叶斯分类器,并利用上述划分好的训练集对其进行拟合:
```python
gaussian = GaussianNB()
gaussian.fit(X_train, Y_train)
```
#### 预测及性能评估
完成模型训练之后就可以基于测试集做出预测,并计算准确率等指标来衡量模型的表现:
```python
Y_pred = gaussian.predict(X_test)
acc_gaussian = round(accuracy_score(Y_test, Y_pred) * 100, 2)
print(f'Accuracy of Naive Bayes Classifier on testing set: {acc_gaussian}%')
```
此过程展示了如何应用朴素贝叶斯分类器于泰坦尼克号生存状况预测任务上[^3]。值得注意的是,在实际操作过程中还需要进一步探索更多特征工程技巧以提升最终效果。
泰坦尼克号幸存者预测贝叶斯
### 使用贝叶斯方法进行泰坦尼克号幸存者预测
#### 加载并预处理数据
为了使用贝叶斯分类器来进行泰坦尼克号幸存者的预测,首先需要准备数据。这包括加载数据集、查看其结构以及清理缺失值等操作。
```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]。
阅读全文