05_样本分类实现

在这里插入图片描述


博文配套视频课程:24小时实现从零到AI人工智能


随机生成一条直线

如果函数中只有一行代码,可以采用lambda表达式来实现

import numpy as np
import matplotlib.pyplot as plt

# 生成一条随机的直线
x = np.linspace(0, 1, 2)
print(x)
# 生成直线的方程: y = w * x + b
w = np.random.rand()
b = np.random.rand()
print(f'w={w},b={b}')
fn = lambda x: w * x + b
# 通过可视化来创建直线
plt.plot(x, fn(x), 'r')
plt.show()

直线效果图如下

在这里插入图片描述

通过直线对样本进行分类

默认约定样本在直线以下的对应的yn设置为-1,样本点在直线以上的对应的yn设置为1,下一章节会通过感知器来对样本点进行预测分类

N = 100
xn = np.random.rand(N, 2)
# 存储每个样本的类别 [1,-1]
yn = np.zeros([N, 1])
# 通过之前的直线把样本分成两类
for i in range(N):
    if (fn(xn[i, 0]) >= xn[i, 1]):
        # 当前的x[i]的点在直线的下方
        yn[i] = -1
        plt.plot(xn[i,0],xn[i,1],'rx',markersize=8)
    else:
        yn[i] = 1
        plt.plot(xn[i, 0], xn[i, 1], 'go', markersize=8)
plt.show()

样本点的分类操作

在这里插入图片描述

完整代码如下

import numpy as np
import matplotlib.pyplot as plt

# 生成一条随机的直线
x = np.linspace(0, 1, 2)
print(x)
# 生成直线的方程: y = w * x + b
w = np.random.rand()
b = np.random.rand()
print(f'w={w},b={b}')
fn = lambda x: w * x + b
# 通过可视化来创建直线
plt.plot(x, fn(x), 'r')

# 通过直线把生成的100个点分成两个类别
N = 100
xn = np.random.rand(N, 2)
# 存储每个样本的类别 [1,-1]
yn = np.zeros([N, 1])
# 通过之前的直线把样本分成两类
for i in range(N):
    if (fn(xn[i, 0]) >= xn[i, 1]):
        # 当前的x[i]的点在直线的下方
        yn[i] = -1
        plt.plot(xn[i,0],xn[i,1],'rx',markersize=8)
    else:
        yn[i] = 1
        plt.plot(xn[i, 0], xn[i, 1], 'go', markersize=8)
plt.show()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值