第4章 最基础的分类算法-k近邻算法
思想极度简单
应用数学知识少
效果好(缺点?)
可以解释机器学习算法使用过程中的很多细节问题
更完整的刻画机器学习应用的流程
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近邻算法相关推荐
- 09_分类算法--k近邻算法(KNN)、案例、欧氏距离、k-近邻算法API、KNeighborsClassifier、及其里面的案例(网络资料+学习资料整理笔记)
1 分类算法–k近邻算法(KNN) 定义:如果一个样本在特征空间中**k个最相似(即特征空间中最邻近)**的样本中的大多数属于某一个类别,则该样本也属于这个类别,则该样本也属于这个类别. k-近邻算法 ...
- python人工智能——机器学习——分类算法-k近邻算法
分类算法-k近邻算法(KNN) 定义:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别. 来源:KNN算法最早是由Cover和Hart提 ...
- 机器学习算法---K近邻算法
K近邻算法 1. K-近邻算法简介 1.1 什么是K-近邻算法 根据你的"邻居"来推断出你的类别 K Nearest Neighbor算法⼜叫KNN算法,这个算法是机器学习⾥⾯⼀个 ...
- 惰性学习算法 ---- k 近邻算法
惰性学习算法 ---- k 近邻算法 KNN 是惰性学习算法的典型例子.说它具有 惰性 不是因为它看起来简单,而是因为它仅仅对训练数据集有记忆功能,而不会从训练集中通过学习得到一个函数. 这种基于记忆 ...
- 机器学习-分类之K近邻算法(KNN)原理及实战
k近邻算法(KNN) 简介 KNN算法是数据挖掘分类技术中最简单的方法之一.它通过测量不同特征值之间的距离进行分类的.其基本思路为:如果一个样本在特征空间中的k个最近邻样本中的大多数属于某一个类别,则 ...
- kNN算法(k近邻算法,k Nearest Neighbor)
主要内容: 1.认识kNN算法 2.kNN算法原理 3.应用举例 4.kNN改进方法 1.认识knn算法 "看一个人怎么样,看他身边的朋友什么样就知道了",kNN算法即寻找最近的K ...
- 分类算法——K近邻算法及其R实现
原理:已知样本集中每一个数据与所属分类的对应关系,输入没有标签的新数据后,将新数据与训练集的数据对应特征进行比较,找出"距离"最近的k(通常k<20)数据,选择这k个数据中出 ...
- python人工智能——机器学习——分类算法-k近邻算法——kaggle案例: Facebook V: Predicting Check Ins
题目及翻译 Facebook and Kaggle are launching a machine learning engineering competition for 2016. Faceboo ...
- 机器学习第七章之K近邻算法
K近邻算法(了解) 7.1 K近邻算法 7.1.1 K近邻算法的原理介绍 7.1.2 K近邻算法的计算步骤及代码实现 7.2 数据预处理之数据归一化 7.2.1 min-max标准化 7.2.2 Z- ...
最新文章
- 读博无门就业碰壁,孤独当了7个月“民科”后,我的论文中了顶会
- 探索ASP.NET Core中的IStartupFilter
- php创建输入文本框,Asp:文本框与输入文本(PHP开发人员学习ASP)
- Python @staticmethod
- pta c语言 凯撒密码
- 基于MODBUS-RTU协议的串口编程
- 60个有用CSS代码片段
- Web本地存储和小程序本地存储的区别
- 动态修改服务器配置文件,asp.net(c#)动态修改webservice的地址和端口(动态修改配置文件)...
- 11月3日 迅雷白金会员vip账号分享 91freevip 23:00更新
- gbase mysql数据库_mysql/gbase数据库全库库表记录数统计
- 渗透工具环境篇——Cknife中国菜刀的使用
- ERStudio逆向工程生成ER模型
- Redis下载安装 windows版本
- r语言nonzerocoef函数_R语言如何做COX回归分析和nomogram?
- 全网首发 nuScenes数据集(百度网盘 + 迅雷网盘) + 下载方法
- 纵横算法之四:算法应该怎么学
- 关于物联网模组fota远程升级的说明
- 【渝粤教育】电大中专机械设计基础作业 题库
- 微信公众号--订阅通知
热门文章
- Leetcode409最长回文串 -字符哈希
- 服务器看端口信息命令行,查看服务器进入端口命令行
- 弹性服务器怎么上传文件,上传哪个文件夹弹性云服务器
- swig模板 PHP,nodejs前端模板引擎swig入门
- 不允许对系统目录进行即席更新_还不懂Docker?一个故事安排的明明白白!
- 利用python进行统计及分析第7章,构建电影分类的dummies
- html5表格图片按比例缩放,JS图片等比例缩放方法完整示例
- python 控件显示时间_设置tkinter标签以显示倒计时时间
- python中的类及self详解_Python类class参数self原理解析
- html显示后台传来的byte类型的数据_java的数据类型