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

运行视频中的代码有问题

运行 In [5] plt.plot(range(1, len(ppn.errors_) + 1), ppn.errors_, marker='o') 报错    'module' object has no attribute 'scatter'   什么意思

正在回答

2 回答

这一节有问题,运行时有错误,解决方法如下:

import numpy as np
class Perceptron(object):

    def __init__(self, eta=0.01, n_iter=10):
        self.eta=eta
        self.n_iter=n_iter

    def fit(self, X, y):
        self.w_=np.zeros(1+X.shape[1])
        self.errors_ = []

        for _ in range(self.n_iter):
            errors =0
            for xi,target in zip(X,y):
                update = self.eta * (target - self.predict(xi))
                self.w_[1:] += update * xi
                self.w_[0] += update
                errors += int(update != 0.0)
            self.errors_.append(errors)
        return self

    def net_input(self, X):
        """Calculate net input"""
        return np.dot(X, self.w_[1:]) + self.w_[0]

    def predict(self, X):
        """Return class label after unit step"""
        return np.where(self.net_input(X) >= 0.0, 1, -1)
    
ppn = Perceptron(eta=0.1,n_iter=10)
ppn.fit(X,y)
print('Totalnumberofmisclassifications:%dof100'%(y!=ppn.predict(X)))
plt.plot(range(1,len(ppn.errors_) + 1),ppn.errors_,marker='o')
plt.xlabel('Epochs')
plt.ylabel('errorclassifynumber')
plt.show()

意思就是把这个类和ppn=.... 放在一起,同时,这个类还要改一下,你可以发现我这个类和视频里的有一点点不一样,但没有影响

0 回复 有任何疑惑可以回复我~

# -*-coding: utf-8
import numpy as np
class Perceptron(object):
   """
   eta:学习率
   n_iter:权重向量的训练次数
   w_:神经分叉权重向量
   errors:用于记录神经元判断出错次数
   """
   def __init__(self,eta=0.01,n_iter=10):
       self.eta=eta
       self.n_iter=n_iter
       pass
   def fit(self,X,y):
       """
       :param X:训练样本,电信号向量;
       X:shape(n_samples,n_features)X中的样本个数,接收电信号的个数
       X:[[1,2,3],[4,5,6]] n_samples:2;n_features:3
       :param y:样本对应的分类
       y:[1,-1]
       zip(X,y)=[[1,2,3,1],[4,5,6,-1]]
       初始化权重向量
       加一是因为将阈值作为w0
       """
       self.w_=np.zeros(1+X.shape[1])
       self.errors_=[]
       for _ in range(self.n_iter):
           errors=0
           for xi,target in zip(X,y):
               """
               update = eta*(y-y')
               xi是一个向量,更新权重
               """
               update=self.eta*(target-self.predict(xi))
               self.w_[1:] += update * xi
               self.w_[0] += update  # 更新阈值
               errors+=int(update)
               self.errors_.append(errors)
               pass
           pass
       pass

   def net_input(self, X):
       return np.dot(X,self.w_[1:])+self.w_[0]
       pass
   def predict(self,X):
       return np.where(self.net_input(X) >=0.0, 1,-1)
       pass
   pass


import pandas as pd
import matplotlib.pyplot as plt

file='/home/bokebi/competition/tianchi_speed_prediction/learn_project/LSTM-Neural-Network-for-Time-Series-Prediction/imoocdata.csv'
df=pd.read_csv(file,header=None)
y=df.loc[0:100,4].values
y=np.where(y=='Iris-setosa',-1,1)
x=df.loc[0:100,[0,2]].values

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

   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,resolution))
   classifier.fit(X,y)
   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.xlim(xx2.min(),xx2.max())
   for idx,c1 in enumerate(np.unique(y)):
       plt.scatter(x=X[y==c1,0],y=X[y==c1,1],alpha=0.8,c=cmap(idx),marker=markers[idx],label=c1)
   pass

ppn=Perceptron()
plot_decision_regions(x,y,ppn,resolution=0.02)
plt.xlabel('len1')
plt.ylabel('len2')
plt.legend(loc='upper left')
plt.show()

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

运行视频中的代码有问题

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