Удаление избыточного объекта из набора данных классификации ( make_classification )

#scikit-learn #statistics #data-science #correlation

#scikit-learn #Статистика #наука о данных #корреляция

Вопрос:

В методе make_classification,

X,y = make_classification(n_samples=10, n_features=8, n_informative=7, n_redundant=1, n_repeated=0 , n_classes=2,random_state=6)

Строка документа о n_redundant: количество избыточных объектов. Эти объекты генерируются как случайные линейные комбинации информативных объектов.

Строка документа о n_repeated: количество дублированных объектов, случайным образом выбранных из информативного

  1. n_repeated объекты выбираются легко, поскольку они тесно связаны с информативными объектами.
  2. Строка документации для повторяющихся и избыточных объектов указывает, что оба они взяты из информативных объектов.

Мой вопрос: как можно удалить / выделить избыточные функции, каковы их характеристики.

Прилагается тепловая карта корреляции между всеми объектами, какой объект на изображении является избыточным.

Пожалуйста, помогите.введите описание изображения здесь

Комментарии:

1. Я голосую за закрытие этого вопроса, потому что речь идет о статистике, а не о программировании. Он относится к перекрестной проверке , а не к here .

2. Спасибо за комментарий, я на самом деле ищу точку зрения sklearn о том, как избыточные данные могут быть удалены из метода генерации поддельных данных.

Ответ №1:

  1. Чтобы проверить, сколько независимых столбцов используют np.linalg.matrix_rank(X)
  2. Чтобы найти индексы линейно независимых строк матрицы X, используйте sympy.Matrix(X).rref()

ДЕМОНСТРАЦИЯ

Сгенерируйте набор данных и проверьте количество независимых столбцов (ранг матрицы):

 from sklearn.datasets import make_classification
from sympy import Matrix

X, _ = make_classification(
    n_samples=10, n_features=8, n_redundant=2,random_state=6
)
np.linalg.matrix_rank(X, tol=1e-3)
# 6
 

Поиск индексов линейно независимых столбцов:

 _, inds = Matrix(X).rref(iszerofunc=lambda x: abs(x)<1e-3)
inds
#(0, 1, 2, 3, 6, 7)
 

Удалите зависимые столбцы и проверьте ранг матрицы (количество независимых столбцов):

 #linearly independent
X_independent = X[:,inds]
assert np.linalg.matrix_rank(X_independent, tol=1e-3) == X_independent.shape[1]
 

Комментарии:

1. Спасибо за решение, я подключил вопрос, вышеупомянутое решение, оно всегда показывает столбец со всеми нулями в конце (я попытался настроить данные). не относится к индексу избыточных объектов. или я упускаю какой-либо подвох здесь.

2. Спасибо. да, согласен, он показывает нулевые строки в соответствии с избыточными функциями, однако он не выделяет индекс избыточной функции (всегда показывает ноль в конце матрицы). Может быть случай, когда объект, отличный от последнего индексированного, может быть избыточным.. надеюсь, я смогу объяснить свою точку зрения.

3. @SantoshKumar Пожалуйста, ознакомьтесь с обновленным. R-матрица в QR-декомпозиции указывает только ранг матрицы, а не какие конкретные столбцы линейно зависят, как вы правильно указали. Если кто-то полагается на QR-декомпозицию, он должен вручную найти столбцы, ответственные за все строки нулей в конце матрицы R.