================================================================================
第1部分: 数据导入与统计分析
【数据集基本信息】
样本数量: 8124
特征数量: 22
总列数: 23
数据类型:
class object
cap-shape object
cap-surface object
cap-color object
bruises object
odor object
gill-attachment object
gill-spacing object
gill-size object
gill-color object
stalk-shape object
stalk-root object
stalk-surface-above-ring object
stalk-surface-below-ring object
stalk-color-above-ring object
stalk-color-below-ring object
veil-type object
veil-color object
ring-number object
ring-type object
spore-print-color object
population object
habitat object
dtype: object
【缺失值统计】
缺失值数量 缺失值占比(%)
stalk-root 2480 30.53
stalk-root列包含'?'的数量: 2480
占比: 30.53%
【类别分布】
可食用 (e): 4208 (51.80%)
有毒 (p): 3916 (48.20%)
【特征取值分布】
class: 2个唯一值
cap-shape: 6个唯一值
cap-surface: 4个唯一值
cap-color: 10个唯一值
bruises: 2个唯一值
odor: 9个唯一值
gill-attachment: 2个唯一值
gill-spacing: 2个唯一值
gill-size: 2个唯一值
gill-color: 12个唯一值
stalk-shape: 2个唯一值
stalk-root: 5个唯一值
stalk-surface-above-ring: 4个唯一值
stalk-surface-below-ring: 4个唯一值
stalk-color-above-ring: 9个唯一值
stalk-color-below-ring: 9个唯一值
veil-type: 1个唯一值
veil-color: 4个唯一值
ring-number: 3个唯一值
ring-type: 5个唯一值
spore-print-color: 9个唯一值
population: 6个唯一值
habitat: 7个唯一值
【前6行数据展示】
class cap-shape cap-surface cap-color ... ring-type spore-print-color population habitat
0 p x s n ... p k s u
1 e x s y ... p n n g
2 e b s w ... p n n m
3 p x y w ... p k s u
4 e x s g ... e n a g
5 e x y y ... p k n g
[6 rows x 23 columns]
================================================================================
第2部分: 数据分析与处理
【缺失值处理】
方案选择: 方案C - 将'?'作为独立类别保留
理由: 缺失本身可能是有意义的特征,避免信息损失
处理前包含缺失值的3条样本(stalk-root列):
class stalk-root odor cap-color
3984 e ? n b
4023 p ? y e
4076 e ? n u
说明: 这些样本的stalk-root值为'?',将保留为独立类别
【特征数值化处理】
编码策略: 使用LabelEncoder进行标签编码
理由: 适用于树模型,维度低,训练速度快
【数据编码前后对比】
原始数据(前3条样本):
class cap-shape cap-surface cap-color bruises odor gill-attachment gill-spacing gill-size gill-color stalk-shape stalk-root stalk-surface-above-ring stalk-surface-below-ring stalk-color-above-ring stalk-color-below-ring veil-type veil-color ring-number ring-type spore-print-color population habitat
0 p x s n t p f c n k e e s s
w w p w o p
k s u
1 e x s y t a f c b k e c s s
w w p w o p
n n g
2 e b s w t l f c b n e c s s
w w p w o p
n n m
编码后数据(前3条样本):
class cap-shape cap-surface cap-color bruises odor gill-attachment gill-spacing gill-size gill-color stalk-shape stalk-root stalk-surface-above-ring stalk-surface-below-ring stalk-color-above-ring stalk-color-below-ring veil-type veil-color ring-number ring-type spore-print-color population habitat
0 1 5 2 4 1 6 1 0 1 4 0 3 2
2 7 7 0 2 1 4 2 3 5
1 0 5 2 9 1 0 1 0 0 4 0 2 2
2 7 7 0 2 1 4 3 2 1
2 0 0 2 8 1 3 1 0 0 5 0 2 2
2 7 7 0 2 1 4 3 2 3
【部分特征编码映射关系】
class:
e -> 0
p -> 1
odor:
a -> 0
c -> 1
f -> 2
l -> 3
m -> 4
n -> 5
p -> 6
s -> 7
y -> 8
cap-color:
b -> 0
c -> 1
e -> 2
g -> 3
n -> 4
p -> 5
r -> 6
u -> 7
w -> 8
y -> 9
stalk-root:
? -> 0
b -> 1
c -> 2
e -> 3
r -> 4
================================================================================
第3部分: 数据可视化处理
【生成特征关系矩阵图】
由于特征较多(22个),选择最重要的若干特征进行可视化
特征关系矩阵图已保存为: feature_pairplot.png
【可视化说明】
- 对角线: 显示各特征的分布直方图
- 非对角线: 显示特征间的散点图关系
- 颜色区分: 红色=类别0(可食用), 蓝色=类别1(有毒)
- 观察: odor和spore-print-color与类别有明显的关联性
================================================================================
第4部分: 数据预处理与模型训练
【数据集划分】
训练集大小: 6499 (80.00%)
测试集大小: 1625 (20.00%)
训练集类别分布: {0: 3366, 1: 3133}
测试集类别分布: {0: 842, 1: 783}
【使用决策树模型训练】
选择理由: 决策树算法准确率高,可解释性强,训练速度快
训练 Decision Tree...
训练集准确率: 100.00%
测试集准确率: 100.00%
================================================================================
第5部分: 十折交叉验证与模型评估
【十折交叉验证】
使用分层K折交叉验证,保持每折类别比例一致
10折交叉验证结果 (Decision Tree):
每折准确率: ['100.00%', '100.00%', '100.00%', '100.00%', '100.00%', '100.00%', '100.00%', '100.00%', '100.00%', '100.00%']
平均准确率: 100.00%
标准差: 0.00%
【超参数优化】
对 Decision Tree 进行网格搜索优化...
最优参数: {'criterion': 'gini', 'max_depth': 10, 'min_samples_leaf': 1, 'min_samples_split': 2}
最优交叉验证准确率: 100.00%
================================================================================
第6部分: 预测结果分析与可视化
【测试集预测】
【混淆矩阵】
[[842 0]
[ 0 783]]
混淆矩阵热力图已保存为: confusion_matrix.png
【性能指标】
准确率 (Accuracy): 100.0000%
精确率 (Precision): 100.0000%
召回率 (Recall): 100.0000%
F1值: 1.0000
ROC-AUC: 1.0000
混淆矩阵详细分析:
真阳性 (TP): 783 - 正确预测为有毒的样本
假阳性 (FP): 0 - 错误预测为有毒的样本
真阴性 (TN): 842 - 正确预测为可食用的样本
假阴性 (FN): 0 - 错误预测为可食用的样本 (危险!)
假阴性率 (将有毒判为可食用): 0.0000%
【详细分类报告】
precision recall f1-score support
可食用(e) 1.00 1.00 1.00 842有毒(p) 1.00 1.00 1.00 783accuracy 1.00 1625
macro avg 1.00 1.00 1.00 1625
weighted avg 1.00 1.00 1.00 1625
【模型性能评价】
性能等级: 卓越
评价: 准确率≥99.5%,假阴性率<0.2%,达到生产级别
性能指标可视化图已保存为: performance_metrics.png
================================================================================
实验总结报告
-
数据集信息:
- 样本总数: 8124
- 特征数量: 22个
- 缺失值: stalk-root属性2480个 (30.5%)
- 类别分布: 可食用51.8%, 有毒48.2%
-
数据处理:
- 缺失值处理: 保留'?'作为独立类别
- 特征编码: 标签编码 (LabelEncoder)
- 数据划分: 80%训练集, 20%测试集, 分层抽样
- 缺失值处理: 保留'?'作为独立类别
- 特征编码: 标签编码 (LabelEncoder)
- 数据划分: 80%训练集, 20%测试集, 分层抽样
- 特征编码: 标签编码 (LabelEncoder)
- 数据划分: 80%训练集, 20%测试集, 分层抽样
- 数据划分: 80%训练集, 20%测试集, 分层抽样
-
模型选择:
- 最优模型: Decision Tree
- 最优参数:
-
模型性能:
- 准确率: 100.0000%
- 精确率: 100.0000%
- 召回率: 100.0000%
- F1值: 1.0000
- 假阴性率: 0.0000%
- 性能等级: 卓越
-
实验结论:
成功达到设计目标(准确率>99%)!
模型可用于蘑菇毒性预测,具有很高的实用价值。