让我们看看如何通过训练数据创建一个简单的分类器.

怎么做...?

  • 我们将使用已经提供给您的simple_classifier.py文件作为参考. 假设你像我们在上一章中所做的那样导入numpy和matplotlib.pyplot包, 让我们创建一些示例数据
X = np.array([[3, 1], [2, 5], [1, 8], [6, 4], [5, 2], [3, 5], [4, 7], [4, -1]])
  • 让我们为这些点分配一些标签
y = [0, 1, 1, 0, 0, 1, 1, 0]
  • 由于我们只有两个类, y列表包含0和1. 一般来说, 如果你有N个类, 那么y中的值的范围将从0到N-1. 让我们基于标签将数据分成类:
class_0 = np.array([X[i] for i in range(len(X)) if y[i] == 0])
class_1 = np.array([X[i] for i in range(len(X)) if y[i] == 1])
  • 要了解我们的数据, 让我们绘制它, 如下:
plt.figure()
plt.scatter(class_0[:, 0], class_0[:, 1], color='blue', marker='s')
plt.scatter(class_1[:, 0], class_1[:, 1], color='black', marker='x')

这是一个散点图, 其中我们使用正方形和十字架来绘制点. 在此上下文中, marker参数指定要使用的形状. 我们使用正方形来表示class_0中的点, 并使用正方形来表示class_1中的点. 如果运行此代码, 您将看到下图:

  • 在前两行中, 我们只是使用X和y之间的映射来创建两个列表. 如果你被要求视觉检查数据点并绘制一条分隔线, 你会怎么做? 你只需在它们之间画一条线. 让我们继续做这个:
line_x = range(10)
line_y = line_x
  • 我们只是用数学方程y = x创建了一条线. 让我们绘制它, 如下:
plt.figure()
plt.scatter(class_0[:, 0], class_0[:, 1], color='blue', marker='s')
plt.scatter(class_1[:, 0], class_1[:, 1], color='black', marker='x')
plt.plot(line_x, line_y, color='red', linewidth=3)

plt.show()
  • 运行结果如下:

扩展...

我们使用以下规则构建了一个简单的分类器: 如果a大于或等于b, 则输入点(a,b)属于class_0; 否则, 它属于class_1. 如果你一个一个地检查点, 你会看到, 这是真的. 您只是构建了一个可以对未知数据进行分类的线性分类器. 它是一个线性分类器, 因为分隔线是一条直线. 如果它是一个曲线. 那么它变成一个非线性分类器.

这种形式工作正常, 因为有有限的点数, 我们可以目视检查他们. 如果有数千点我们如何推广这个过程?让我们在下一章节中讨论.

results matching ""

    No results matching ""