Я использую дерево решений Sklearn для некоторой классификации, и у меня есть два типа данных: категориальные и непрерывные.Я использовал pd.get_dummies
для своих категориальных значений и получил более 90 функций.Что, конечно, довольно много.
Дело в том, что я затем перебираю параметр max_features
, чтобы получить лучший результат для моей модели, а наличие более 20 функций - это слишком много времени.Поэтому я подумал, что Sklearn может использовать разреженные матрицы для моих категориальных функций вместо 70 столбцов с 0 и 1.
Вопрос: может ли Sklearn использовать сочетание разреженных матриц и регулярных массивов или нет?Если да - как мне это сделать?В настоящее время я получаю сообщение об ошибке: setting an array element with a sequence
Вот некоторый код, чтобы получить идею.df_with_dummies
- это то, что я сейчас использую, но я надеюсь, что есть способ использовать df_with_sparse
import numpy as np
import pandas as pd
from scipy.sparse import csr_matrix
a = np.random.randn(10,3)
b = np.random.random((10,1))
df = pd.DataFrame(a, columns = "A B C".split())
df['temp'] = b
df['dum1'] = np.where(df.temp < 0.5, 1, 0)
df['dum2'] = np.where(df.temp >= 0.5, 1, 0)
del df['temp']
df_with_dummies = df.copy()
a = df[['dum1', 'dum2']]
dums = csr_matrix(a)
df['dums'] = dums
df_with_sparse = df.copy()