实验要求
实验过程
1.对该题目的理解
本项目是分别用ID3算法和CART算法进行决策树模型的配置,训练,然后对“双十一”期间顾客是否买服装的数据集进行分析与预测。其中顾客购买服装数据集包含:review(商品评价变量)、discount(打折程度)、needed(是否必需)、shipping(是否包邮)、buy(是否购买)。
2.实现过程
(1)导入包。
代码如下:
import pandas as pd
import numpy as np
from sklearn import tree
from sklearn import metrics
from sklearn.model_selection import train_test_split
(2)读取顾客购买服装的数据集(数据集路径:data/data76088/3_buy.csv),探索数据。
代码如下:
data = pd.read_csv("data/data76088/3_buy.csv")
print("data:",data)
(3)划分数据集,测试集。
代码如下:
x, y = np.split(data, indices_or_sections=(4,), axis=1)
x_train, x_test, y_train, y_test = train_test_split(
x, y, test_size=0.30)
print("x_train.shape:", x_train.shape)
print("y_train.shape:", y_train.shape)
print("x_test.shape:", x_test.shape)
print("y_test.shape:", y_test.shape)
(4)分别用ID3算法和CART算法进行决策树模型的配置、模型的训练、模型的预测、模型的评估。
代码如下:
clf_CART = tree.DecisionTreeClassifier(
criterion='gini', max_depth=4) # CART基尼系数
clf_ID3 = tree.DecisionTreeClassifier(
criterion='entropy', max_depth=4) # ID3信息熵
# ### 训练模型
clf_CART.fit(x_train, y_train) # 模型训练
clf_ID3.fit(x_train, y_train) # 模型训练
# ### 模型预测
predictions_CART = clf_CART.predict(x_test) # 模型测试
print("predictions_CART", predictions_CART)
predictions_ID3 = clf_ID3.predict(x_test) # 模型测试
print("predictions_ID3", predictions_ID3)
# ### 模型评估
print('CART的准确率: %s' % accuracy_score(y_test, predictions_CART))
print('ID3的准确率: %s' % accuracy_score(y_test, predictions_ID3))
3.遇到的问题及解决办法
(1)问题:ID3算法和CART算法分别有什么特点
ID3 算法计算的是信息增益,信息增益指的就是划分可以带来纯度的提高,信息熵的下降。它可以生成二叉树或多叉树。而 CART 只支持二叉树。同时 CART 决策树比较特殊,既可以作分类树,又可以作回归树。
实验结果
1.读取顾客购买服装的数据集(数据集路径:data/data76088/3_buy.csv),探索数据。
2.划分数据集,测试集
3.分别用ID3算法和CART算法进行决策树模型的配置、模型的训练、模型的预测、模型的评估
实验总结
1.通过此实验了解了决策树的典型算法有ID3和CART,了解了ID3和CART模型的配置,模型训练,预测和评估的方法,明白了其区别和各自的特点。