machine-learning - PCA 与平均列
问题描述
我有一个包含 300 个浮点类型列和 1 个整数列的数据框,这是因变量。300 列有 3 种: 1.Kind A:第 1 到 100 列 2.Kind B:第 101 到 200 列 3.Kind C:第 201 到 300 列 我想减少维数。我应该平均每种类型的值并聚合成 3 列(每种类型一个),还是应该执行一些降维技术,如 PCA?相同的理由是什么?
解决方案
选项1:
如果您有大量的训练数据(比如超过 5*300 的训练样本),请不要进行降维
选项 2:
既然您知道有 3 种数据,请分别运行这三种数据的 PCA,并为每种数据获取 2 个特征。IE
f1, f2 = PCA(kind A columns)
f3, f4 = PCA(kind B columns)
f5, f6 = PCA(kind C columns)
train(f1, f2, f3, f4, f5, f6)
选项 3
在所有列上运行 PCA,只取保留 90+ 方差的列数
不要平均,平均是不好的。但是,如果您真的想进行平均,并且如果您确实知道某些特征很重要,那么请进行加权平均。一般来说,为降维而对特征进行平均是一个非常糟糕的主意。
推荐阅读
- python - 构建 Tkinter 应用程序内部和外部功能之间的区别
- qt - Qt应用程序在非英文字符路径下运行,easylogging++写入文件失败
- swift - 你如何使用二传手?
- git - 如何阻止 Git 向我发送消息“您的分支基于 'origin/branch_name',但上游已消失。”
- computer-vision - RuntimeError:帧为 0 字节,但应为 691200
- c# - SQL 查询中的额外引号
- flutter - ref.watch(myProvider.state) 和 ref.watch(myProvider).state 之间的区别
- azure-devops - 在 Azure Devops 中,可以在发布管道中将 Wiki 查询结果生成为 PDF 吗?
- flutter - 如何集成krpano在flutter App中展示全景图
- android - 在Android Studio中杀死应用程序后如何运行handler.postDelayed?