KNN算法
KNN 即K- 邻近分类算法
-
计算步骤:
- 算距离:给定测试对象,计算它与训练集中的每个对象的距离
- 找邻居:圈定距离最近的k个训练对象,作为测试对象的近邻
- 做分类:根据这k个近邻归属的主要类别,来对测试对象分类
-
懒惰算法
- 平时不好好学习,考试(对测试样本分类)时才临阵磨枪(临时去找k个近邻)。
- 懒惰的后果:模型简单,计算开销大。
-
算法流程
- 计算已知类别数据集中的点与当前点之间的距离;
- 按照距离递增次序排序;
- 选取与当前点距离最小的k个点;
- 确定前k个点所在类别对应的出现频率;
- 返回前k个点出现频率最高的类别作为当前点的预测分类。
-
优缺点
利用KNN算法实现对鸢尾花分类模型的构建及模型性能的基本评估 (Python代码实现)
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
iris = load_iris() # 鸢尾花数据
data_tr, data_te, label_tr, label_te = train_test_split(iris.data, iris.target, test_size=0.2) # 拆分专家样本集
model = KNeighborsClassifier(n_neighbors=5) # 构建模型
model.fit(data_tr, label_tr) # 模型训练
pre = model.predict(data_te) # 模型预测
acc = model.score(data_te, label_te) # 模型在测试集上的精度
acc
利用朴素贝叶斯算法实现对鸢尾花分类模型的构建及模型性能的基本评估 (Python代码实现)
import numpy as np
from sklearn.naive_bayes import GaussianNB
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
Y = np.array([1, 1, 1, 2, 2, 2])
clf = GaussianNB()
clf.fit(X, Y)
clf.predict([[-0.8, -1]])
iris = load_iris()
data_tr, data_te, label_tr, label_te = train_test_split(iris.data, iris.target, test_size=0.2)
clf.fit(data_tr, label_tr)
pre = clf.predict(data_te)
acc = sum(pre == label_te)/len(pre) # 模型在测试集样本上的预测精度