удаление избыточности из набора данных с помощью sklearn - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть набор данных, который выглядит следующим образом:

  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 голосов
/ 07 декабря 2018

На самом деле это не sklearn.Просто скопируйте ваши данные (в соответствии с порогом сходства) и возьмите уникальные точки данных в каждом классе.
Это кажется достаточно простым, верно?Ну, единственная причина, по которой это превращается в ответ вместо комментария, состоит в том, чтобы указать на следующую тонкую, но раздражающую точку:
Сходство до пороговой разницы не является переходным .Это означает, что вы либо имеете в виду плохо определенную (и, возможно, невозможную) цель, либо у вас будет зависимость от боли в шее от порядка точки в вашем наборе данных;две стороны одной и той же монеты.
В качестве примера, скажем, мы смотрим на значения одного столбца и решаем, что разница меньше 2 незначительна, поэтому такие точки следует считать «идентичными».Что вы делаете со следующими значениями для первых десяти точек данных?

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

Каждая последовательная пара, так сказать, «идентична», но выочевидно, не хочу группировать их всех вместе!
Я надеюсь, что это имеет смысл для вас, и я надеюсь, что это всякая помощь.
Удачи!

...