У меня есть набор данных из 150 образцов и почти 10000 объектов.Я сгруппировал образцы в 6 кластеров.Я использовал sklearn.feature_selection.RFECV метод, чтобы уменьшить количество функций.Метод оценивает количество важных признаков 3000 признаков с точностью ~ 95%, используя 10-кратное CV .Однако я могу получить точность ~ 92%, используя около 250 объектов (я построил график, используя grid_scores_ ).Поэтому я хотел бы получить эти 250 функций.
Я проверил этот вопрос Получение функций в RFECV scikit-learn и выяснил, как рассчитать важность выбранных функций по:
np.absolute (rfecv.estimator_.coef _)
, который возвращает длину массива ряда важных функций для двоичных классификаций.Как я указывал ранее, у меня есть 6 кластеров и sklearn.feature_selection.RFECV выполняет классификацию 1 против 1 .Поэтому я получаю (15, 3000)
ndarray.Я не знаю, как поступить.Я думал взять точечный продукт для каждой функции, подобной этой:
cofs = rfecv.estimator_.coef_
coeffs = []
for x in range(cofs.shape[1]):
vec = cofs[ : , x]
weight = vec.transpose() @ vec
coeffs.append(weight)
И я получаю массив (1,3000) .Я могу отсортировать их и получить результаты, которые я хочу.Но я не уверен, правильно ли это и имеет ли смысл.Я действительно ценю любые другие решения.