如何解决生成多维线
我正在生成多维线。线在每个尺寸上的投影不应该是线性的吗?情节不是。
from matplotlib import pyplot as plt
import numpy as np
n = 100 # samples
m = 2 # dimensions
X = np.random.randint(0,100,size=(n,m))
b = np.random.randint(1,3,m).reshape([m,1])
y = np.dot(X,b)
for i in range(m):
plt.scatter(X[:,i],y)
plt.show()
解决方法
这似乎是对点积的误解。考虑一个缩小的示例,其中n = 3:
X
Out[572]:
array([[86,85],[60,37],[36,57]])
In [573]: y
Out[573]:
array([[342],[194],[186]])
In [574]: 86+2*85
Out[586]: 256
In [587]: b
Out[587]:
array([[2],[2]])
请注意,按点积的定义,X的第一个值为2*86 + 2*85
。因此,此处y与X[0][0]
之比约为3.9
。对于X的第二个值,y与X [1] [0]之比约为3.2
。显然不是恒定的比率,因此X向量的第一个分量与y没有线性关系,如在图中所见。为什么会这样?
考虑其他一些情况,其中x [0]的第一部分为86;第二个成分可能是给定范围内的任何(它们是随机生成的)。那么,为什么我们期望X [0]的第一个分量和y之间有特定的比率?
想象一下X [0]的第一分量为0而d为[2,2]的情况。 y [0]不保证为0; y [0]将是X [0]的第二个分量的2倍。 X中的向量与y中的缩放器之间存在关系。不在X的向量分量与y的标量之间。
您可能想要的是让X为标量值(X=np.random.randint(1,100,size=n
),而y为向量。然后将y生成为X * b。现在绘制X与y中的每个尺寸的关系将是一条线。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。