机器学习——KNN
导入类库
- import numpy as np
- from sklearn.neighbors import KNeighborsClassifier
- from sklearn.model_selection import train_test_split
- from sklearn.preprocessing import StandardScaler
- from sklearn.linear_model import LinearRegression
- from sklearn.metrics import r2_score
- from sklearn.datasets import load_iris
- import matplotlib.pyplot as plt
- import pandas as pd
- import seaborn as sns
# 熵增益
# 熵越大,信息量越大,蕴含的不确定性越大
KNN
1.计算待预测值到所有点的距离
2.对所有距离排序
3.找出前K个样本里面类别最多的类,作为待预测值的类别
代码
- A = np.array([[1, 1], [1, 1.5], [0.5, 1.5]])
- B = np.array([[3.0, 3.0], [3.0, 3.5], [2.8, 3.1]])
- def knn_pre_norm(point):
- a_len = np.linalg.norm(point - A, axis=1)
- b_len = np.linalg.norm(point - B, axis=1)
- print(a_len.min())
- print(b_len.min())
- def knn_predict_rev(point):
- X = np.array([[1, 1], [1, 1.5], [0.5, 1.5], [3.0, 3.0], [3.0, 3.5], [2.8, 3.1]])
- Y = np.array([0, 0, 0, 1, 1, 1])
- knn = KNeighborsClassifier(n_neighbors=2)
- knn.fit(X, Y)
- print(knn.predict(np.array([[1.0, 3.0]])))
- def iris_linear():
- # 加载iris数据
- li = load_iris()
- # 散点图
- # plt.scatter(li.data[:, 0], li.data[:, 1], c=li.target)
- # plt.scatter(li.data[:, 2], li.data[:, 3], c=li.target)
- # plt.show()
- # 分割测试集和训练集,测试集占整个数据集的比例是0.25
- x_train, x_test, y_train, y_test = train_test_split(li.data, li.target, test_size=0.25)
- # 创建KNN分类,使用最少5个邻居作为类别判断标准
- knn = KNeighborsClassifier(n_neighbors=5)
- # 训练数据
- knn.fit(x_train, y_train)
- # 预测测试集
- # print(knn.predict(x_test))
- # 预测np.array([[6.3, 3, 5.2, 2.3]])
- print(knn.predict(np.array([[6.3, 3, 5.2, 2.3]])))
- # 预测np.array([[6.3, 3, 5.2, 2.3]])所属各个类别的概率
- print(knn.predict_proba(np.array([[6.3, 3, 5.2, 2.3]])))
- if __name__ == '__main__':
- # knn_predict_rev(None)
- # knn_pre_norm(np.array([2.3,2.3]))
- iris_linear()
机器学习——KNN的更多相关文章
- [机器学习] ——KNN K-最邻近算法
KNN分类算法,是理论上比较成熟的方法,也是最简单的机器学习算法之一. 该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别 ...
- 机器学习——kNN(1)基本原理
=================================版权声明================================= 版权声明:原创文章 禁止转载 请通过右侧公告中的“联系邮 ...
- 机器学习--kNN算法识别手写字母
本文主要是用kNN算法对字母图片进行特征提取,分类识别.内容如下: kNN算法及相关Python模块介绍 对字母图片进行特征提取 kNN算法实现 kNN算法分析 一.kNN算法介绍 K近邻(kNN,k ...
- 机器学习-kNN
基于Peter Harrington所著<Machine Learning in Action> kNN,即k-NearestNeighbor算法,是一种最简单的分类算法,拿这个当机器学习 ...
- 机器学习-KNN算法详解与实战
最邻近规则分类(K-Nearest Neighbor)KNN算法 1.综述 1.1 Cover和Hart在1968年提出了最初的邻近算法 1.2 分类(classification)算法 1.3 输入 ...
- 第四十六篇 入门机器学习——kNN - k近邻算法(k-Nearest Neighbors)
No.1. k-近邻算法的特点 No.2. 准备工作,导入类库,准备测试数据 No.3. 构建训练集 No.4. 简单查看一下训练数据集大概是什么样子,借助散点图 No.5. kNN算法的目的是,假如 ...
- 机器学习 KNN算法原理
K近邻(K-nearst neighbors,KNN)是一种基本的机器学习算法,所谓k近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表.比如:判断一个人的人品,只需要观察 ...
- 机器学习-KNN分类器
1. K-近邻(k-Nearest Neighbors,KNN)的原理 通过测量不同特征值之间的距离来衡量相似度的方法进行分类. 2. KNN算法过程 训练样本集:样本集中每个特征值都已经做好类别 ...
- ML02: 机器学习KNN 算法
摘要: 一张图说清楚KNN算法 看下图,清楚了吗? 没清楚的话,也没关系,看完下面几句话,就清楚了. KNN算法是用来分类的. 这个算法是如何来分类的呢? 看下图,你可以想想下图中的 『绿色圆点』 ...
- 机器学习——kNN(2)示例:改进约会网站的配对效果
=================================版权声明================================= 版权声明:原创文章 禁止转载 请通过右侧公告中的“联系邮 ...
随机推荐
- web.xml:<dispatcher>
web.xml 的 <dispatcher> 是 <filter-mapping> 下的子标签,指定 Filter 对应的请求方式,其可选值如下: REQUEST 客户端在地址 ...
- mysql5.7 修改root密码无法登陆原因
升级的mysql5.7修改完root账户密码后仍然无法登陆,查阅资料可能和user表的plugin 字段为空有关. 1.首先将my.ini中加入在[mysqld]节点上加skip-grant-tabl ...
- CMDB服务器管理系统【s5day90】:API验证
1.认证思路刨析过程 1.请求头去哪里拿? 1.服务器端代码: def test(request): print(request) return HttpResponse('你得到我了') 2.客户端 ...
- .net异步委托
委托Delegate是一个类,定义了方法的类型, 使得可以将方法当做另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大佬使用If-Else(Switch)语句,同时使得程序 ...
- ext.net单元格内容换行显示
增加style .x-grid3-cell-inner { white-space: normal; }
- [再寄小读者之数学篇](2014-10-08 乘积型 Sobolev 不等式)
$$\bex n\geq 2, 1\leq p<n\ra \sen{f}_{L^\frac{np}{n-p}(\bbR^n)} \leq C\prod_{k=1}^n \sen{\p_k f}_ ...
- 搞数学的牛群[主要PDE的]
- Eclipse中的sysout与debug-遁地龙卷风
(-1)调试 在读<<一个程序员的奋斗史>>时里面提到这是一件很low的事情,突然想到自己也一直用sysout, 我是一个有情怀的人! (0)sysout的坏处 之所以长久的使 ...
- Centos 06 文件类型和扩展名&索引节点inode和存储块block
本节内容 1.文件类型 2.文件扩展名 3.索引节点inode和block块 首先需要申明一点, 1.在linux里面文件扩展名和文件类型是没有关系的 2.为了容易区分和兼容用户使用windows的习 ...
- laravel5.4 向闭合函数内部传递参数
laravel 向闭合函数内部传入参数