机器学习实验三

该文展示了如何使用Python的sklearn库在鸢尾花数据集上实现CART决策树算法,包括数据预处理、训练集和测试集划分以及模型训练。此外,文中还提到了ID3和C4.5算法,并讨论了模型的剪枝操作,特别是预剪枝方法以提高泛化性能。
摘要由CSDN通过智能技术生成

继续对莺尾花数据集进行操作

任务一:

编程实现2种决策树算法:
• ID3算法(采用的什么方法?)
• CART算法(采用的什么方法?)
• C4.5 启发式增益率
• 以上方法任选一种即可!!!

任务二:

实验流程:
• 导入数据
• 将数据分为训练集与测试集
• 采用训练集建立一个决策树
• 采用测试集验证树的泛化性能
后续操作:
• 剪枝操作–预剪枝或后剪枝均可
• 数据需要预留一部分验证数据

对实验流程进行整理优化:

  1. 读取数据集
  2. 对数据集进行划分:训练集,验证集,测试集
  3. 创建决策树模型
  4. 训练模型
  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:预测结果存储,可用于后续的性能评估和比较。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值