knn算法也叫k近邻算法
k为一个常数
n 为nearest
n neighbor
核心思想:根据你的邻居来确定你的位置
定义:如果一个样本在特征空间中的k个最相似,即特征空间中最邻近的样本大多数属于一个类别,则这个样本也属于这个类别
k如果取1 容易取到异常点的影响
如何确定距离?
计算距离:
距离公式 ,最常见的是欧式距离
曼哈顿距离 绝对值距离
明可夫斯基距离
实例 判断电影
如果k值较大, 在样本不均衡的影响
需要无量纲化的处理 ,一般用标准化
knn的sklearn的API
sklearn.neighbors.KNeighborsClassifier(n_neighbors=5,algorithm=‘auto’)
还是鸢尾花数据集来进行knn算法
流程分析
获取数据
数据预处理
数据集划分
特征工程 标准化
knn预估器流程
模型评估
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
iris = load_iris()
x_train,x_test,y_train,y_test = train_test_split(iris.data,iris.target,random_state=6)
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)
estimator = KNeighborsClassifier(n_neighbors=3)
estimator.fit(x_train,y_train)
score = estimator.score(x_test,y_test)
print(score)
knn算法总结
优点:利于理解,易于实现
缺点:关于k值的取舍,如果k选择不当,对实验结果会产生影响
对测试样本分类时的计算量大
使用场景:小数据场景
测试集需不需要标准化