2.基于感知机的二分类问题

import numpy as np
import matplotlib.pyplot as plt
np.random.seed(0)
Num = 100
x_1 = np.random.normal(6,1,size=(Num))
x_2 = np.random.normal(3,1,size=(Num))
y  = np.ones(Num)*-1
c_0 = np.array([x_1,x_2,y])    # -1分类
x_1 = np.random.normal(3,1,size=(Num))
x_2 = np.random.normal(6,1,size=(Num))
y  = np.ones(Num)
c_1 = np.array([x_1,x_2,y])    # 1分类
c_0 = c_0.T
c_1 = c_1.T
plt.scatter(c_1[:,0],c_1[:,1])
plt.scatter(c_0[:,0],c_0[:,1],marker='+')
<matplotlib.collections.PathCollection at 0x24b24683988>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W7G4pY4f-1588587740917)(output_5_1.png)]

# 建立数据集,分训练集和测试集
All_data = np.concatenate((c_1,c_0))
print(All_data.shape)
np.random.shuffle(All_data)
train_data_X = All_data[:150,:2]  # [)
train_data_y = All_data[:150,-1].reshape(150,1)
test_data_X = All_data[150:,:2]
test_data_y = All_data[150:,-1].reshape(50,1)
print(train_data_X.shape,train_data_y.shape,test_data_X.shape,test_data_y.shape)
(200, 3)
(150, 2) (150, 1) (50, 2) (50, 1)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QXJiyX2O-1588587740921)(attachment:7e9b90ac-01e7-4694-a16b-9a7094372ac5.png)]

W = np.zeros((2,1))
T = 100#最大迭代次数
k = 0
train_data = np.concatenate((train_data_X,train_data_y),axis=1)
train_data.shape
#train_data[0][-1]
(150, 3)
# 训练模型
for t in range(T):
    np.random.shuffle(train_data)
    for i in range(len(train_data)):
        # 选择第i个样本
        pred = np.dot(W.T,(train_data[i][-1]*train_data[i][:2]).reshape(2,1))[0,0]
        if pred <= 0:
            W = W + (train_data[i][-1]*train_data[i][:2]).reshape(2,1)
W
array([[-43.38640304],
       [ 47.145247  ]])
plt.scatter(c_1[:,0],c_1[:,1])
plt.scatter(c_0[:,0],c_0[:,1],marker='+')
x = np.arange(10)
y = -(W[0]*x)/W[1]
plt.plot(x,y)
[<matplotlib.lines.Line2D at 0x24b2474c208>]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rNxykPGB-1588587740925)(output_11_1.png)]


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

该用户没有用户名

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

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

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

打赏作者

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

抵扣说明:

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

余额充值