【发布时间】:2018-12-10 11:21:26
【问题描述】:
我正在使用 Sklearn 决策树进行一些分类,我有两种类型的数据:分类数据和连续数据。我使用pd.get_dummies 作为分类值,最终得到了超过 90 个特征。当然,这是相当多的。
问题是我然后遍历max_features 参数以获得我的模型的最佳分数,并且拥有超过 20 个特征太耗时了。所以我认为 Sklearn 可以为我的分类特征使用稀疏矩阵,而不是使用 0 和 1 的 70 列。
问题是: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()
【问题讨论】:
-
在将数组传递给
DecisionTreeClassifier之前,您当前如何组合这些数组。显示发生此错误的代码。也许您可以使用 scipy 加入这些矩阵。见我的other answer here。 -
@VivekKumar 添加了代码来清除这个想法
标签: python pandas scikit-learn sparse-matrix