KNN原理:
确定待检测对象的目标值------利用距离检测离对象最近的K个对象----把K个对象占绝大多数的目标,作为检测对象的目标值。
举个例子: 假如你要推测一个人的薪资水平(离散化),找出他居住地附近最近的k个人的薪资水平,取众数——得到推测对象薪资水平。
特征空间:
模型输入(特征 x 二维数组(矩阵))——>目标值(y 二维数组(only一列))
以各个特征作为坐标轴建立一个坐标系,坐标系对应的空间就是特征空间。
每一个数据,对应特征空间中一个点。
k-近邻:
在一个特征空间中,找到离某个样本最近的样本的大多数属于一个类别,该样本也属于该类别。
欧氏距离:
假设每个样本有n个特征值。
求出待预测的样本与每个样本的欧式距离,找出距离最近的k(自己规定)个样本,这k个样本中的大多数属于哪一类别——待检测样本就属于哪个样本。
Scikit-learn
- 实现了很多知名机器学习算法
- 分类、聚类、回归
- 特征工程
API
sklearn.neighbors.KNeighborsClassifier(n_neighbors=5)
n_neighbors:int,可选(默认= 5),k_neighbors查询默认使用的邻居数
from sklearn.neighbors import
# 1. 获取数据
x = [[0],[1],[2],[3]] # 特征值
y = [0,0,1,1] # 目标值
# 2. 处理数据
# 3. 特征工程
# 4. 机器学习
# 4.1 构建模型 实列化 估计器
estimator = KNeighborsClassifier(n_neighbors =2)
# 4.2训练模型 使用fit() 方法进行训练
estimator.fit(x,y)
# 5. 模型评估
estimator.predict([[1]])
距离度量
1.欧氏距离
公式:
(以下距离了解)
2.曼哈顿距离
城市街区距离
公式:
n维:相同特征相减取绝对值之和
3.切比雪夫距离
国际象棋国王可以移动到相邻8个位置中任意一个。国王从(x1,y1)到(x2,y2)走的最少步数
公式: