k近邻算法python解读_机器学习(K-近邻算法)Python的基础知识
发布日期:2021-06-24 15:57:32 浏览次数:3 分类:技术文章

本文共 2906 字,大约阅读时间需要 9 分钟。

0x000 算法基础知识前言

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

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

numpy中的eye

numpy.eye(N,M=None, k=0, dtype=)

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.]])

0818b9ca8b590ca3270a3433284dd417.png

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

0818b9ca8b590ca3270a3433284dd417.png

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

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

这样就很清晰的看出来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])

0818b9ca8b590ca3270a3433284dd417.png

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

0818b9ca8b590ca3270a3433284dd417.png

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

①当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的近邻算法总结

转载地址:https://blog.csdn.net/weixin_33682804/article/details/114723525 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:java timer并发_Java并发编程笔记之Timer源码分析
下一篇:java调用asp.net webapi_ASP.NET Web API编程——客户端调用

发表评论

最新留言

不错!
[***.144.177.141]2024年04月18日 11时56分20秒