思想极度简单

应用数学知识少

效果好(缺点?)

可以解释机器学习算法使用过程中的很多细节问题

更完整的刻画机器学习应用的流程

distances = []
for x_train in X_train:d=sqrt(np.sum((x_train-x)**2))distances.append(d)

View Code

distances=[sqrt(np.sum((x_train-x)**2)) for x_train in X_train]

可以说kNN是一个不需要训练过程的算法

K近邻算法是非常特殊的,可以被认为是没有模型的算法

为了和其他算法统一,可以认为训练数据集就是模型本身

kNN:
from sklearn.neighbors import KNeighborsClassifier
kNN_classifier=KNeighborsClassifier(n_neighbors=6)
kNN_classifier.fit(X_train,y_train)
kNN_classifier.predict(x)

有关K近邻算法

解决分类问题

天然可以解决多分类问题

思想简单,效果强大

使用k近邻算法解决回归问题

KNeighborsRegressor

kNN:
from sklearn.neighbors import KNeighborsClassifier
kNN_classifier=KNeighborsClassifier(n_neighbors=6)
kNN_classifier.fit(X_train,y_train)
kNN_classifier.predict(x)

须考虑距离的权重!通常是将距离的倒数作为权重

相当于因为距离又获得了一个超参数

寻找最好的k,调参
best_score = 0.0
besk_k = -1
for k in range(1,11):knn_clf = KNeighborsClassifier(n_neighbors=k)knn_clf.fit(X_train,y_train)score = knn_clf.score(X_test,y_test)if score>best_score:best_k=kbest_score=scoreprint('best_k=',best_k)
print('best_score=',best_score)考虑距离?
best_method = ''
best_score = 0.0
besk_k = -1
for method in ['uniform','distance']:for k in range(1,11):knn_clf = KNeighborsClassifier(n_neighbors=k,weights=method)knn_clf.fit(X_train,y_train)score = knn_clf.score(X_test,y_test)if score>best_score:best_k=kbest_score=scorebest_method = method
print('best_k=',best_k)
print('best_score=',best_score)
print('best_method',best_method)搜索明可夫斯基距离相应的p
%%time
best_p = -1
best_score = 0.0
besk_k = -1
for k in range(1,11):for p in range(1,6):knn_clf = KNeighborsClassifier(n_neighbors=k,weights='distance',p = p)knn_clf.fit(X_train,y_train)score = knn_clf.score(X_test,y_test)if score>best_score:best_k=kbest_score=scorebest_p=p
print('best_k=',best_k)
print('best_score=',best_score)
print('best_p=',best_p)

View Code

缺点2:高度数据相关

缺点3:预测的结果不具有可解释性

缺点4:维数灾难

随着维度的增加,‘看似相近’的的两个点之间的距离越来越大

解决方法:降维(PCA)

# coding=utf-8
import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score  # 分类的准确度
from sklearn.model_selection import GridSearchCViris = datasets.load_iris()
X = iris.data
y = iris.target
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=666)
standardScaler = StandardScaler()  # 创建实例
standardScaler.fit(X_train)
# standardScaler.mean_
# standardScaler.scale_
X_train = standardScaler.transform(X_train)  # 使用transform方法进行归一化
X_test_standard = standardScaler.transform(X_test)# 寻找最好的参数K
# param_grid = [
#     {#         'weights': ['uniform'],
#         'n_neighbors': [i for i in range(1, 11)]
#     },
#     {#         'weights': ['distance'],
#         'n_neighbors': [i for i in range(1, 11)],
#         'p': [i for i in range(1, 6)]
#     }
# ]
# knn_clf = KNeighborsClassifier()
# grid_search = GridSearchCV(knn_clf, param_grid)
# grid_search.fit(X_train, y_train)
# print(grid_search.best_estimator_, grid_search.best_params_, grid_search.best_score_)
# knn_clf.predict(X_test)
# knn_clf.score(X_test, y_test)knn_clf = KNeighborsClassifier(n_neighbors=3)
knn_clf.fit(X_train, y_train)  # X_train已经进行了归一化
print(knn_clf.score(X_test_standard, y_test))
# 或者
y_predict = knn_clf.predict(X_test_standard)
print(accuracy_score(y_test, y_predict))
knn_clf.score(X_test_standard, y_test)

个人整个流程代码

