基于相亲实验数据,使用sklearn.tree包中决策树算法来绘制决策树,要求如下: 1)criterion参数指定是基尼指数作为样本集分裂的依据绘制决策树,预测验证集数据val_sample = [[24, 178, 2, 17000],[27, 176, 0, 25000],[27, 176, 0, 10000],[32, 170, 2, 42000]]对应的相亲情况; 2)criterion参数指定是信息增益指数作为样本集分裂的依据绘制决策树,预测验证集数据val_sample = [[24, 178, 2, 17000],[27, 176, 0, 25000],[27, 176, 0, 10000],[32, 170, 2, 42000]]对应的相亲情况;
时间: 2023-07-02 16:09:55 浏览: 160
首先,需要将数据集拆分为训练集和验证集。这里假设数据集已经被拆分,并且已经完成了特征工程。
接下来,导入所需的库并加载数据集:
```python
import pandas as pd
from sklearn.tree import DecisionTreeClassifier, export_graphviz
from sklearn.model_selection import train_test_split
# 加载数据集
data = pd.read_csv('dating.csv')
# 特征工程
# ...
# 将数据集拆分为训练集和验证集
train_data, val_data = train_test_split(data, test_size=0.2, random_state=42)
```
然后,使用基尼指数或信息增益指数作为样本集分裂的依据,分别构建决策树模型,并使用验证集数据进行预测。
1. 使用基尼指数作为样本集分裂的依据
```python
# 构建决策树模型,使用基尼指数作为样本集分裂的依据
clf_gini = DecisionTreeClassifier(criterion='gini')
# 训练模型
clf_gini.fit(train_data.iloc[:, :-1], train_data.iloc[:, -1])
# 预测验证集数据
val_sample = [[24, 178, 2, 17000], [27, 176, 0, 25000], [27, 176, 0, 10000], [32, 170, 2, 42000]]
val_pred_gini = clf_gini.predict(val_sample)
print('使用基尼指数作为样本集分裂依据的预测结果:', val_pred_gini)
```
2. 使用信息增益指数作为样本集分裂的依据
```python
# 构建决策树模型,使用信息增益指数作为样本集分裂的依据
clf_entropy = DecisionTreeClassifier(criterion='entropy')
# 训练模型
clf_entropy.fit(train_data.iloc[:, :-1], train_data.iloc[:, -1])
# 预测验证集数据
val_pred_entropy = clf_entropy.predict(val_sample)
print('使用信息增益指数作为样本集分裂依据的预测结果:', val_pred_entropy)
```
最后,可以使用export_graphviz函数将决策树可视化,以便更好地理解决策树的分裂过程:
```python
# 将决策树可视化
export_graphviz(clf_gini, out_file='tree_gini.dot', feature_names=['age', 'height', 'income', 'education'], class_names=['no', 'yes'], filled=True)
export_graphviz(clf_entropy, out_file='tree_entropy.dot', feature_names=['age', 'height', 'income', 'education'], class_names=['no', 'yes'], filled=True)
```
使用Graphviz软件打开.dot文件即可查看决策树可视化结果。
阅读全文