继续对莺尾花数据集进行操作
任务一:
编程实现2种决策树算法:
• ID3算法(采用的什么方法?)
• CART算法(采用的什么方法?)
• C4.5 启发式增益率
• 以上方法任选一种即可!!!
任务二:
实验流程:
• 导入数据
• 将数据分为训练集与测试集
• 采用训练集建立一个决策树
• 采用测试集验证树的泛化性能
后续操作:
• 剪枝操作–预剪枝或后剪枝均可
• 数据需要预留一部分验证数据
对实验流程进行整理优化:
- 读取数据集
- 对数据集进行划分:训练集,验证集,测试集
- 创建决策树模型
- 训练模型
- 计算准确性
import pandas as pd
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
from sklearn.tree import DecisionTreeClassifier
data = pd.read_csv('iris.data', header=None, names=['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'class'])
print(data)
def liuchu_CART():
selected_features = data.drop('class',axis=1)
target = data['class']
label_encoder = LabelEncoder()
target = label_encoder.fit_transform(target)
# 分割训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(selected_features, target, test_size=0.2, random_state=42)
model = DecisionTreeClassifier() # CART算法,参考:http://t.csdn.cn/7lZNK,默认criterion=gini (CART算法),entropy(ID3算法)
model.fit(X_train,y_train)
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test,y_pred)
print("CART算法模型准确率:",accuracy)
def Total_project_CART():
# 读取数据集
selected_features = data.drop('class',axis=1)
target = data['class']
label_encoder = LabelEncoder()
target = label_encoder.fit_transform(target)
# 划分训练集、验证集和测试集
X_train, X_val_test, y_train, y_val_test = train_test_split(selected_features, target, test_size=0.2, random_state=42)
X_val, X_test, y_val, y_test = train_test_split(X_val_test, y_val_test, test_size=0.5, random_state=42)
# 创建决策树模型(使用预剪枝)
model = DecisionTreeClassifier(max_depth=7)#max_depth:最大深度
# 在训练集上训练决策树模型
model.fit(X_train, y_train)
# 在验证集上进行预测
y_pred_val = model.predict(X_val)
# 在测试集上进行预测
y_pred_test = model.predict(X_test)
# 计算模型在验证集和测试集上的准确率
accuracy_val = accuracy_score(y_val, y_pred_val)
accuracy_test = accuracy_score(y_test, y_pred_test)
print("模型在验证集上的准确率:", accuracy_val)
print("模型在测试集上的准确率:", accuracy_test)
任务一解释:
model = DecisionTreeClassifier() # CART算法,参考:http://t.csdn.cn/7lZNK,默认criterion=gini (CART算法),entropy(ID3算法)
任务二解释:
第一个函数是实验流程(未增加剪枝操作)
第二个函数是全部操作(整理后)
在主函数调用即可。
对第二个函数内各变量解释:
X_train:训练集的特征数据。
y_train:训练集的目标变量数据。
X_val_test:用于划分验证集和测试集的中间数据,其中包含剩余的样本。
y_val_test:用于划分验证集和测试集的中间数据,其中包含剩余的样本的目标变量数据。
X_val:验证集的特征数据,从X_val_test中划分而来。
y_val:验证集的目标变量数据,从y_val_test中划分而来。
X_test:测试集的特征数据,从X_val_test中划分而来。
y_test:测试集的目标变量数据,从y_val_test中划分而来。
y_pred_val和y_pred_test:预测结果存储,可用于后续的性能评估和比较。