自实现KNN算法:
KNN原理:
由你的"邻居"来推断出你的类别
定义:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)
的样本中的大多数属于某一个类别,则该样本也属于这个类别。
两个样本的距离可以通过如下公式计算,又叫欧式距离
比如说,a(a1,a2,a3),b(b1,b2,b3)
公式-欧式距离:√((?1−?1)^2 +(?2−?2)^2+ (?3−?3)^2)
KNN算法需要做标准化处理
我还利用sklearn 中 KNN算法进行了对比,数据使用的也是sklearn中的load_iris,还使用了sklearn中的标准化和数据集分割函数。这些都可以进一步自己实现。
KNN算法算是最简单的一个算法了。
import numpy as np
import math
from collections import Counter
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
"""
#手动实现KNN算法
class My_knn():
def __init__(self,k):
#数据初始化
self.k = k # k 就是KNN的超参数,就是找到离预测的点最近的k个点,进行分类判断
self.X_train = None # 训练集的特征值
self.Y_train = None