文章目录

  • MLP
    • MLP的向量形式:
    • MLP的损失函数:
    • 感知机求∂L/∂w:
  • 实现
  • 验证
  • 辅助函数

MLP

MLP的向量形式:

MLP的损失函数:

感知机求∂L/∂w:

实现

import numpy as np
import matplotlib.pyplot as pltclass MultiPerceptron:def __init__(self):# the shape of w :(n)self._w = Nonedef fit(self, x, y, lr=1e-3, epoch=1000):x = np.asarray(x, np.float32)y = np.asarray(y, np.float32)# (x_features_num,1)self._w = np.zeros([x.shape[1],y.shape[1]])for _ in range(epoch):# 注意这里的实现是x点成wy_pred = x.dot(self._w)# acturly it is dL/dwdw = 2*x.T.dot(y_pred - y)self._w -= lr*dwdef predict(self,x):y_pred = np.asarray(x, np.float32).dot(self._w)return np.argmax(y_pred, axis=1).astype(np.float32)

验证

# x =(200,2) ,y = (200,5) y is one-hot vector
x, y = gen_five_clusters()
# now y is a class label
label = np.argmax(y, axis=1)
perceptron = MultiPerceptron()
perceptron.fit(x,y)
visualize2d(perceptron,x,label,draw_background=True)
print("Acc: {:8.6} %".format((perceptron.predict(x) == label).mean()*100))

辅助函数

import numpy as np
import matplotlib.pyplot as pltfrom math import pidef gen_five_clusters(size=200):x = np.random.randn(size) * 2y = np.random.randn(size) * 2z = np.full(size, -1)mask1, mask2 = x + y >= 1, x + y >= -1mask3, mask4 = x - y >= 1, x - y >= -1z[mask1 & ~mask4] = 0z[mask1 & mask3] = 1z[~mask2 & mask3] = 2z[~mask2 & ~mask4] = 3z[z == -1] = 4one_hot = np.zeros([size, 5])one_hot[range(size), z] = 1return np.c_[x, y].astype(np.float32), one_hotdef visualize2d(clf, x, y, padding=0.2, draw_background=False):axis, labels = np.array(x).T, np.array(y)nx, ny, padding = 400, 400, paddingx_min, x_max = np.min(axis[0]), np.max(axis[0])y_min, y_max = np.min(axis[1]), np.max(axis[1])x_padding = max(abs(x_min), abs(x_max)) * paddingy_padding = max(abs(y_min), abs(y_max)) * paddingx_min -= x_paddingx_max += x_paddingy_min -= y_paddingy_max += y_paddingdef get_base(nx, ny):xf = np.linspace(x_min, x_max, nx)yf = np.linspace(y_min, y_max, ny)n_xf, n_yf = np.meshgrid(xf, yf)return xf, yf, np.c_[n_xf.ravel(), n_yf.ravel()]xf, yf, base_matrix = get_base(nx, ny)z = clf.predict(base_matrix).reshape([nx, ny])n_label = len(np.unique(labels))xy_xf, xy_yf = np.meshgrid(xf, yf, sparse=True)colors = plt.cm.rainbow([i / n_label for i in range(n_label)])[labels.astype(np.int)]plt.figure()if draw_background:plt.pcolormesh(xy_xf, xy_yf, z, cmap=plt.cm.Paired)else:plt.contour(xf, yf, z, c='k-', levels=[0])plt.scatter(axis[0], axis[1], c=colors)plt.xlim(x_min, x_max)plt.ylim(y_min, y_max)plt.show()

