简单分类(人工分类)
特征1 | 特征2 | 输出 |
---|---|---|
3 | 1 | 0 |
2 | 5 | 1 |
1 | 8 | 1 |
6 | 4 | 0 |
5 | 2 | 0 |
3 | 5 | 1 |
4 | 7 | 1 |
… | … | … |
6 | 8 | ? |
分类在机器学习中具有非常重要的地位,分类是处理很多问题的基础,除了一些简单的分类问题外,还有很多复杂的分类问题,另外,机器学习在处理的很多问题,都是建立在分类的基础之上的,比如最熟悉的人脸识别,人脸识别本身看上去只是检测了人脸,在不区分人脸具体是谁时,好像并不存在分类问题,其实不然,人脸识别其实是计算机对人脸和非人脸的其他物体进行的一个二分类,诸如此类的问题其实有很多,后面说到目标检测的时候,看懂了目标检测的原理,就会明白这个了。
下面是一个简单的分类,不存在机器学习,仅仅是将图中的几个点进行分类。
"""
简单分类
"""
import numpy as np
import matplotlib.pyplot as mp
x = np.array([
[3, 1],
[2, 5],
[1, 8],
[6, 4],
[5, 2],
[3, 5],
[4, 7],
[4, -1]])
y = np.array([0, 1, 1, 0, 0, 1, 1, 0])
# 把样本绘制出来
mp.figure('Simple Classification', facecolor='lightgray')
mp.title('Simple Classification', fontsize=16)
mp.xlabel('x', fontsize=14)
mp.ylabel('y', fontsize=14)
mp.tick_params(labelsize=10)
mp.grid(linestyle=':')
# 绘制分类边界线
l, r = x[:, 0].min()-1, x[:, 0].max()+1
b, t = x[:, 1].min()-1, x[:, 1].max()+1
n = 500
grid_x, grid_y = np.meshgrid(
np.linspace(l, r, n),
np.linspace(b, t, n))
grid_z = np.piecewise(grid_x,
[grid_x >= grid_y, grid_y > grid_x],
[0, 1])
mp.pcolormesh(grid_x,grid_y,grid_z,cmap='gray')
mp.scatter(x[:, 0], x[:, 1], s=60, c=y,
marker='o', label='Points', cmap='jet')
mp.legend()
mp.show()
如图,该案例将图中的点简单分为两类。