KNN算法描述
输入:训练数据集img,xi为实例的特征向量,yi={C1,c2…Ck}为实例类别。
输出:实例x所属的类别y
步骤:
(1)选择参数K
(2)计算未知实例与所有已知实例的距离(多种方式计算距离)
(3)选择最近K个已知实例
(4)根据少数服从多数的原则进行投票,让未知实例归类为K个最近邻中最多数的类别。
总结:KNN算法没有明显的特征训练过程,它的训练阶段仅仅将样本保存起来,训练开销为0,等到收到测试样本后在进行处理(如K值取值和距离计算)。因此,对应于训练阶段的学习该算法是一种懒惰学习(lazy learning)。
KNN三要素:
距离度量
K值选择
分类决策准则
利用KNN算法对数据进行建模预测
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
if __name__ == '__main__':
# 1. 加载数据集
iris = load_iris() #通过iris.data 获取数据集中的特征值 iris.target获取目标值
# 2. 数据标准化
transformer = StandardScaler()
x_ = transformer.fit_transform(iris.data) # iris.data 数据的特征值
# 3. 模型训练
estimator = KNeighborsClassifier(n_neighbors=3) # n_neighbors 邻居的数量,也就是Knn中的K值
estimator.fit(x_, iris.target) # 调用fit方法 传入特征和目标进行模型训练
# 4. 利用模型预测
result = estimator.predict(x_)
print(result)