单层感知机

是否可以理解(int(i[2]+0.5),0,0) ?
学习网络数据集的调用
学习numpy的array升维、组合、切片、乱序
学习plt的叠加绘制、标注、添加颜色
Python代码实现:

# SLP
# Cao Jinhao
# 20240719
from sklearn.datasets import load_iris
import numpy as np
import random
import matplotlib.pyplot as plt
iris = load_iris()
data_n4  = iris['data']
target_n = iris['target']
size = target_n.size
target_n1 = target_n.reshape(size, 1)
test_n5 = np.concatenate((data_n4, target_n1), axis=1)
test_m3 = [i[-3:] for i in test_n5 if i[-1] != 2]
test_m3 = [np.append(np.delete(i, -1), -1) if i[-1] == 0 else i for i in test_m3]
random.shuffle(test_m3)
test_m3 = np.array(test_m3)
x = test_m3[:, 0]
y = test_m3[:, 1]
xmin = min(x)
xmax = max(x)
for i in test_m3:
    plt.scatter(i[0], i[1], c=(int(i[2]+0.5),0,0)) 
plt.title('SLP')
plt.xlabel('x')
plt.ylabel('y')
w = [1, 1, 0]
step = 0.06
count = 0
for i in test_m3:
    xy1 = np.array([i[0], i[1], 1])
    if i[2]*np.dot(w, xy1) < 0:
        count += 1
        w += step*i[2]*xy1
        ymin = -w[0]*xmin-w[2]/w[1]
        ymax = -w[0]*xmax-w[2]/w[1]
        plt.plot([xmin, xmax], [ymin, ymax])
        plt.text(xmax, ymax, f'iteration={count}', verticalalignment='bottom')
        plt.draw()
        plt.pause(0.1)
plt.show()

二分类结果

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hanssjtuer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值