微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

创建一维 numpy.ndarray 而不是二维

如何解决创建一维 numpy.ndarray 而不是二维

我正在尝试使用 Python 进行分类我有一些输入列(让 k 个变量)和一个输出列。

Let inputfeatures 
  = array([[ 0,...,0],[ 1,[ 0,1,0]],dtype=int64)
target_array
= array([0,1],dtype=int64)

我正在拟合模型,

trainedModel = model.fit(inputfeatures,target_array)

我使用的分类器需要所有数据实例的数据表型由长度为 n 的一维 numpy.ndarray 表示

我在拟合时没有出错,因为 target_array 是长度为 n 的一维 numpy.ndarray

假设,我需要两个输出变量,我如何创建一个长度为 n 的一维 numpy.ndarray 以适应模型?

我只是尝试如下:

target_array=data[data.columns[data.columns.isin(['var1','var2'])]].values
target_array
array([[1,[0,[1,dtype=int64)

但它是二维的。如何使它成为长度为 n 的一维 numpy.ndarray

解决方法

您不能简单地将 n 维标签(或“目标输出”)转换为一维标签。在某些情况下,输出分布是嵌入到 m 维空间中的 n 维流形,您可以尝试先进行投影(如有必要,包括非线性投影),但是您必须非常仔细地考虑您希望分类器或回归器学习什么。

一个简单的策略是每个输出标签都有一个专门的学习器。这将在机械意义上“起作用”,您将能够预测与输入分布一致的任何输入的输出。但它会忽略输出变量之间可能的交互。想象一下这样的 2D 输出分布:

enter image description here

两个学习者,每个人只看到一个输出变量,将没有机会了解该输出结构,并且可能(并且错误地)预测正象限中应该为空的一些输出点。

一种策略是从您的输入 y_0 中学习第一个变量 X。然后在使用来自第一个分类器的预测 y_1 扩充您的输入 X 之后学习第二个变量 y_0_hat。等等。

一般来说,请查看:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。