机器学习入门
Posted miaoliangjun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习入门相关的知识,希望对你有一定的参考价值。
python关于向量
python中的List 的特点:不限制其中每一个元素的类型,可以使用下标访问,但是比较慢.
也可以使用array.
需要import arrary 这个包.
import array
arr=array.array('i',[i for i in range(10)])
arr
输出:array('i', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
array创建之后其中只能有一种类型,这样array的效率会高一点,但是没有那么灵活.
如果你具体使用过这个array,也会感觉到有很多不方便的地方.,这个时候我们就会使用numpy.
numpy的使用.
引入numpy的这个包:import numpy
查看numpy的版本:numpy.__version__
使用别名:import numpy as np ,这个时候可以用np来代替numpy.
这个里有个坑点:import numpy as np要在import numpy 之后运行,会出错.
numpy的操作和python 的array基本上一样.也是可以下标访问,且不支持修改类型.
dtype方法可以返回array中的类型.
虽然numpy的array只允许有一种类型,不能修改类型,但是array里面的元素在赋值的时候会有类型的隐式转换,比如小数种截位.
numpy其他创建numpy.array的方法
zeros(shape) 创建一个全零矩阵 shape可以传入一个元组的类型.
np.zeros(shape=(3,5))
输出:array([[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.]])
可以看到全部都是浮点型,numpy默认都是使用浮点型船舰矩阵,当然我们也可以指定它的类型.
np.zeros(10,dtype=int)
输出:array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
同样的也可以创建全是1矩阵
np.ones(3,5)
输出:
array([[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.]])
如果创建指定值的可以使用np.full(shape,fill_value)
np.fill(shape=(3,5),fill_value=5)
输出:array([[5, 5, 5, 5, 5],
[5, 5, 5, 5, 5],
[5, 5, 5, 5, 5]])
如果具体写出了参数名称,那么参数顺序可以不按照定义顺序.
arange的使用,在numpy中的类似range生成表达式
比如python中这样的表达式
[i for i in range(0,20,2)]
输出:[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
在numpy中可以这样写
np.arange(0,20,2)
输出:array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18])
range(0,20,2)的意思是:从0开始,到20之前,不包含20,步长为2的遍历.
和range不同的是 arange可以传入浮点型.
np.arange(0,1,0.2)
输出:array([0. , 0.2, 0.4, 0.6, 0.8])
如果不填写步长,那么步长就会默认是1,如果不填写其实位置,那么默认起始位置是0,这两点和range都一样.
linspace分割区间,numpy中特有的.
先看代码:
np.linspace(0,20,10)
输出:array([ 0. , 2.22222222, 4.44444444, 6.66666667, 8.88888889,
11.11111111, 13.33333333, 15.55555556, 17.77777778, 20. ])
含义是从区间[0,20]中登长的截取出10个等间距的点,是包括20的.
numpy中的random
从某个范围生成一个数
np.random.randint(0,10)
输出:8
从某个范围生成一个向量
np.random.randint(0,10,10)
array([2, 3, 0, 8, 3, 7, 2, 4, 7, 2])
需要注意的是randint(,,size)是一个前闭后开的区间,size可以是一个元组.
通过随机种子生成向量:
np.random.seed(233)
np.random.randint(0,10,size=(3,5))
array([[7, 7, 5, 1, 3],
[5, 1, 3, 4, 7],
[1, 3, 6, 2, 3]])
可以发现无论生成多少次,生成的矩阵都是一样的.
生成一个浮点数
np.random.random()
生成随机浮点向量
np.random.random(10)
如果需要生成符合正态分布的浮点数,默认均值为0,方差为1的浮点数
np.random.normal()
往normal中的参数可以修改均值和方差,默认是前两个参数,当然传入第三个参数大小;
np.random.normal(0,1,3,5)
array([[-0.10892564, 0.3280622 , 0.89261728, -0.27398504, 0.8855126 ],
[ 0.73557401, 1.06942746, 0.20317479, -0.04285664, 0.26786595],
[ 0.25915147, -1.63612624, -0.01482728, -0.70995326, 0.63002903]])
如果对于某个函数不太熟悉,可以加上?然后回车就可以看到对应的文档.
np.random.normal?
以上是关于机器学习入门的主要内容,如果未能解决你的问题,请参考以下文章