根据一个泰坦尼克号人员信息的csv文件预测人员生还
时间: 2024-05-04 17:21:01 浏览: 11
这是一个二分类问题,我们可以使用机器学习算法进行预测。以下是一种可能的解决方案:
1. 加载数据集,分别将训练集和测试集读入程序中。
2. 对数据进行预处理,包括数据清洗、缺失值处理、特征工程等。
3. 选择适当的机器学习算法进行训练和测试,比如逻辑回归、决策树、随机森林等。
4. 对模型进行评估,计算准确率、召回率、F1-score等指标。
5. 使用训练好的模型进行预测,得到测试集中每个人员是否生还的预测结果。
具体实现方式可以参考下面的Python代码示例:
```python
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, recall_score, f1_score
# 加载数据集
data = pd.read_csv("titanic.csv")
# 数据预处理
# 清洗数据,去除无关特征和重复数据
data = data.drop(columns=["PassengerId", "Name", "Ticket", "Cabin"])
data = data.drop_duplicates()
# 处理缺失值
data = data.fillna({"Age": data.Age.median(), "Embarked": data.Embarked.mode()[0]})
# 特征工程,将分类变量转换为数值型变量
data["Sex"] = (data["Sex"] == "male").astype(int)
data = pd.get_dummies(data, columns=["Embarked"])
# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(data.drop(columns=["Survived"]), data["Survived"], test_size=0.2)
# 训练模型
model = LogisticRegression()
model.fit(X_train, y_train)
# 评估模型
y_pred = model.predict(X_test)
print("Accuracy:", accuracy_score(y_test, y_pred))
print("Recall:", recall_score(y_test, y_pred))
print("F1 score:", f1_score(y_test, y_pred))
# 预测结果
test_data = pd.read_csv("test.csv")
test_data = test_data.drop(columns=["PassengerId", "Name", "Ticket", "Cabin"])
test_data = test_data.fillna({"Age": test_data.Age.median(), "Fare": test_data.Fare.median()})
test_data["Sex"] = (test_data["Sex"] == "male").astype(int)
test_data = pd.get_dummies(test_data, columns=["Embarked"])
predictions = model.predict(test_data)
print(predictions)
```
在上面的代码中,我们使用逻辑回归算法进行训练和测试,并对模型进行了评估。最后,我们使用训练好的模型对测试集中的数据进行了预测。