机器学习:多层感知机原理及实现相关推荐

  1. 机器学习-分类之多层感知机原理及实战

    多层感知机(Multi-Layer Perceptron) 简介 生物神经网络具有相互连接的神经元,神经元带有接受输入信号的树突,然后基于这些输入,它们通过轴突向另一个神经元产生输出信号.使用人工神经 ...

  2. 机器学习--多层感知机、卷积神经网络、循环神经网络

    目录 一.多层感知机 二.卷积神经网络 三.循环神经网络 总结 一.多层感知机 手工提取特征(用人的知识进行) -->  神经网络来提取特征. 神经网络(可能更懂机器学习)来提取 可能对后面的线 ...

  3. DeepLearning tutorial(3)MLP多层感知机原理简介+代码详解

    FROM:http://blog.csdn.net/u012162613/article/details/43221829 @author:wepon @blog:http://blog.csdn.n ...

  4. DL之Perceptron:Perceptron感知器(感知机/多层感知机/人工神经元)的简介、原理、案例应用(相关配图)之详细攻略

    DL之Perceptron:Perceptron感知器(感知机/多层感知机/人工神经元)的简介.原理.案例应用(相关配图)之详细攻略 目录 Perceptron的简介.原理 多层感知机 实现代码 案例 ...

  5. MLP多层感知机(人工神经网络)原理及代码实现

    一.多层感知机(MLP)原理简介 多层感知机(MLP,Multilayer Perceptron)也叫人工神经网络(ANN,Artificial Neural Network),除了输入输出层,它中间 ...

  6. 机器学习 | MATLAB实现MLP多层感知机newff参数设定(上)

    机器学习 | MATLAB实现MLP多层感知机newff参数设定(上) 目录 机器学习 | MATLAB实现MLP多层感知机newff参数设定(上) 基本介绍 程序设计 参考资料 基本介绍 newff ...

  7. 机器学习 | MATLAB实现MLP多层感知机newff参数设定(下)

    机器学习 | MATLAB实现MLP多层感知机newff参数设定(下) 目录 机器学习 | MATLAB实现MLP多层感知机newff参数设定(下) 基本介绍 程序设计 参考资料 基本介绍 newff ...

  8. 【ML】基于机器学习的心脏病预测研究(附代码和数据集,多层感知机模型)

    写在前面: 首先感谢兄弟们的订阅,让我有创作的动力,在创作过程我会尽最大努力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌. 之前创作过心脏病预测研究文章如下: [ML]基于机器学 ...

  9. 机器学习 | MATLAB实现MLP多层感知机模型设计

    机器学习 | MATLAB实现MLP多层感知机模型设计 目录 机器学习 | MATLAB实现MLP多层感知机模型设计 基本介绍 模型描述 模型设计 程序设计 学习总结 参考资料 基本介绍 多层感知器( ...

最新文章

  1. 安恒赛php_安恒11月月赛周周练writeup
  2. vim在退出时,处理隐藏缓冲区的方式
  3. 创建型模式:工厂模式(简单工厂+工厂方法+抽象工厂)
  4. 国际化在zuul中实现
  5. 这里有 40 本 Python 书等你来领取!(任选)
  6. typescript get方法_使用 Typescript 构建类型安全的 Websocket 应用
  7. 汇编语言 把最大值放入max 把最小值放入min_Excel求最大值地球人都知道,那要求出第2、第3、第N大值呢?...
  8. 看几个源码,自己多做项目了!
  9. tomcat启动很慢的解决方式
  10. 一次搭建Spark集群(standalone、yarn、高可用)
  11. [AD19] 使用元器件向导为元件绘制PCB封装
  12. 数学建模——相关系数(4)——斯皮尔曼相关系数(spearman)
  13. yolo算法python代码_python通过yolo算法识别图片中的对象
  14. Centos7通过oh-my-zsh安装powerlevel9k和powerlevel10k
  15. python在excel中插入折线图_Python-使用XlsxWriter模块在Excel工作表中绘制折线图
  16. alanwang[GDOU] 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入
  17. YOLOV3预选框验证
  18. HTML5小白长成记(5) ---img嵌入图片
  19. 【树莓派】刷机、基础配置及多种方式登录
  20. android使用Bitmap将jpg转化为灰度的bmp格式图片

热门文章

  1. tp5 sum某个字段相加得到总数
  2. 互联网基础知识_数字化工业网络—工业互联网的网络技术.pptx
  3. mysql tomcat idea操作_IntelliJ IDEA + Tomcat + RestFul + Mysql打造属于自己的服务器
  4. C语言中兴面试编程题,中兴一套笔试题及部分答案
  5. 电视安卓和linux系统软件,安卓和LINUX系统哪种更适合网络电视机顶盒?
  6. 环境复制_PostgreSQL热备之流复制环境搭建以及常见问题处理
  7. nginx 查看 $1,$2,$3
  8. cmd窗口设置charset
  9. as3调用java_[AS3]AMF3+JAVA的调用范例
  10. foreach用法_25个你不得不知道的数组reduce高级用法