python3实现感知机

参考统计学习方法的算法简单实现了感知机算法

发到网上给大家参考

import pandas as pd
import numpy as np
def sumarray(array):
	n = 0
	for i in array:
		n+=i
	return n
def train(input_vec,labels):   #训练感知机
	w = [0,0]
	b = 0
	n = 0
	learn = 1
	while n != len(input_vec):
		n = 0
		for i in range(len(input_vec)):
			if labels[i]*(sumarray(np.array(w)*np.array(input_vec[i]))+b) > 0:
				n+=1
			else:
				w = list(np.array(w) +learn*labels[i]*np.array(input_vec[i]))
				b = b +learn*labels[i]
				print(w)
	return w,b
def predict(input_vec,w,b):      #预测函数
	plabels = []
	for i in input_vec:
		print(i)
		if sumarray(np.array(w)*np.array(i)) +b >0:
			plabels.append(1)
		else:
			plabels.append(-1)
	return plabels
if __name__ == '__main__':
	input_vec = [[3,3],[4,3],[1,1]]
	labels = [1,1,-1]
	w,b = train(input_vec,labels)
	print(predict(input_vec,w,b))

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值