#python #machine-learning #scikit-learn #one-hot-encoding
#python #машинное обучение #scikit-learn #one-hot-encoding
Вопрос:
Я использую OneHotEncoder
из Scikit-learn в своем проекте. И мне нужно знать, каким будет размер каждого одноточечного вектора, когда n_value
установлено значение auto
. Я думал n_value_
, что это покажет, но, похоже, у меня нет другого способа, кроме как попробовать обучающие образцы. Я создал этот игрушечный пример кода, чтобы показать проблему. Знаете ли вы какое-либо другое решение?
from sklearn.preprocessing import OneHotEncoder
data = [[1], [3], [5]] # 3 different features
encoder = OneHotEncoder()
encoder.fit(data)
print(len(encoder.transform([data[0]]).toarray()[0])) # 3 number of dimensions in one-hot-vector
print(encoder.n_values_) # [6] == len(range(5))
Ответ №1:
Это то, что вы ищете?
>>> encoder.active_features_
array([1, 3, 5])
>>> len(encoder.active_features_)
3
Ответ №2:
Я думаю, что лучшим решением является определение размера вектора в n_values
. Поскольку автоматическая опция создает нечетное поведение с отсутствующими функциями по сравнению с номерами объектов вне диапазона. Повторяя этот пример, он создает нулевой вектор для пропущенных чисел:
from sklearn.preprocessing import OneHotEncoder
data = [[1], [3], [5]]
encoder = OneHotEncoder()
encoder.fit(data)
print(encoder.transform([
[0],
[1],
[2],
[3],
[4],
[5]
]).toarray())
Результат выглядит следующим образом:
[[ 0. 0. 0.]
[ 1. 0. 0.]
[ 0. 0. 0.]
[ 0. 1. 0.]
[ 0. 0. 0.]
[ 0. 0. 1.]]
И если я попробую 6
, это просто выдаст ошибки:
print(encoder.transform([[6]]).toarray())
Результат:
ValueError: unknown categorical feature present [6] during transform.
Как я упоминал ранее, наилучшей практикой является определение размера векторов с самого начала:
from sklearn.preprocessing import OneHotEncoder
data = [[1], [3], [5]]
encoder = OneHotEncoder(n_values=50) # maximum size for my vocabulary, fits for my memory and my future development.
encoder.fit(data)
Имейте в виду, что в этом случае больше не будет никакого active_features_
атрибута for encoder
.