第4章 最基础的分类算法-k近邻算法相关推荐

  1. 09_分类算法--k近邻算法(KNN)、案例、欧氏距离、k-近邻算法API、KNeighborsClassifier、及其里面的案例(网络资料+学习资料整理笔记)

    1 分类算法–k近邻算法(KNN) 定义:如果一个样本在特征空间中**k个最相似(即特征空间中最邻近)**的样本中的大多数属于某一个类别,则该样本也属于这个类别,则该样本也属于这个类别. k-近邻算法 ...

  2. python人工智能——机器学习——分类算法-k近邻算法

    分类算法-k近邻算法(KNN) 定义:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别. 来源:KNN算法最早是由Cover和Hart提 ...

  3. 机器学习算法---K近邻算法

    K近邻算法 1. K-近邻算法简介 1.1 什么是K-近邻算法 根据你的"邻居"来推断出你的类别 K Nearest Neighbor算法⼜叫KNN算法,这个算法是机器学习⾥⾯⼀个 ...

  4. 惰性学习算法 ---- k 近邻算法

    惰性学习算法 ---- k 近邻算法 KNN 是惰性学习算法的典型例子.说它具有 惰性 不是因为它看起来简单,而是因为它仅仅对训练数据集有记忆功能,而不会从训练集中通过学习得到一个函数. 这种基于记忆 ...

  5. 机器学习-分类之K近邻算法(KNN)原理及实战

    k近邻算法(KNN) 简介 KNN算法是数据挖掘分类技术中最简单的方法之一.它通过测量不同特征值之间的距离进行分类的.其基本思路为:如果一个样本在特征空间中的k个最近邻样本中的大多数属于某一个类别,则 ...

  6. kNN算法(k近邻算法,k Nearest Neighbor)

    主要内容: 1.认识kNN算法 2.kNN算法原理 3.应用举例 4.kNN改进方法 1.认识knn算法 "看一个人怎么样,看他身边的朋友什么样就知道了",kNN算法即寻找最近的K ...

  7. 分类算法——K近邻算法及其R实现

    原理:已知样本集中每一个数据与所属分类的对应关系,输入没有标签的新数据后,将新数据与训练集的数据对应特征进行比较,找出"距离"最近的k(通常k<20)数据,选择这k个数据中出 ...

  8. python人工智能——机器学习——分类算法-k近邻算法——kaggle案例: Facebook V: Predicting Check Ins

    题目及翻译 Facebook and Kaggle are launching a machine learning engineering competition for 2016. Faceboo ...

  9. 机器学习第七章之K近邻算法

    K近邻算法(了解) 7.1 K近邻算法 7.1.1 K近邻算法的原理介绍 7.1.2 K近邻算法的计算步骤及代码实现 7.2 数据预处理之数据归一化 7.2.1 min-max标准化 7.2.2 Z- ...

最新文章

  1. 读博无门就业碰壁,孤独当了7个月“民科”后,我的论文中了顶会
  2. 探索ASP.NET Core中的IStartupFilter
  3. php创建输入文本框,Asp:文本框与输入文本(PHP开发人员学习ASP)
  4. Python @staticmethod
  5. pta c语言 凯撒密码
  6. 基于MODBUS-RTU协议的串口编程
  7. 60个有用CSS代码片段
  8. Web本地存储和小程序本地存储的区别
  9. 动态修改服务器配置文件,asp.net(c#)动态修改webservice的地址和端口(动态修改配置文件)...
  10. 11月3日 迅雷白金会员vip账号分享 91freevip 23:00更新
  11. gbase mysql数据库_mysql/gbase数据库全库库表记录数统计
  12. 渗透工具环境篇——Cknife中国菜刀的使用
  13. ERStudio逆向工程生成ER模型
  14. Redis下载安装 windows版本
  15. r语言nonzerocoef函数_R语言如何做COX回归分析和nomogram?
  16. 全网首发 nuScenes数据集(百度网盘 + 迅雷网盘) + 下载方法
  17. 纵横算法之四:算法应该怎么学
  18. 关于物联网模组fota远程升级的说明
  19. 【渝粤教育】电大中专机械设计基础作业 题库
  20. 微信公众号--订阅通知

热门文章

  1. Leetcode409最长回文串 -字符哈希
  2. 服务器看端口信息命令行,查看服务器进入端口命令行
  3. 弹性服务器怎么上传文件,上传哪个文件夹弹性云服务器
  4. swig模板 PHP,nodejs前端模板引擎swig入门
  5. 不允许对系统目录进行即席更新_还不懂Docker?一个故事安排的明明白白!
  6. 利用python进行统计及分析第7章,构建电影分类的dummies
  7. html5表格图片按比例缩放,JS图片等比例缩放方法完整示例
  8. python 控件显示时间_设置tkinter标签以显示倒计时时间
  9. python中的类及self详解_Python类class参数self原理解析
  10. html显示后台传来的byte类型的数据_java的数据类型