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

正在回答

3 回答

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

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: 输入样本向量
        :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()


3 回复 有任何疑惑可以回复我~
# 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()


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

举报

0/150
提交
取消

有木有完整的代码

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