同时利用稀疏矩阵和其他特征学习决策树

2024-09-30 08:21:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Sklearn决策树进行一些分类,我有两种类型的数据:分类数据和连续数据。我使用pd.get_dummies作为我的分类值,最终得到了90多个特性。当然,这是相当多的。
问题是,我然后迭代max_features参数以获得模型的最佳分数,而拥有20多个特性太耗时了。所以我认为Sklearn可以使用稀疏矩阵作为我的分类特征,而不是70列0和1。在

问题是:Sklearn可以混合使用稀疏矩阵和正则数组吗?如果是-我该怎么做?当前我收到错误:setting an array element with a sequence

这里有一些代码来理解这个想法。df_with_dummies是我目前使用的,但我希望有一种方法可以使用{}

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()

Tags: 数据importdfaswithnp分类矩阵
1条回答
网友
1楼 · 发布于 2024-09-30 08:21:03

当您这样做时:

df['dums'] = dums

dums作为稀疏矩阵,pandas数据帧没有正确处理,它将被广播到每一行。pandas并不抱怨它,因为它认为稀疏矩阵是一个非数组对象。在

这意味着df['dums']列中的每个元素都将指向整个稀疏矩阵dums。因此,本质上,每个数组元素都是用数组设置的,因此在scikit学习估计器中处理它时会出现错误setting an array element with a sequence。在

为此,您可以:

^{pr2}$

现在你可以把这个再过一遍。在

相关问题 更多 >

    热门问题