我是机器学习的初学者,我一直在研究如何使用机器学习技术在python中增加数组维度的一些方法。我遇到了主成分分析和内核技巧,用于减少维数。但是,我正在努力寻找一种增加数组维数的算法。
假设我有一个带有形状(20,)的numpy数组X和一个标签向量L = [0,1,....,9]。我目前正在使用以下等式来得出形状为(20,10)的输出数组Y.
以下代码更清楚地解释了它:
import numpy
numLabels = 10
#define input array
X = numpy.random.rand(20,)
#define offset
offset = numpy.full((20,),0.07)
#define output array
Y = numpy.zeros((20,numLabels))
for l in range(numLabels):
Y[:,l] = X + (l-4.5)*offset # 4.5 because that the median for numbers 0 to 10
然而,上述方法假设一个随机偏移值来获得形状的输出数组(20,10)。
1)是否有其他方法可以使用相同的输入数组X,离散标签向量L和实值偏移向量来获得输出数组Y?上述公式可能会有一些变化吗?
2)是否还有其他方法可以在不使用实值偏移矢量的情况下获取输出数组Y?
答案 0 :(得分:1)
IIUC:
In [476]: x = np.random.rand(20,)
In [477]: l = np.arange(10)
In [478]: offset = 0.07
In [479]: Y = x[:,None] + (l - 4.5)*offset
In [480]: Y.shape
Out[480]: (20, 10)