您的位置:首页 > 编程语言 > Python开发

机器学习(K-近邻算法)Python的基础知识

2017-06-28 15:39 363 查看

0x000 算法基础知识前言

在看机器学习实战pytho实现的时候,有些代码看不懂,特此总结一下,下面分别介绍。

0x0001 K-近邻算法算法Python的Numpy库基础知识

numpy中的eye

numpy.eye(N,M=None, k=0, dtype=<type 'float'>)


N,M参数:输出方阵(行数=列数)的规模,即行数或列数

K参数:默认情况下输出的是对角线全“1”,其余全“0”的方阵,如果k为正整数,则在右上方第k条对角线全“1”其余全“0”,k为负整数则在左下方第k条对角线全“1”其余全“0”。

创建一个eye.py文件代码如下:

from numpy import *
e = eye(3)
e1 = eye(3,k=1)


在shell里输入下面代码:

>>> e
#e的结果
array([[ 1.,  0.,  0.],
[ 0.,  1.,  0.],
[ 0.,  0.,  1.]])
>>> e1
#e1的结果
array([[ 0.,  1.,  0.],
[ 0.,  0.,  1.],
[ 0.,  0.,  0.]])




numpy中的shape

根据上面创建的对角矩阵的基础上,我们继续在shell中输入一下代码,并且附带结果:

>>> e
array([[ 1.,  0.,  0.],
[ 0.,  1.,  0.],
[ 0.,  0.,  1.]])
>>> e.shape
(3, 3)
>>> e.shape[0]
3
>>> e.shape[1]
3




通过shape我们可以来查看一个矩阵的行列长度。而这组例子并不好分辨shape[0]和shape[1]分别代表的是什么,接下来我们在来创建一组例子:

a = array([[0,2,2],
[3,1,0],
[1,2,7],
[9,5,9]])


shell输入:

>>> a
array([[0, 2, 2],
[3, 1, 0],
[1, 2, 7],
[9, 5, 9]])
>>> a.shape
(4, 3)

>>> a.shape[0]
4
>>> a.shape[1]
3






这样就很清晰的看出来shape[0]=4,shape[1]=3,也就是说shape[0]代表的是矩阵的行数,shape[1]代表的是列数。

numpy中的tile

tile(a,(m,n))的含义:将a数组复制n次暂时储存到一个临时变量里,在通过这个临时变量复制m次得到的结果就是tile(a,(m,n));

更简单的来说其实m就是代表结果中矩阵最后的m行数,而n代表的是每行矩阵中复制a的次数

例如下面:

创建一个tile.py文件,代码如下:

from numpy import *

a = [0,1,2]


shell中:

#将2复制一次
>>> b = tile(2,(2,1))
>>> b
array([[2],
[2]])
>>> c = tile(a,(3,2))
>>> c
array([[0, 1, 2, 0, 1, 2],
[0, 1, 2, 0, 1, 2],
[0, 1, 2, 0, 1, 2]])
>>> d = tile(a,(4))
>>> d
array([0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2])




numpy中的sum(axis=0,1)

  创建一个sum.py的文件,代码如下:

from numpy import *
a = [0,1,2]
b = [2,1,3]


分别输入以下代码:

#分别设置sum的后缀axis参数,为0,1,无
>>> c = sum([a,b],axis=0)
>>> d = sum([a,b],axis=1)
>>> e = sum([a,b])
#下面是IDLE输出的结果
>>> c
array([2, 2, 5])
>>> d
array([3, 6])
>>> e
9




通过上面的结果我们可以知道:

①当axis=0时,是把两个数组以列来相加,也就是[0+2,1+1,2+3]=[2,2,5]

②当axis=1时,是把两个数组以行来相加,也就是[0+1+2,2+1+3]=[3,6]

③当没有参数时,默认将所有相加:0+1+2+2+1+3=9

numpy中的argsort()

argsort(a, axis=-1, kind=’quicksort’, order=None)

argsort函数返回的是数组值从小到大的索引值

One dimensional array:一维数组

>>> x = np.array([3, 1, 2])
>>> np.argsort(x)
array([1, 2, 0])

Two-dimensional array:二维数组

>>> x = np.array([[0, 3], [2, 2]])
>>> x
array([[0, 3],
[2, 2]])
#按列排序
>>> np.argsort(x, axis=0)
array([[0, 1],
[1, 0]])
#按行排序
>>> np.argsort(x, axis=1)
array([[0, 1],
[0, 1]])


0x0002 K-近邻算法Python实现中的Python基础知识

幂的表示方法 ——– **

**:这个就代表了python中的幂次方,例如我们平时打字表示的时候2^2=4这个^在Python中的表示就是两个星号了。

sorted()

sort函数是list列表中的函数,而sorted可以对list或者iterator进行排序

如果用sort函数对列表排序时会影响列表本身,而sorted不会。

例子:

>>> a = [1,2,1,4,3,5]
>>> a.sort()
>>> a
[1, 1, 2, 3, 4, 5]


>>> a = [1,2,1,4,3,5]
>>> sorted(a)
[1, 1, 2, 3, 4, 5]
>>> a
[1, 2, 1, 4, 3, 5]


sorted(iterable,cmp,key,reverse)

参数:iterable可以是list或者iterator;

cmp是带两个参数的比较函数;

key 是带一个参数的函数;

reverse为False或者True,升序或者降序;

例:

#operator.py文件代码:
from numpy import *
import operator
a = [3,1,9]

#shell
>>> b = operator.itemgetter(0)
>>> b(a)
3
>>> b = operator.itemgetter(1)
>>> b(a)
1
>>> b = operator.itemgetter(2)
>>> b(a)
9


operator.itemgetter函数获取的不是值,而是定义了一个函数。

K-近邻算法基础总结

大概Python用到的基础知识就是这么多,大部分都是numpy下的知识点,先把基础知识掌握在开始机器学习day02的近邻算法总结
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: