感知机
来源:互联网 发布:java项目开发流程图 编辑:程序博客网 时间:2024/05/01 10:04
机器学习的方式
监督学习,非监督学习,增强学习
感知机
- 感知机接收一个样本输入x,然后将其和权重w结合,计算网络输入z。z接着被传递给激活函数,产生一个二分类输出-1或1作为预测的样本类别。在整个学习阶段,输出用于计算预测错误率和更新权重参数。
- 感知机算法仅在两个类别确实线性可分并且学习率充分小的情况下才能保证收敛。如果两个类别不能被同一线性决策界分开,我们可以设置最大训练集迭代次数或者可容忍的错误分类样本数来停止算法的学习过程。
使用python实现感知机算法
定义一个感知机接口作为python类,类中的主要方法主要有初始化方法,fit方法和predict方法
# -*- coding: utf-8 -*-"""Spyder EditorThis is a temporary script file."""import numpy as npclass 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): return np.dot(X,self.w_[1:]) +self.w_[0] def predict(self,X): return np.where(self.net_input(X)>=0.0,1,-1)
有了以上的代码实现,我们可以初始化一个新的Perceptron对象,并且对学习率eta和迭代次数n_iter赋值,fit方法先对权重参数初始化,然后对训练集中每一个样本循环,根据感知机算法对权重进行更新。类别通过predict方法进行预测。除此之外,self.errors_还记录了每一轮中误分类的样本数,有助于我们接下来分析感知机的训练过程。
使用lris数据集检验感知机模型
>>> import pandas as pd>>> df = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data', header=None)>>> df.tail() 0 1 2 3 4145 6.7 3.0 5.2 2.3 Iris-virginica146 6.3 2.5 5.0 1.9 Iris-virginica147 6.5 3.0 5.2 2.0 Iris-virginica148 6.2 3.4 5.4 2.3 Iris-virginica149 5.9 3.0 5.1 1.8 Iris-virginica>>> import matplotlib.pyplot as plt>>> import numpy as np>>> y = df.iloc[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')<matplotlib.collections.PathCollection object at 0x1302b3710>>>> plt.scatter(X[50:100, 0], X[50:100, 1],color='blue', marker='x', label='versicolor')<matplotlib.collections.PathCollection object at 0x1302cd1d0>>>> plt.xlabel('petal length')<matplotlib.text.Text object at 0x112053d10>>>> plt.ylabel('sepal length')<matplotlib.text.Text object at 0x119615bd0>>>> plt.legend(loc='upper left')<matplotlib.legend.Legend object at 0x1302fc890>>>> plt.show()>>>
最终出现的效果图如下:
训练感知机模型
阅读全文
0 0
- 感知机
- 感知机
- 感知机
- 感知机
- 感知机
- 感知机
- 感知机
- 感知机
- 感知机
- 感知机
- 感知机
- 感知机
- 感知机
- 感知机
- 感知机
- 感知机
- 感知机
- 感知机
- 微擎同步微信公众号图文,缩略图不显示,火狐显示【因其本身有错无法显示】 解决方法
- 并发集合之CopyOnWriteArryList
- Date类的常用方法及Date和String的相互转换的Util工具类
- 慢思考
- HTML+CSS进阶学习摘录(Display属性)(三)
- 感知机
- python虚拟环境
- java中的组合关系
- 【Dubbo分布式服务框架】5.传统测试工程的搭建1
- (27)模块方法模式(理解抽象、继承和final)
- 安卓开发点击CheckBox显示明文密码
- 洛谷 P3478 [POI2008]STA-Station(bzoj P1131 [POI2008]STA-Station)
- 杂项
- 计算机位运算