Как получить количество функций из встроенной модели scikit-learn?

#python #scikit-learn

#python #scikit-learn

Вопрос:

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

Я просмотрел каталог модели и нашел способы получить количество только для определенных моделей (например, глядя на размеры опорных векторов для SVM), но я не нашел общего способа, который я мог бы использовать для любого типа модели.

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

 X, y    # dataset
  

и используйте произвольную модель из scikit-learn библиотеки, чтобы соответствовать этим данным

 model.fit(X,y)
  

Позже я хочу использовать эту модель для определения размеров исходного набора данных, что-то вроде

 model.n_features_
  

Есть ли быстрый и общий способ сделать это?

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

1. Хакерский способ so — внедрить свой собственный пользовательский элемент в любой экземпляр модели, который вы создаете и обучаете, например: clf.__my_num_features = …

2. @InonPeled Это довольно хорошая идея. Спасибо за ваш ответ.

Ответ №1:

В Sklearn нет единого общего атрибута для всех классификаторов.

Я бы рекомендовал следующее:

Для любого sklearn.linear_model / sklearn.svm.svc вы можете использовать следующий подход.

 >>> clf.coef_.shape[-1]
    
  

Для любых моделей на основе дерева ( DecisionTreeClassifier / RandomForestClassifier / GradientBoostingClassifier ) вы можете использовать

 >>> clf.n_features_
  

Обновить:

Новое в версии 1.0.

n_features_in_ : int

Количество функций, видимых во время подгонки.

feature_names_in_ :

Названия функций, которые видны во время подгонки. Определяется только тогда, когда X имеет имена функций, которые все являются строками.