前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Python环境】监督学习之KNN算法

【Python环境】监督学习之KNN算法

作者头像
陆勤_数据人网
发布2018-02-27 11:52:46
8500
发布2018-02-27 11:52:46
举报

1、ipython是一个python的交互式shell,比默认的python shell好用得多,支持变量自动补全,自动缩进,支持bash shell命令,内置了许多很有用的功能和函数。在ubuntu下只要sudo apt-get install ipython 就装好了,通过ipython启动。

2、iris.csv数据集以鸢尾花的特征作为数据来源,数据集包含150个数据集,分为3类[山鸢尾(Iris setosa)、变色鸢尾(Iris versicolor)和维吉尼亚鸢尾(Iris virginica)],每类50个数据,每个数据包含4个属性[萼片长度(sepal length),萼片宽度(sepal width),花瓣长度(petal length),花瓣宽度(petal width)],是在数据挖掘、数据分类中非常常用的测试集、训练集。

(1)加载数据

代码语言:javascript
复制
>>> from sklearn import datasets
>>> iris = datasets.load_iris()

说明:在0.9版中(2011年9月发行),scikit-learn的导入路径从scikits.learn更改为sklearn。

(2)数据.data项

代码语言:javascript
复制
>>> iris.data.shape(150, 4)

说明:

数据存储在.data项中,是一个(n_samples, n_features)数组。

(3)数据.target项

代码语言:javascript
复制
>>> iris.target.shape(150,)

说明:

每个观察对象的种类存贮在数据集的.target属性中。这是一个长度为n_samples的整数一维数组。

(4)numpy包

代码语言:javascript
复制
>>> import numpy as np
>>> np.unique(iris.target)
array([0, 1, 2])

说明:

  • numpy是一个用python实现的科学计算包。包括:1、一个强大的N维数组对象Array;2、比较成熟的(广播)函数库;3、用于整合C/C++和Fortran代码的工具包;4、实用的线性代数、傅里叶变换和随机数生成函数。numpy和稀疏矩阵运算包scipy配合使用更加方便。
  • SciPy是一个开源的Python算法库和数学工具包。SciPy包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。与其功能相类似的软件还有MATLAB、GNU Octave和Scilab。

3、K最近邻(KNN)分类器

(1)KNN分类示例

代码语言:javascript
复制
>>> from sklearn import neighbors
>>> knn = neighbors.KNeighborsClassifier()
>>> knn.fit(iris.data, iris.target)
KNeighborsClassifier(algorithm='auto', leaf_size=30, n_neighbors=5, p=2,
           warn_on_equidistant=True, weights='uniform')
>>> knn.predict([[0.1, 0.2, 0.3, 0.4]])
array([0])
>>> knn.predict([[0.1, 0.2, 0.3, 0.4], [0.5, 0.6, 0.7, 0.8]])
array([0, 0])

说明:

邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法可以说是整个数据挖掘分类技术中最简单的方法了。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用她最接近的k个邻居来代表。

(2)训练集和测试集

代码语言:javascript
复制
>>> perm = np.random.permutation(iris.target.size)
>>> iris.data = iris.data[perm]
>>> iris.target = iris.target[perm]
>>> knn.fit(iris.data[:100], iris.target[:100]) 
KNeighborsClassifier(algorithm='auto', leaf_size=30, n_neighbors=5, p=2,
           warn_on_equidistant=True, weights='uniform')
>>> knn.score(iris.data[:100], iris.target[:100])0.97999999999999998
C:\Python27\lib\site-packages\sklearn\neighbors\classification.py:131: NeighborsWarning: kneighbors: 
neighbor k+1 and neighbor k have the same distance: results will be dependent on data order.
  neigh_dist, neigh_ind = self.kneighbors(X)

4、参考文件

[1] SciPy:http://zh.wikipedia.org/wiki/SciPy [2] numpy:http://baike.baidu.com/link?url=6R01gFAVWdH2zEDmVnn6dW06E7g4mQPeWf4eVQ-Uk1fsQynEQfMDiB6Cwfs8jyI6mpn6IyK4fBCdG-4Uezcqeq [3] Iris数据集/Iris Data Set的基本介绍:http://blog.sina.com.cn/s/blog_4936c31d0100p54i.html [4] Scikit Learn: 在python中机器学习:http://my.oschina.net/u/175377/blog/84420#OSC_h4_3 [5] 邻近算法:http://baike.baidu.com/link?url=56eMYTCNC6ZJsKggC-BtYWKwanH2eND04UBVG8w5vyks8M1IwpPTPJTQjvQ3fAMndCFvU_wJryC1d3ohkj

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-11-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据科学与人工智能 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档