感知器算法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# 输入二维数组的行数和列数
print("二维数组的行数")
n = int(input())
print("二维数组的列数")
m = int(input())
# 初始化二维数组
line = [[0] * m] * n
# 输入二维数组,同行数字用空格分隔,不同行则用回车换行
print("输入二维数组,同行数字用空格分隔,不同行则用回车换行")
for i in range(n):
line[i] = input().split(" ")
line[i] = [int(j) for j in line[i]]
# 打印二维数组
print("你输入的二维数组为")
print(line)

# line = [[0, 0], [0, 1], [1, 0], [1, 1]]

# r = [[0, 0], [0, 1], [1, 0], [1, 1]]

# 需要处理的数据
r = line
# 类别函数
type = [1, 1, 2, 2]
# 训练样本分量增广化及符号规范化
for i in range(len(r)):
r[i].append(1)

# length = 0
for i in range(len(r)):
length = len(r[i])
if type[i] == 2:
for j in range(len(r[i])):
r[i][j] = -1 * r[i][j]

k = 0
p = 1
w = [[1, 1, 1]]
l = 0
# 计数
count = 0

while 1:
if count == len(r):
print("已经得到对应的w值")
print(w[len(w) - 1 - 4])
break
else:
# print("失败")
count = 0
for j in range(len(r)):
l = l % len(type)
num = 0
for i in range(length):
num = num + w[k][i] * r[l][i]
# print(num)
# 按照规则添加w
if num > 0:
# 标记这个已经分好
count = count + 1
w.append(w[k])
print("当k=" + str(k + 1) + "时的增广权矢量")
print(w[k])
else:
num1 = [0] * length
for i in range(length):
num1[i] = w[k][i] + r[l][i] * p
print("当k=" + str(k + 1) + "时的增广权矢量")
print(num1)
w.append(num1)
l = l + 1
k = k + 1
print("这一轮中被错分的样本数:")
print(len(r) - count)
print("------------------------------------")
相关文章
评论
分享
  • 最大最小距离法

    最大最小距离法: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585...

    最大最小距离法
  • Windows下neo4j的安装

    neo4j是一个高性能的NOSQL图形数据库,他将结构化数据存储在网络上而不是表中。他是一个嵌入式的、基于磁盘的、具备完全的事物特性的Java持久化引擎,neo4j也可看做是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。——百度...

    Windows下neo4j的安装
  • java实现类FTP程序

    继承程序设计实验,实验说明如图所示: 集成程序设计实验 TCP实现首先说明下基于TCP实现的功能: (1)能够实现多用户的同时连接 (2)用户执行成功的命令会在其他用户终端上显式说明 (3)当前用户数以及在线情况会在服务端实时显...

    java实现类FTP程序
  • Java中的流

    流是个抽象的概念,是对输入输出设备的抽象,Java程序中,对于数据的输入输出都是以流的方式进行。设备可以是文件、网络、内存等。 I/O字节流InputStream字节输入流OutputStream字节输出流用于以字节的形式读取和写入数...

    Java中的流
  • eclipse使用

    Eclipse是一个开放源代码的、基于Java的可拓展开发平台。 常用快捷键 快捷键 作用 alt+/ 代码快速补全 ctrl+1 快速修复 ctrl+shift+f 代码格式化 ctrl+d 删除一行代码 ...

    eclipse使用
  • Python网络编程

    网络编程从大的方面说就是对信息的发送到接收,中间传输为物理线路的作用。 它的含义是使用套接字来达到进程间的通信。套接字可以看成是两个网络应用程序进行通信时,各自通信连接中的一个端点。 套接字Socket=(IP地址:端口号) 端口号是...

    Python网络编程
  • Centos安装

    虚拟机下载及安装1.进入VMware官网,转到下载页面 https://my.vmware.com/cn/web/vmware/info/slug/desktop_end_user_computing/vmware_workstati...

    Centos安装
  • JavaEE开发准备

    个人电脑硬件配置: Windows 10 64位家庭中文版 8G运行内存 Intel(R) Core(TM) i5-7300HQ CPU @ 2.50GHz 1.Java JDK安装及配置(1)下载和安装首先进入oracle网站中Ja...

    JavaEE开发准备
  • Python进阶学习

    假期补习补习Python,防止以后用到炸锅。 闭包在Python语言中,一切皆对象。 闭包:一个函数定义中引用了函数外定义的变量,并且该函数可以在其定义环境外被执行。 闭包 = 函数 + 环境变量 123456789101...

    Python进阶学习
  • 推荐算法研究(一)

    推荐算法大体分为3类:基于系统过滤的推荐、基于内容的推荐、混合推荐 1.基于协同过滤的推荐系统(Collaborative Filtering)使用行为数据,利用集体智慧来推荐。属于有监督学习。基于用户的协同过滤(找和你兴趣相似的人所...

    推荐算法研究(一)
Please check the comment setting in config.yml of hexo-theme-Annie!