问答详情
源自:3-5 神经网络对数据实现分类(下)

有木有完整的代码

请问老师~代码可不要上传到git上

提问者:慕尼黑4302789 2017-05-23 17:06

个回答

  • 慕田峪7388993
    2017-10-10 15:45:38

    由于连接方在一段时间内没有正确答复或连接的主机没有反映,连接尝试失败,请问这个连接是失效了嘛?

  • 小丸子只有肉没有樱桃
    2017-06-20 17:25:14

    # 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: 输入样本向量
            :param y: 对应样本分类
            
            X:shape[n_samples, n_features]
            X:[[1,2,3],[4,5,6]]
            n_samples :2
            n_features:3
            
            y:[1,-1]
            """
    
            """
            初始化向量为0
            加一是因为步调函数阈值
            """
            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)
                    self.errors_.append(errors)
                    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
    
    import pandas as pd
    
    file = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'
    
    df = pd.read_csv(file,header=None)
    
    
    import matplotlib.pyplot as plt
    
    
    y = df.loc[0:100,4].values
    y=np.where(y=='Iris-setosa',-1,1)
    
    #根据整数位置选取单列或单行数据
    X = df.loc[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('huabanchangdu')
    plt.ylabel('huajingchangdu')
    plt.legend(loc='upper left')
    
    
    ppn =Perceptron(eta=0.1,n_iter=10)
    ppn.fit(X,y)
    
    from matplotlib.colors import ListedColormap
    def plot_decision_region(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, resolution))
        Z =classifier.predict(np.array([xx1.ravel(),xx2.ravel()]).T)
        print (xx1.ravel())
        print(xx2.ravel())
        print Z
        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)
    
    plot_decision_region(X,y,ppn,resolution=0.02)
    plt.xlabel('huajingchang')
    plt.ylabel('huabanchang')
    plt.legend(loc='upper left')
    plt.show()


  • 小丸子只有肉没有樱桃
    2017-06-20 17:23:58

    # coding=utf-8
    import numpy as np
    import matplotlib.pyplot as plt
    #ada代码
    class AdalineGd(object):
        '''
        eta: float
        学习效率,处于0和1之间
        
        n_iter:int
        对训练数据进行学习,改进次数
        
        w_:一维向量
        存储权重数值
        
        error_:
        一维向量
        存储每次迭代改进时,神经网络对数据进行错误判断的次数
        '''
        def __init__(self,eta = 0.01,n_iter=50):
            self.eta=eta
            self.n_iter =n_iter
    
        def fit(self,X,y):
            '''
            
            :param X: 二维数组[n_samples, n_features]
            n_samples 表示X中含有训练数据条目数
            n_features含有4个数据的一维向量,用于表示一条训练条目
            :param y: 一维向量
            用于存储每一训练条目对应的正确分类
            :return: 
            '''
            self.w_ =np.zeros(1+X.shape[1])#权重初始化为零
            self.cost_ =[]
    
            for i in range(self.n_iter):
                output = self.net_input(X)
                errors = (y - output)#向量
                self.w_[1:]+=self.eta *X.T.dot(errors)
                self.w_[0] +=self.eta *errors.sum()
                cost  =(errors **2).sum()/2
                self.cost_.append(cost)
            return self
    
    
        def net_input(self,X):
            return  np.dot(X,self.w_[1:]+self.w_[0])
    
        def activation(self,X):
            return self.net_input(X)
    
        def predict(self,X):
            return np.where(self.activation(X)>=0,1,-1)
    
    
    import pandas as pd
    
    file = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'
    
    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_region(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, resolution))
        Z =classifier.predict(np.array([xx1.ravel(),xx2.ravel()]).T)
        print (xx1.ravel())
        print(xx2.ravel())
        print Z
        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)
    
    ada = AdalineGd(eta=0.0001,n_iter=100)
    ada.fit(X,y)
    plot_decision_region(X,y,classifier=ada)
    plt.xlabel('huajingchang')
    plt.ylabel('huabanchang')
    plt.legend(loc='upper left')
    plt.show()
    
    
    plt.plot(range(1,len(ada.cost_)+1),ada.cost_,marker ='o')
    plt.xlabel('epochs')
    plt.ylabel('sum-squard-error')
    plt.show()