Использование active_features_ и feature_indices_ в OneHotEncoder в scikit-learn версии 0.21.2 - PullRequest
1 голос
/ 30 октября 2019

Я очень плохо знаком с библиотекой scikit в Python, и моя версия scikit-learn - 0.21.2. Я использовал OneHotEncoder для кодирования категориальных переменных в моем наборе данных.

Теперь я пытаюсь связать закодированные столбцы с исходными переменными согласно следующим 2 ссылкам, используя приведенные здесь коды и здесь

import pandas as pd
import numpy as np
results = []

for i in range(enc.active_features_.shape[0]):
    f = enc.active_features_[i]

    index_range = np.extract(enc.feature_indices_ <= f, enc.feature_indices_)
    s = len(index_range) - 1
    f_index = index_range[-1]
    f_label_decoded = f - f_index

    results.append({
            'label_decoded_value': f_label_decoded,
            'coefficient': clf.coef_[0][i]
        })

R = pd.DataFrame.from_records(results)
from sklearn import preprocessing
encoder = preprocessing.OneHotEncoder(categorical_features=[0,1,2])
X_train = encoder.fit_transform(data_train)
print encoder.feature_indices_

К сожалению, он продолжает выдавать эти ошибки

'OneHotEncoder' object has no attribute '_active_features_'
'OneHotEncoder' object has no attribute '_feature_indices_'

Как я могу решить эти ошибки и заставить коды работать.

1 Ответ

0 голосов
/ 30 октября 2019

Я думаю, что решения, на которые вы ссылались, на самом деле усложняют логику.

get_feature_names() было бы достаточно для этого.

Пример:

import numpy as np
import pandas as pd
from sklearn.preprocessing import OneHotEncoder
from sklearn.linear_model import LogisticRegression

n_samples = 50
data = pd.DataFrame({'colors': np.random.choice(['red', 'blue', 'green'], n_samples),
                     'shapes': np.random.choice(['circle', 'square'], n_samples)})

y = np.random.choice(['apples', 'oranges'], n_samples)

enc = OneHotEncoder()
X = enc.fit_transform(data)
lr = LogisticRegression().fit(X, y)

pd.DataFrame({'feature_names': enc.get_feature_names(data.columns),
                      'coef': np.squeeze(lr.coef_)})

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...