#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: количество дублированных объектов, случайным образом выбранных из информативного
- n_repeated объекты выбираются легко, поскольку они тесно связаны с информативными объектами.
- Строка документации для повторяющихся и избыточных объектов указывает, что оба они взяты из информативных объектов.
Мой вопрос: как можно удалить / выделить избыточные функции, каковы их характеристики.
Прилагается тепловая карта корреляции между всеми объектами, какой объект на изображении является избыточным.
Комментарии:
1. Я голосую за закрытие этого вопроса, потому что речь идет о статистике, а не о программировании. Он относится к перекрестной проверке , а не к here .
2. Спасибо за комментарий, я на самом деле ищу точку зрения sklearn о том, как избыточные данные могут быть удалены из метода генерации поддельных данных.
Ответ №1:
- Чтобы проверить, сколько независимых столбцов используют
np.linalg.matrix_rank(X)
- Чтобы найти индексы линейно независимых строк матрицы 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.