在机器学习领域中,分类器是一种常见的算法,用于根据输入数据的特征将其分为不同的类别。分类器的应用非常广泛,例如在文本分类、图像分类、语音识别等领域中都有着重要的应用。本文将介绍如何使用Python编写一个简单的分类器,并使用Scikit-Learn库中的数据集进行测试。
一、数据集
在本文中,我们将使用Scikit-Learn库中的鸢尾花数据集(Iris dataset)。该数据集包含150个样本,每个样本有4个特征(花萼长度、花萼宽度、花瓣长度、花瓣宽度),以及其对应的类别(山鸢尾、变色鸢尾、维吉尼亚鸢尾)。
二、分类器
(一)、KNN分类器
我们将使用K近邻算法(K-Nearest Neighbors,KNN)作为分类器。KNN算法的基本思想是,对于一个未知的样本,找到最接近它的K个已知样本,并根据这K个样本的类别,对未知样本进行分类。KNN算法的具体实现包括以下几个步骤:
- 计算未知样本与每个已知样本之间的距离;
- 选取K个距离最近的已知样本;
- 根据这K个样本的类别,对未知样本进行分类。
下面是KNN算法的Python实现代码:
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# 加载鸢尾花数据集
iris = load_iris()
# 将数据集拆分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3)
# 定义KNN分类器,K取3
clf = KNeighborsClassifier(n_neighbors=3)
# 在训练集上拟合分类器
clf.fit(X_train, y_train)
# 在测试集上进行预测
y_pred = clf.predict(X_test)
# 输出分类器的准确率
print("Accuracy:", clf.score(X_test, y_test))
上述代码中,首先使用load_iris()
函数加载鸢尾花数据集。然后,使用train_test