python实现神经网络感知器算法
作者:海峰-清欢 发布时间:2021-03-06 11:23:39
标签:python,神经网络,感知器
现在我们用python代码实现感知器算法。
# -*- coding: utf-8 -*-
import numpy as np
class Perceptron(object):
"""
eta:学习率
n_iter:权重向量的训练次数
w_:神经分叉权重向量
errors_:用于记录神经元判断出错次数
"""
def __init__(self, eta=0.01, n_iter=2):
self.eta = eta
self.n_iter = n_iter
pass
def fit(self, X, y):
"""
输入训练数据培训神经元
X:神经元输入样本向量
y: 对应样本分类
X:shape[n_samples,n_features]
x:[[1,2,3],[4,5,6]]
n_samples = 2 元素个数
n_features = 3 子向量元素个数
y:[1,-1]
初始化权重向量为0
加一是因为前面算法提到的w0,也就是步调函数阈值
"""
self.w_ = np.zeros(1 + X.shape[1])
self.errors_ = []
for _ in range(self.n_iter):
errors = 0
"""
zip(X,y) = [[1,2,3,1],[4,5,6,-1]]
xi是前面的[1,2,3]
target是后面的1
"""
for xi, target in zip(X, y):
"""
predict(xi)是计算出来的分类
"""
update = self.eta * (target - self.predict(xi))
self.w_[1:] += update * xi
self.w_[0] += update
print update
print xi
print self.w_
errors += int(update != 0.0)
self.errors_.append(errors)
pass
def net_input(self, X):
"""
z = w0*1+w1*x1+....Wn*Xn
"""
return np.dot(X, self.w_[1:]) + self.w_[0]
def predict(self, X):
return np.where(self.net_input(X) >= 0, 1, -1)
if __name__ == '__main__':
datafile = '../data/iris.data.csv'
import pandas as pd
df = pd.read_csv(datafile, header=None)
import matplotlib.pyplot as plt
import numpy as np
y = df.loc[0:100, 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("hblength")
# plt.ylabel("hjlength")
# plt.legend(loc='upper left')
# plt.show()
pr = Perceptron()
pr.fit(X, y)
其中数据为
控制台输出为
你们跑代码的时候把n_iter设置大点,我这边是为了看每次执行for循环时方便查看数据变化。
来源:http://blog.csdn.net/u013692888/article/details/76999252
0
投稿
猜你喜欢
- 之前在比赛的时候需要用Python实现灰色关联分析,从网上搜了下只有实现两个列之间的,于是我把它改写成了直接想Pandas中的计算工具直接计
- 阅读上一篇:打造设计你自己的字体 Ⅱ永远都在寻觅字体设计的灵感。夏天过后,我买了一套便宜的书法钢笔,说服自己,它会让我的鸡爬字产生脱胎换骨的
- 本文研究的主要是Django权限机制的相关内容,具体如下。1. Django权限机制概述权限机制能够约束用户行为,控制页面的显示内容,也能使
- 本文介绍基于Python语言arcpy模块,实现栅格影像图层建立与多幅遥感影像数据批量拼接(Mosaic)的操作。首先,相关操作所需具体代码
- 如下所示:# -*- coding:utf-8 -*-import sysreload(sys)sys.setdefaultencoding
- SQL(结构化查询语言)就是负责与ANSI维护的数据库交互的标准。最新的版本是SQL-99,还有一个新标准SQL-200n尚处于制定过程中。
- 本文实例为大家分享了python实现图片转换成素描和漫画格式的具体代码,供大家参考,具体内容如下原图图片转换后的成果源码# -*- codi
- 显示有限的接口到外部当发布python第三方package时,并不希望代码中所有的函数或者class可以被外部import,在__init_
- 前言Laravel是一个简单优雅的PHP Web开发框架,可以将开发者从意大利面条式的代码中解放出来,通过简单、高雅、表达式语法开发出很棒的
- 一、背景我们在进行代码调试时,通常使用两种方式。print 输出调试的内容或者标识通过断点调试debug但是我想知道代码的中间的每一行程序运
- 1、删除Oracal在注册表中的主项:regedit.exe->LocalMachine->Software->Oracl
- 合并两个没有共同列的dataframe,相当于按行号求笛卡尔积。最终效果如下以下代码是参考别人的代码修改的:def cartesian_df
- 创建Dataframe主要是使用pandas中的DataFrame函数,其核心就是第一个参数:data,传入原始数据,因此我们可以据此给出六
- 在seclists中看到一个很惊人的thread:http://seclists.org/oss-sec/2012/q2/493MySQL爆
- 大家都知道,Matplotlib 是众多 Python 可视化包的鼻祖,也是Python最常用的标准可视化库,其功能非常强大,同时也非常复杂
- <% Function ReplaceUrl2(HTMLstr) Dim n,st
- 这篇文章主要是用PHP函数实现数字与文字分页,具体实现步骤就不罗嗦了,直接上代码/** * * @param $_sql * @param
- 问题:如何把具有相同字段的记录删除,只留下一条。 例如:表test里有id,name字段,如果有name相同的记录只留下一条,
- 简单来说python的内存管理机制有三种1)引用计数2)垃圾回收3)内存池接下来我们来详细讲解这三种管理机制1,引用计数:引用计
- 1.概述pyecharts 是百度开源的,适用于数据可视化的工具,配置灵活,展示图表相对美观,顺滑。2.安装python3环境下的安装:pi