用决策树模型预测泰坦尼克生还判断?(训练数据:train.csv、测试数据: test.csv),一个旅客是否能够逃生与他的 Pclass、Name、Sex、Age、SibSp、 Parch、Ticket、Fare、Cabin、Embarked 等均有一定联系,能否找到这些特征和 他们能否逃生之间的规律,选择对分类结果有关键作用的特征。构建决策树模型, 并对决策树进行可视化,用 graphviz 将决策树呈现出来。
时间: 2023-07-04 16:16:35 浏览: 137
dec-tree-random-forest-titanic:用决策树和随机森林模型预测泰坦尼克号乘客的存活率
好的,针对你的问题,我可以为你提供如下思路:
1. 读取训练数据和测试数据。
2. 对数据进行预处理,包括缺失值填充、特征编码等。
3. 划分训练集和验证集。
4. 构建决策树模型,并使用训练集进行训练。
5. 对模型进行评估,包括准确率、精确率、召回率等指标。
6. 使用测试集进行预测,并生成提交文件。
7. 使用 graphviz 库对决策树进行可视化。
以下是 Python 代码示例:
```python
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score, precision_score, recall_score
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
import graphviz
# 读取数据
train_df = pd.read_csv('train.csv')
test_df = pd.read_csv('test.csv')
# 预处理数据
train_df.fillna(method='ffill', inplace=True) # 使用前向填充方法填充缺失值
test_df.fillna(method='ffill', inplace=True)
le = LabelEncoder()
train_df['Sex'] = le.fit_transform(train_df['Sex'])
test_df['Sex'] = le.transform(test_df['Sex'])
train_df = pd.get_dummies(train_df, columns=['Embarked'])
test_df = pd.get_dummies(test_df, columns=['Embarked'])
# 划分训练集和验证集
X_train, X_val, y_train, y_val = train_test_split(train_df.drop(['Survived'], axis=1), train_df['Survived'], test_size=0.2, random_state=42)
# 构建决策树模型
clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)
# 评估模型
y_pred = clf.predict(X_val)
print('Accuracy:', accuracy_score(y_val, y_pred))
print('Precision:', precision_score(y_val, y_pred))
print('Recall:', recall_score(y_val, y_pred))
# 使用测试集进行预测
test_pred = clf.predict(test_df)
# 生成提交文件
submission_df = pd.DataFrame({'PassengerId': test_df['PassengerId'], 'Survived': test_pred})
submission_df.to_csv('submission.csv', index=False)
# 可视化决策树
dot_data = tree.export_graphviz(clf, out_file=None, feature_names=train_df.drop(['Survived'], axis=1).columns, class_names=['0', '1'], filled=True, rounded=True, special_characters=True)
graph = graphviz.Source(dot_data)
graph
```
这段代码会将决策树模型可视化并输出到控制台,你可以将其复制到 graphviz 的网站上,生成一张可视化的决策树。
阅读全文