第四章笔记 - kNN- k近邻算法(k-Nearest Neighbors)
-
算法思想:在一个散点分布的数据中,取出k个与新传入数据最近的点,以这些点中属于某种样本最多的点为该数据的target
-
调参:指调超参数,而不是模型参数
可通过网格搜索,GridSearich。
不同距离计算公式:
曼哈顿距离
欧拉距离
明可夫斯基距离
feature scaler
对每一个特征:
- 最值归一化
(x - np.min(x)) / (np.max(x) - np.min(x))
- 均值方差归一化
X = (X - np.mean(X)) / np.std(X)
Note: 对训练数据集做归一化,并且用训练数据集的归一化方式来对测试数据集和预测数据进行一样的归一化。
(对X_train做了归一化,一定要对X_test也做归一化)
总结及一些思考:
- k近邻算法既能解决分类问题,也可以解决回归问题。
(KNeighborsRegressor类)
缺点
- 效率低下,复杂度O(m*n)
- 高度数据相关(只看了k个数据)
- 预测结果不具有可解释性
- 维数灾难:随着维度增加,“看似相近”的两个点的距离越来越大。
机器学习流程
1 数据划分成训练数据和测试数据
2 对数据进行归一化
3 训练模型
4 评价模型
(使用网格搜索寻找最好的超参数)