PCA降维后出现准确率低的问题的一种解决方法经验

本文主要记录在学习PCA时,对训练和测试集分别降维后出现准确率低情况的解决方案

使用MNIST数据集,以linearSVC作为分类器,练习PCA降维。

用MNIST提供的所有训练数据训练分类器后,使用MNIST提供的测试集,准确率达到0.83。

但是在PCA降维,并取80%的特征后,准确率仅仅0.26。

究其原因,我首先将训练集PCA至80%特征(149维),为了使用linearSVC的predict()函数,我又用PCA将测试集数据降至149维。

在上一段就出现了错误: 两个数据集分别经过PCA降维之后,已经成为完全不同的数据——我还未考虑其中的数学原理,但就实验结果来看,必须要将所有数据放在一起降维,然后再使用sklearn 中的train_test_split()划分训练与测试集。此时,准确率达到了0.9。

但是这个结果也很奇怪——它(56,000)高于使用所有训练集(60,000)的准确率。

可能因为去除了噪声?我还没有花时间去想。

欢迎指正,欢迎大家讨论!

谢谢!

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
PCA降维后的手写体数字图片数据进行分类后,需要对分类结果进行分析和评估。下面介绍几种常用的分类结果分析方法: 1. 混淆矩阵:混淆矩阵是一种常用的分类结果展示方式,可以显示每个类别的实际样本数和被正确分类的样本数。通过分析混淆矩阵可以了解模型在不同类别上的分类效果。 2. 准确率、召回率和 F1 值:准确率、召回率和 F1 值是常用的分类评估指标,可以从不同角度评估模型的分类效果。准确率表示被正确分类的样本数占总样本数的比例,召回率表示被正确分类的样本数占实际样本数的比例,F1 值是准确率和召回率的调和平均数。 3. ROC曲线和AUC值:ROC曲线和AUC值是评估二分类模型性能的重要指标,可以通过调整分类阈值来平衡模型的召回率和准确率。ROC曲线是以真正率(TPR)为纵轴,假正率(FPR)为横轴的曲线,AUC值是ROC曲线下的面积。 4. 误分类样本分析:对于误分类的样本,可以进一步分析其特征和分类错误的原因,从而改进模型和特征选择方法。 下面是一个简单的实例,演示了如何使用混淆矩阵和准确率、召回率和 F1 值对PCA降维后的手写体数字图片数据进行分类结果分析: ```R # 读入数据 test_data <- read.csv("test_data.csv", header=TRUE) test_label <- test_data$label # 进行分类 # ... # 混淆矩阵 conf_mat <- table(test_label, pred_label) print(conf_mat) # 准确率、召回率和 F1 值 accuracy <- sum(diag(conf_mat)) / sum(conf_mat) precision <- diag(conf_mat) / colSums(conf_mat) recall <- diag(conf_mat) / rowSums(conf_mat) f1_score <- 2 * precision * recall / (precision + recall) result <- data.frame(precision, recall, f1_score) print(result) ``` 需要注意的是,分类结果的好坏不仅取决于分类算法和模型参数选择,还取决于特征选择和数据质量。在实际应用中需要综合考虑多种因素,进行合理的特征选择和模型调整。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值