F:\Program Files\Python\lib\site-packages\ipykernel\__main__.py:26: VisibleDeprecationWarning: boolean index did not match indexed array along dimension 0; dimension is 100 but corresponding boolean dimension is 101
---------------------------------------------------------------------------IndexError Traceback (most recent call last)<ipython-input-116-caffccb593cb> in <module>()----> 1 plot_decision_regions(X,y,ppn,resolution=0.02) 2 plt.xlabel('len1') 3 plt.ylabel('len2') 4 plt.legend(loc='upper left') 5 plt.show()<ipython-input-115-d79b122b313a> in plot_decision_regions(X, y, classifier, resolution) 24 25 for idx,c1 in enumerate(np.unique(y)):---> 26 plt.scatter(x=X[y==c1,0],y=X[y==c1,1],alpha=0.8,c=cmap(idx),marker=markers[idx],label=c1) 27 IndexError: index 100 is out of bounds for axis 0 with size 100
请问解决了吗?
我是这样改的:
import matplotlib.pyplot as plt
import numpy as np
y = df.loc[0:99, 4].values
y = np.where(y == 'Iris-setosa', -1, 1)
#print(y)
X = df.iloc[0:100, [0, 2]].values
#print(X)
plt.scatter(X[:50, 0], X[:50, 1], color='red', marker='o', label='setosa')
plt.scatter(X[50:100, 0], X[50:100, 1], color='blue', marker='x', label='vericolor')
plt.rcParams['font.sans-serif']=['SimHei']
plt.xlabel('花瓣长度')
plt.ylabel('花茎长度')
plt.legend(loc='upper left')
plt.show()
另外,还有一处会报错,makers这,改成maker:
for idx, cl in enumerate(np.unique(y)):
plt.scatter(x=X[y==cl, 0], y=X[y==cl, 1], alpha=0.8, c=cmap(idx), marker=marker[idx], label=cl)
目前找到的问题是X[y==cl, 0]报的错,X的数据是[[ 5.1 1.4]...[ 5.7 4.1]]这种类型的
y的如果cl的值[-1,1],当循环第一次的时候 cl = -1
y==-1 得到了一组boolean [true...flase]的数据
最终的数据应该是X[boolean, -1]这样的
以上仅为猜测,我也碰到这个问题,目前真正寻找解决办法。
你参考一下这个,希望对你有帮助。https://stackoverflow.com/questions/32198064/pandas-indexerror-for-large-dataframe