python - 使用 sklearn 从数据集中删除冗余
问题描述
我有一个如下所示的数据集:
0.03658 -0.02192 -0.01772 0.00612 0.01160 0.88852 type1
0.03658 -0.02192 -0.01772 0.00612 0.01160 0.88859 type1
0.03813 -0.01910 -0.02290 0.00906 0.01384 1.78929 type1
0.04076 -0.02248 -0.02368 0.00903 0.01465 1.51693 type1
0.04076 -0.02248 -0.02368 0.00903 0.01465 1.51720 type1
0.04997 -0.04319 -0.02970 0.00945 0.02025 1.78306 type1
0.05763 0.10729 -0.06824 0.04753 0.02071 1.72909 type1
0.07291 0.13532 -0.08940 0.06161 0.02778 0.49674 type1
0.04086 -0.03733 -0.02057 0.00562 0.01495 1.39900 type1
0.05659 -0.01917 -0.04730 0.02125 0.02605 0.71228 type1
...
每行包含各种类型系统的 6 个属性(前 6 列)的测量值(最后一列包含类型编号)。目前,我需要描述 78 个不同的系统,但有一个问题,正如您在前两行中看到的那样:除了属性 6 的值之外,它们是相同的,无论如何它们几乎相同。因此,如果它们几乎相同,我想删除数据行——但仅限于每个类(即类型编号)和我将指定的某个阈值内。我是 sklearn 的新手,通过搜索文档没有找到任何合适的东西,但是有一个简单的 sklearn 函数可以做到这一点,还是我必须编写自己的线性代数代码来做到这一点?
解决方案
这真的不是sklearn
一种东西。只需对您的数据进行分类(根据相似度阈值),并在每个类中获取唯一的数据点。
这看起来很简单,对吧?好吧,将其变成答案而不是评论的唯一原因是指出以下微妙但令人讨厌的点:
达到阈值差异的相似性不是传递性的。这意味着您要么心中有一个定义不明确(并且可能是不可能的)的目标,要么您将对数据集中的点顺序产生痛苦的依赖;真是一枚硬币的两面。
举例来说,假设我们正在查看单个列的值,并且我们认为小于 2 的差异可以忽略不计,因此这些点被认为是“相同的”。那么你如何处理前十个数据点的以下值?
0、1、2、3、4、5、6、7、8、9
可以说,每对连续的对都是“相同的”,但您显然不想将它们全部组合在一起!
我希望这对你有意义,我希望这对你有帮助。
祝你好运!
推荐阅读
- jquery - 将文本添加到标签时表格中的元素移动
- objective-c - UITextView 中的可点击链接将导航到另一个控制器
- jquery - 猫头鹰旋转木马在多个项目上带有动画
- arrays - 如何使用 ADODB 与 EXCEL 文件连接的记录集将 Excel 工作表中的数据加载到二维数组中?
- java - 将参数传递给杰克逊中的getter
- html - 是否在 SharePoint 中翻译了 aria-labels
- c# - 返回具有泛型类型的类的函数,以返回具有特定类型的类
- python - 如何在烧瓶应用程序中将 ID 列显示为路由超链接?
- uwp - 如何在 UWP 更新安装上启动 fullTrustProcess exe?
- c# - 如何使wpf文件激活?