单层神经网络线性分类山鸢尾和杂色鸢尾

阅读: 评论:0

单层神经网络线性分类山鸢尾和杂色鸢尾

单层神经网络线性分类山鸢尾和杂色鸢尾

选择花萼长度 花瓣长度作为特征,使用梯度下降,求取和方差的最小值,使得误差最小

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import matplotlib
lors import ListedColormap#显示训练数据
def plot_decision_regions(x,y,classifier,resolution=0.02):marker = ('s','x','o','v')colors = ('red','blue','lightgreen','gray','cyan')cmap = ListedColormap(colors[:len(np.unique(y))])#np.unique 去除重复的数据#获取花萼长度 花瓣长度的最小值和最大值x1_min,x1_max = x[:,0].min()-1,x[:,0].max()x2_min,x2_max = x[:,1].min()-1,x[:,1].max()#向量转二维矩阵                矩阵行                              矩阵列# 输入的x,y,就是网格点的横纵坐标列向量(非矩阵)   -----》 x,y组合成网格点# 输出的X,Y,就是坐标矩阵xx1,xx2 = np.meshgrid(np.arange(x1_min,x1_max,resolution),np.arange(x2_min,x2_max,resolution))#返回list,有两个元素,第一个元素是X轴的取值,第二个元素是Y轴的取值z = classifier.predict(np.array([xx1.ravel(),xx2.ravel()]).T) #ravel()矩阵转数组z = z.reshape(xx1.urf(xx1,xx2,z,alpha=0.4,cmap=cmap)    #等高图print(len(np.arange(x1_min,x1_max,resolution)))#185print(len(np.arange(x2_min,x2_max,resolution)))#255print('xx1shape:',xx1.shape)                   #(255, 185)print('xx2shape:',xx2.shape)                   #(255, 185)print('zshape:', z.shape)                      #(255, 185)    [(x10,x20),(x11,x20),(x13,x20)...]print(xx2)print('z:',z)plt.xlim(xx1.min(),xx1.max())plt.ylim(xx2.min(),xx2.max())print(np.unique(y))            #[-1,1]#绘制训练数据的散点图for idx,label in enumerate(np.unique(y)):print(idx,label)print(x)plt.scatter(x=x[y == label,0],y = x[y == label,1],alpha=0.8,c=cmap(idx),marker=marker[idx],label=label)#x:特征1  y:特征2class AdalineGD(object):'''eta     float  学习效率 0-1   越小越精确n_iter  int    对训练数据进行学习改进次数w_      一维向量 权重数值error_  每次迭代改进时,网络对数据进行错误判断的次数'''def __init__(self,eta=0.01,n_iter=50):a = etaself.n_iter = n_iterdef fit(self,X,y):'''X 二维数组 【n_sample,n_features】n_sample  X 中含有训练数据的条目features  含有4个数据的一维向量,表示一条训练条目y:一维向量 用于存贮每一训练条目对应的正确分类y = w1*x1+w2*x2+W0*1'''self.w_ = np.zeros(1+X.shape[1])st = []   #训练的次数st_ = []   #损失for i in range(self.n_iter):output = self_input(X)  #输入数据加权 , 加w0#output = w0 + w1*x1 + ... +wmxm# print(output.shape)# print(y.shape)errors = (y - output)          #预测值与标签的误差self.w_[1:] += a *X.T.dot(errors)self.w_[0] += a * errors.sum()cost = (errors ** 2).sum()/2.0 #损失函数:误差平方和的均值st_.append(cost)if cost > 5:                   #误差平方和的均值 >5,累计加一if st) == st.append(1)st.st[-1]+1)else:if st) == st.append(1)st.st[-1])#加权求和def net_input(self,x):return np.dot(x,self.w_[1:])+self.w_[0]#激活函数def activation(self,x):return self_input(x)#预测def predict(self,x):print('predict:',x)return np.where(self.activation(x) >= 0 ,1,-1)if __name__ == '__main__':# 数据集  .data# 花萼长度 花萼宽度 花瓣长度 花瓣宽度 类别(Iris Setosa(山鸢尾)、Iris Versicolour(杂色鸢尾)、Iris Virginica(维吉尼亚鸢尾))#加载数据file = './datasets/'df = pd.read_csv(file, header=None)      # 第一行不是数据说明,是真实数据df.head()#提取特征数据,标签y = df.loc[0:99, 4].values               # 前100行的第5列print('y:',y.shape)print(y)y = np.where(y == 'Iris-setosa', 1, -1)  # np.where(条件, x, y)  条件为True,输出x,不满足输出yx = df.iloc[0:100, [0, 2]].values        # 获取花萼长度 花瓣长度特征plt.scatter(x[:100, 0], x[:100, 1], color='red', marker='o', label='setosa')  # marker形状  花萼长度为横轴,花瓣长度为纵轴plt.xlabel('x1')plt.ylabel('x2')icks(rotation=45)#倾斜45plt.title('训练数据')plt.legend(loc='upper left')#系统字体# matplotlib.matplotlib_fname()  # 将会获得matplotlib包所在文件夹# 指定默认字体Params['font.sans-serif'] = ['SimHei']Params['font.family'] = 'sans-serif'# 解决负号'-'显示为方块的问题Params['axes.unicode_minus'] = Falseplt.show()#训练ada = AdalineGD(eta=0.0001,n_iter=1000)ada.fit(x,y)                              #训练plot_decision_regions(x,y,classifier=ada) #classifier 分类器plt.show()# 错误的次数plt.title('错误的次数')plt.plot(range(1,st)+1),st,marker='o')plt.show()#误差平方和plt.title('误差')plt.plot(range(1,st_)+1),st_,marker='o')plt.show()

本文发布于:2024-02-02 13:55:44,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170685334344249.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:鸢尾   神经网络   杂色   单层   线性
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23