機器學習入門 三

2022-06-28 04:48:10 字數 3278 閱讀 3442

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的這個包: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裡面的元素在賦值的時候會有型別的隱式轉換,比如小數種截位.

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?

機器學習入門(三)

今天了解的幾個概念 1 neurogrid 2014年5月13日訊息,美國研究人員日前發明了一種基於人腦構造設計的全新晶元電路板 neurogrid 據悉,neurogrid能夠模擬人腦中的100萬個神經元和數十億個突觸連線,而其運算速度已經達到了現有普通電腦的9000倍之巨。然而,同人類大腦的運算...

機器學習筆記入門 (三)

有幾個點需要了解 線性模型的形式 f x w1x1 w2x2 wm xm b 從這裡我們可以了解前面幾章介紹的模型,訓練,等等知識的真實面目,上面這個函式或者公式,就是所謂的模型。西瓜問題的線性模型就形同 f好瓜 x a x色澤 b x根蒂 c x敲聲 1 其中a,b,c就是需要大量資料來訓練的引數...

機器學習入門

研究生考試結束了,考研通知書也在幾天前到手了,是時候安心下來考慮一下未來研究生的生活和學習了,看現在機器學習特別的火,所以我就先跟風學習一下機器學習吧。由於剛開始學習,所以對一些專有名詞不是很熟悉,所以特別做了一下總結,因為剛剛入門,所以就先整理了這些。人工智慧 一 認知和感知 區別看待 目前是在感...