def plot(weights):
import matplotlib
import matplotlib.pyplot as plt
dataMat, labelMat = loadDataSet()
dataArr = array(dataMat)
n = shape(dataArr)[0]
xcord1 = [];
ycord1 = []
xcord2 = [];
ycord2 = []
for i in range(n):
if int(labelMat[i]) == 1:
xcord1.append(dataArr[i, 1]);
ycord1.append(dataArr[i, 2])
else:
xcord2.append(dataArr[i, 1]);
ycord2.append(dataArr[i, 2])
fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(xcord1, ycord1, s=30, c='red', makers='s')
ax.scatter(xcord2, ycord2, s=30, c='green')
x = arange(-3.0, 3.0, 0.1)
y = (-weights[0] - weights[1] * x / weights[2])
ax.plot(x, y)
plt.xlabel('X1');
plt.ylabel('X2')
plt.show()
报错:AttributeError: 'PathCollection' object has no property 'makers'
兄dei,正确的属性名称应该是 markers
,而不是 makers
。
请将以下行代码:
ax.scatter(xcord1, ycord1, s=30, c='red', makers='s')
改为:
ax.scatter(xcord1, ycord1, s=30, c='red', markers='s')
这样就能够解决这个错误了。
吃符号的亏,上大小写的当,细心点就没事啦!
你遇到的错误信息 "AttributeError: 'PathCollection' object has no property 'makers'" 表明你的代码中存在拼写错误。正确的属性名应该是 'markers' 而是 'makers'。
要解决这个问题,你需要 ax.scatter(xcord1, ycord1, s=30, c='red', makers='s') 这一行替换为 ax.scatter(xcord1, ycord1, s=30, c='red', markers='s')。