新手求助:如何完成决策树分类器的训练与测试?
完整决策树分类训练测试步骤
针对你的150条两列CSV数据,按100条训练、50条测试的需求,完整操作步骤如下:
1. 导入所需工具库
除了决策树分类器,还需要加载数据的pandas,以及评估指标工具:
import pandas as pd from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import classification_report, accuracy_score
2. 加载CSV数据
用pandas读取你的CSV文件,假设文件名为data.csv:
# 读取CSV文件 df = pd.read_csv("data.csv") # 假设第一列是特征(输入),第二列是分类标签(输出) # 可根据实际列名调整,比如用列名提取:x = df["特征列名"], y = df["标签列名"] x = df.iloc[:, 0].values.reshape(-1, 1) # 单特征需转成二维数组,否则sklearn会报错 y = df.iloc[:, 1].values
3. 拆分训练集与测试集
按你要求的100/50比例拆分,两种方式可选:
方式一:手动固定拆分(前100条训练,后50条测试)
train_x = x[:100] train_y = y[:100] test_x = x[100:] test_y = y[100:]
方式二:随机拆分但固定数量(保证每次拆分结果一致)
如果需要随机选取样本且保证标签分布均匀,可使用train_test_split:
from sklearn.model_selection import train_test_split train_x, test_x, train_y, test_y = train_test_split( x, y, train_size=100, test_size=50, random_state=17, stratify=y ) # stratify=y 可选,作用是让训练/测试集的标签分布和原数据一致
4. 训练与评估模型
补全你写的代码,完整执行流程如下:
# 初始化决策树分类器 classifier = DecisionTreeClassifier(random_state=17) # 用训练数据训练模型 classifier.fit(train_x, train_y) # 对测试集进行预测 pred_y = classifier.predict(test_x) # 输出分类评估报告(包含精确率、召回率等指标) print(classification_report(test_y, pred_y)) # 输出准确率 print("模型准确率:", accuracy_score(test_y, pred_y))
关键注意点
- 单特征必须转成二维数组(用
reshape(-1,1)),否则sklearn会抛出维度不匹配的错误 - 如果CSV文件有表头,建议直接用列名提取特征和标签,避免索引混淆
random_state固定数值是为了保证每次运行的拆分和训练结果一致,方便调试
内容的提问来源于stack exchange,提问作者fera fani
相关产品推荐
相关产品推荐

