BIOGEEKER BIOGEEKER
  • 首页
  • AIGC
  • 理想国
  • 生信
  • 资料
    • Linux软件
    • Win软件
    • Mac软件
  • 关于BIOGEEKER
首页 › 生活 › 极客 › 机器学习---感知机的简单实现

机器学习---感知机的简单实现

HarryPotter
6 年前

这里放个机器学习中的感知机的实现方法,虽然感知机相比支持向量机(SVM)还有差距,但是理解这种超平面分类方法也是不错的长进。如果想进一步了解该算法的数学思想,参考李航的《统计学习方法》。

机器学习---感知机的简单实现-BIOGEEKER

概念阐释:

  • 感知机(perceptron)是二分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,取+1和-1两种值。
  • 感知机为判别模型,用来将输入空间中的实例划分为正负两类的分离超平面。
  • 假设训练数据集是线性可分的,感知机学习的目标是求得一个能够将训练集正例点和负例点完全正确分开的分离超平面。

感知机算法:

感知机学习算法是误分类驱动的,具体采用随机梯度下降法。其目的就是极小化损失函数(其实几乎所有分类模型都是为了减小损失函数,提高分类准确度)。需要注意的是:极小化的过程不是一次使所有误分类点梯度下降,而是一次随机选取一个误分类点,使其梯度下降。

算法实现:(Python)

#!/usr/bin/python2.7
# -*- coding: utf-8 -*-

#*************************************************************************
# > File Name: Perceptron.py
# > Author: HarryPotter
# > Created Time: 2019年08月30日 星期五 13时59分51秒
#*************************************************************************

import pdb
import sys
import numpy as np


class Perceptron(object):
    def __init__(self, data, label):
         self.w = np.array([0, 0])
         self.b = 0
         self.data = data
         self.label = label

    def __call(self, s, l):
         ''' s -> sample eg. [3,3]; l -> label eg. +1
         '''
         return (sum(s * self.w) + self.b) * l


     def __update(self, s, l):
         ''' w -> w + l * s; b -> b + l
         '''
         self.w += l * s
         self.b += l

     def training(self):
         finish = False
         sam_num = len(self.data)

         while (not finish):
             for i in xrange(sam_num):
                 if self.__call(self.data[i], self.label[i]) <= 0:
                     print self.w, self.b
                     self.__update(self.data[i], self.label[i])
                     break

                 if i == sam_num-1:
                     print self.w, self.b
                     finish = True

         return

if __name__ == '__main__':
     data = np.array([ [3,3], [4,3], [1,1] ])
     label = np.array([1,1,-1])

     classify = Perceptron(data, label)
     classify.training()

This work by Jimmy is licensed under CC BY 4.0

机器学习生信
0
0
华为云OCR文字识别
上一篇
Linux下Shadowsocks安装
下一篇

评论 (0)

取消
    发表评论

HarryPotter

3
文章
0
评论
5
获赞

随机推荐

【关于AIGC的100点思考-013】SORA技术报告深度解读(一)
1 年前
Issue 01 写作风格指南
11 月前
献给永远的——大粉乐队
1 年前

推荐标签

AIGC chatgpt Midjourney OpenAI 服务器 机器学习 毛球 生信 生活方式 电台 睡前消息 硬件 音乐 音乐好朋友
  • 首页
  • AIGC
  • 理想国
  • 生信
  • 资料
  • 关于BIOGEEKER
Copyright © 2017-2025 BIOGEEKER. Designed by nicetheme. 京公网安备11010502055329号 京ICP备18047671号
  • AIGC10
  • chatgpt8
  • 毛球3
  • 生信3
  • 生活方式3
  • 首页
  • AIGC
  • 理想国
  • 生信
  • 资料
    • Linux软件
    • Win软件
    • Mac软件
  • 关于BIOGEEKER