【发布时间】:2022-11-28 08:32:34
【问题描述】:
我有一个分类列('session',可以获得这些值之一:[2,4,8]),我想在训练机器学习模型(如 RandomForest 或 MLP)时使用它。
为此,我使用 One-Hot Encode 方法对该功能进行了编码:
df= pd.get_dummies(df, columns=["session"], prefix="Sessions")
我得到了三个新列:Session_2、Session_4、Session_8 而不是旧的会话列。
然后我将这些新的 3 列转换为一个向量(作为列表)并用该列表填充“会话”列:
df['session'] = np.array(df[['Sessions_2', 'Sessions_4', 'Sessions_8']], dtype=object).tolist()
所以,现在数据看起来像:
在尝试训练 ML 模型时,我认为最好使用新的向量“session”列而不是分离的 Session_x 列(否则,对于我们所做的一次性编码!)
但我收到此错误:
ValueError:设置带有序列的数组元素。
我搜索了那个错误,到处都提到根本原因可能是形状不相同或元素具有不同的数据类型......但我的情况并非如此!我验证了所有向量都具有相同的大小并且都具有相同的类型! (我在创建 np 数组时也使用了
dtype=object)我相信问题可能在于尝试将 n 元素数组(序列)加载到只有一个浮点数的单个数字槽中! 我尝试了 2 种不同的 ML 模型:RandomForest 和 MLP,但结果仍然相同。
如何让我的 ML 模型使用 One-Hot 编码向量? (首先是正确的方法吗?使用向量?)
【问题讨论】:
标签: python machine-learning one-hot-encoding