【发布时间】:2020-03-08 13:19:10
【问题描述】:
我是 Python 新手,在处理简单的事情时遇到了麻烦。我正在尝试为随机(x,y)s 实现感知器。我有两个类N 和P,我希望N 类的数据将1 作为标签,P 类的数据将0 作为标签以供进一步计算。 N 和 P 定义如下:
random_positive = np.random.normal(100,45,100)
random_negative = np.random.normal(-100,45,100)
N=[(x,y) for x,y in zip(random_positive,random_negative)]
P=[(x,y) for x,y in zip(random_negative,random_positive)]
我编写了以下代码,但结果不是我所期望的。
for (x,y) in N:
z = 1
for (x,y) in P:
z = 0
【问题讨论】:
-
目前尚不清楚您要在这里完成什么。
z是一个变量,您只需在循环中保持覆盖即可。我不确定你期望它是什么。顺便说一句,[(x,y) for x,y in zip(random_positive,random_negative)]是一种过于冗长的处理方式list(zip(random_positive, random_negative)) -
无论如何,你的错误正在发生,因为你试图调用
z,在你的两个循环之后它只是0,因为你只是覆盖了相同的多变的。实际上,您的两个循环都可以简单地替换为z = 0以获得相同的结果。无论如何,int对象不可调用,因此出现错误。 -
z是一个整数。你为什么z()? -
@FreeSoul 什么?
matplotlib可以与numpy.ndarray对象一起使用,这可能也是您想要的。因此,不要使用 zip,而是使用np.stack([random_positive, random_negative], axis=0),或者将各列分开,具体取决于您要使用的绘图。 -
@mdk 不,根本不是一个真正的答案,因为 OP 正在讨论数据集上下文中的标签,即带有“标签”(0 或 1)的第三列对应该行数据。
标签: python numpy neural-network tuples perceptron