使用sklearn

时间:2018-12-06 23:04:42

标签: python scikit-learn redundancy

我有一个看起来像这样的数据集:

  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函数可以执行此操作,或者我必须编写自己的线性代数代码来做到这一点?

1 个答案:

答案 0 :(得分:0)

这实际上不是sklearn这种东西。只需对您的数据进行分类(根据相似性阈值),然后在每个类中获取唯一的数据点。
这看起来很简单,对吧?好吧,唯一将其变成答案而不是评论的原因是指出以下微妙但令人讨厌的观点:
达到阈值差异的相似性不是可传递的。这意味着您要么脑子里有一个定义不清(可能是不可能的)的目标,要么将要对数据集中的点数进行折磨。真的是同一枚硬币的两个侧面。
举例来说,假设我们正在查看单个列的值,并且我们认为小于2的差异可以忽略不计,因此将这些点视为“相同”。那么,对于前十个数据点,您如何使用以下值?

  

0、1、2、3、4、5、6、7、8、9

可以这么说,每对连续的对都是“相同的”,但是显然您不想将它们组合在一起!
希望对您有意义,也希望对您有所帮助。
祝你好运!