📜  ML – 最近质心分类器(1)

📅  最后修改于: 2023-12-03 15:17:40.071000             🧑  作者: Mango

ML – 最近质心分类器

最近质心分类器(Nearest Centroid Classifier)是一种简单但有效的分类器,它使用质心(centroid)来代表每个类别,用测试样本与质心的距离来判定测试样本所属的类别。

工作方式

最近质心分类器的工作原理如下:

  1. 训练阶段:对于每个类别,计算该类别所有训练样本的均值向量,即该类别的质心。
  2. 测试阶段:对于一个测试样本,计算它与每个质心之间的距离,将测试样本分类到最近的质心所代表的类别。
代码示例

下面是一个使用最近质心分类器进行二分类的示例:

from sklearn.datasets import make_blobs
from sklearn.neighbors import NearestCentroid
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 生成示例数据
X, y = make_blobs(n_samples=1000, centers=2, n_features=10, random_state=42)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 训练最近质心分类器
clf = NearestCentroid()
clf.fit(X_train, y_train)

# 测试最近质心分类器
y_pred = clf.predict(X_test)

# 计算分类精度
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy:.2f}")

以上代码使用 make_blobs 生成一个包含两个类别的示例数据集,其中每个样本有10个特征。然后将数据集划分为训练集和测试集,并使用 NearestCentroid 训练一个最近质心分类器。最后,测试分类器并计算分类精度。

总结

最近质心分类器是一个简单但有效的分类器,它特别适用于高维数据集和线性可分的问题。但它也有一些缺点,比如无法处理不同类别之间的交叉重叠等问题。因此,在实际应用中,需要根据具体问题选择合适的分类器。