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

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)加载数据

>>> from sklearn import datasets
>>> iris = datasets.load_iris()

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

(2)数据.data项

>>> iris.data.shape(150, 4)

说明:

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

(3)数据.target项

>>> iris.target.shape(150,)

说明:

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

(4)numpy包

>>> 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分类示例

>>> 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)训练集和测试集

>>> 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

原文发布于微信公众号 - 数据科学与人工智能(DS_AI_shujuren)

原文发表时间:2015-11-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏算法修养

文本分类学习 (十)构造机器学习Libsvm 的C# wrapper(调用c/c++动态链接库)

前言: 对于SVM的了解,看前辈写的博客加上读论文对于SVM的皮毛知识总算有点了解,比如线性分类器,和求凸二次规划中用到的高等数学知识。然而SVM最核心的地方应...

922
来自专栏安富莱嵌入式技术分享

【安富莱二代示波器教程】第10章 示波器设计—数字信号处理

本章节为大家讲解二代示波器中用到的FFT和FIR。单纯从应用上来说,比较省事,调用API函数即可,从学习的角度来说,需要大家花点精力。

983
来自专栏生信技能树

转录组数据的基因表达变化情况探索

一般来说可以用CV或者MAD来衡量某基因在某些样本的表达变化情况。 标准差与平均数的比值称为变异系数,记为C.V(Coefficient of Variance...

3996
来自专栏Spark学习技巧

复习:聊聊hive随机采样①

数据量大的时候,对数据进行采样,然后再做模型分析。作为数据仓库的必备品hive,我们如何对其进行采样呢?

2333
来自专栏marsggbo

LaTeX IEEE模板

网上有很多LaTeX软件,在线编辑器推荐Overleaf。但是我个人还是更喜欢离线写东西,所以尝试过各种编辑器,例如VSCode等等,这些编辑器都需要自己搭环境...

2792
来自专栏owent

2018年的新通用伪随机数算法(xoshiro / xoroshiro)的C++(head only)实现

前段时间看到说Lua 5.4用了一种新的通用随机数算法,替换掉本来内部使用的CRT的随机数引擎。我看了一下大致的实现,CPU和空间复杂度任然保持了一个较低的水平...

2042
来自专栏人工智能

Redis-ML简介(第5部分)

原文地址:https://dzone.com/articles/an-introduction-to-redis-ml-part-five-redis-labs

1.1K8
来自专栏数据小魔方

sparklines迷你图系列4——Evolution(Area)

今天接着分享Evolution图表类型中的Area图表。 其实就是我们常见的区域图(或者叫面积图),它与折线图(昨天讲到的)都是用来呈现时间序列中的趋势走向和波...

2804
来自专栏CSDN技术头条

数据可视化的10个关键术语

Format 交互方式 Interactive visualisations allow you to modify, manipulate and explo...

2007
来自专栏懒人开发

(7.1)James Stewart Calculus 5th Edition:Integration by Parts

注意: 这样做,目的是为了 降阶, 如果转换后,对应的没有起到 降阶 的作用,就没有什么意义了

1071

扫码关注云+社区

领取腾讯云代金券