为了账号安全,请及时绑定邮箱和手机立即绑定

我的图像绘制不对劲,求老师和大佬帮忙

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.colors import ListedColormap
from perceptron import perceptron

file ="data.csv"

def plot_decision_reqions(X,y,classifier,resolution=0.02):
    markers=('s','x','o','v')
    colors = ('red','blue','lightgreen','gray','cyan')
    cmap = ListedColormap(colors[:len(np.unique(y))])

    x1_min,x1_max = X[:,0].min() - 1,X[:,0].max()
    x2_min,x2_max = X[:,1].min() - 1 ,X[:,1].max()

    xx1,xx2 = np.meshgrid(np.arange(x1_min,x1_max,resolution),np.arange(x2_min,x2_max))

    Z = classifier.predict(np.array([xx1.ravel(),xx2.ravel()]).T)
    Z =Z.reshape(xx1.shape)
    plt.contourf(xx1,xx2,Z,alpha=0.4,cmap=cmap)
    plt.xlim(xx1.min(),xx1.max())
    plt.ylim(xx2.min(),xx2.max())

    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=markers[idx],label=cl)


df = pd.read_csv(file,header=None)
y = df.loc[0:99,4].values
y = np.where(y=='Iris-setosa',-1,1)
X =df.iloc[0:100,[0,2]].values

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='versicolor')
plt.xlabel('X')
plt.ylabel('Y')
plt.legend(loc='upper left')

ppn = perceptron(eta=0.1,n_iter=10)
ppn.fit(X,y)
plt.plot(range(1,len(ppn.errors_)+1),ppn.errors_,marker='o')
plt.xlabel('Epocha')
plt.ylabel('按错误次数分')
plot_decision_reqions(X,y,ppn,resolution=0.02)
plt.show()

画出的图像是这样的:

https://img1.sycdn.imooc.com//5b936ede00012c3c08870691.jpg

正在回答

1 回答

通过图上xlabel可以看到显示的是“Epocha”,是上一张图的横轴,

plot_decision_reqions()的图画成这样应该是和上一张图叠加在一起显示了,建议在plot_decision_reqions(X,y,ppn,resolution=0.02)语句前面添加一句代码:plt.figure(),表示新建一个画板,这样就不会出现和上面的图叠加显示的情况了。
0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

我的图像绘制不对劲,求老师和大佬帮忙

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信