Python 创建一维numpy.ndarray,而不是二维
我正在尝试使用Python进行分类。 我有一些输入列(让k个变量)和一个输出列Python 创建一维numpy.ndarray,而不是二维,python,arrays,numpy,classification,Python,Arrays,Numpy,Classification,我正在尝试使用Python进行分类。 我有一些输入列(让k个变量)和一个输出列 Let inputfeatures = array([[ 0, 0, 0, ..., 0, 0, 0], [ 1, 0, 0, ..., 0, 0, 0], [ 1, 0, 0, ..., 0, 0, 0], ..., [ 0, 0, 0, ..., 0, 0, 0],
Let inputfeatures
= array([[ 0, 0, 0, ..., 0, 0, 0],
[ 1, 0, 0, ..., 0, 0, 0],
[ 1, 0, 0, ..., 0, 0, 0],
...,
[ 0, 0, 0, ..., 0, 0, 0],
[ 1, 0, 0, ..., 0, 0, 0],
[ 0, 0, 0, ..., 0, 1, 0]], dtype=int64)
target_array
= array([0, 0, 0, ..., 0, 0, 1], dtype=int64)
我正在安装模型
trainedModel = model.fit(inputfeatures,target_array)
我正在使用的分类器需要所有数据实例的数据表型由长度为n的一维numpy.ndarray表示
由于目标数组是长度为n的一维numpy.ndarray,因此拟合时没有出现错误
假设需要两个输出变量,如何创建长度为n的一维numpy.ndarray以适合模型
我只是按照下面给出的方法进行了尝试:
target_array=data[data.columns[data.columns.isin(['var1', 'var2'])]].values
target_array
array([[1, 1],
[0, 1],
[1, 1],
...,
[1, 0],
[0, 0],
[0, 0]], dtype=int64)
但它是二维的。如何使其成为长度为n的一维numpy.ndarray?您不能简单地将
n
-维标签(或“目标输出”)转换为一维标签。在某些情况下,如果输出分布是嵌入到n
维空间中的m
维流形,您可以尝试首先进行投影(如有必要,包括非线性投影),但您必须非常仔细地考虑您希望分类器或回归器学习的内容
一个简单的策略是每个输出标签都有一个专门的学习者。这将在机械意义上“起作用”,即您能够预测与输入分布一致的任何输入的输出。但它将忽略输出变量之间可能的相互作用。想象一个二维输出分布,如下所示:
两个学习者,每个人只看到一个输出变量,将没有机会了解该输出结构,并且很可能(错误地)预测正象限中应为空的一些输出点
一种策略是从输入的X
中学习第一个变量y\u 0
。然后学习第二个变量y\u 1
,使用第一个分类器中的预测y\u 0\u hat
增加输入X
。等等
一般来说,请查看:
- ,尤其是“多输出”类,我相信您正在寻找这些类