這篇文章主要為大家展示了“python常用庫(kù)之NumPy和sklearn怎么用”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“python常用庫(kù)之NumPy和sklearn怎么用”這篇文章吧。
創(chuàng)新互聯(lián)是工信部頒發(fā)資質(zhì)IDC服務(wù)器商,為用戶提供優(yōu)質(zhì)的重慶服務(wù)器托管服務(wù)Numpy 和 scikit-learn 都是python常用的第三方庫(kù)。numpy庫(kù)可以用來(lái)存儲(chǔ)和處理大型矩陣,并且在一定程度上彌補(bǔ)了python在運(yùn)算效率上的不足,正是因?yàn)閚umpy的存在使得python成為數(shù)值計(jì)算領(lǐng)域的一大利器;sklearn是python著名的機(jī)器學(xué)習(xí)庫(kù),它其中封裝了大量的機(jī)器學(xué)習(xí)算法,內(nèi)置了大量的公開(kāi)數(shù)據(jù)集,并且擁有完善的文檔,因此成為目前最受歡迎的機(jī)器學(xué)習(xí)學(xué)習(xí)與實(shí)踐的工具。
1. NumPy庫(kù)
首先導(dǎo)入Numpy庫(kù)
import numpy as np
1.1 numpy.array 與 list
a = [1,2,3,4,5,6] # python內(nèi)置數(shù)組結(jié)構(gòu) b = np.array(a) # numpy數(shù)組結(jié)構(gòu)
python有內(nèi)置數(shù)組結(jié)構(gòu)(list),我們?yōu)槭裁催€要使用numpy的數(shù)組結(jié)構(gòu)呢?為了回答這個(gè)問(wèn)題,我們先來(lái)看看python內(nèi)置的數(shù)組結(jié)構(gòu)有什么樣的特點(diǎn)。我們?cè)谑褂胠ist的時(shí)候會(huì)發(fā)現(xiàn),list數(shù)組中保存的數(shù)據(jù)類型是不用相同的,可以是字符串、可以是整型數(shù)據(jù)、甚至可以是個(gè)類實(shí)例。這種存儲(chǔ)方式很使用,為我們使用帶來(lái)了很多遍歷,但是它也承擔(dān)了消耗大量?jī)?nèi)存的缺陷或不足。為什么這么說(shuō)呢?實(shí)際上list數(shù)組中的每個(gè)元素的存儲(chǔ)都需要1個(gè)指針和1個(gè)數(shù)據(jù),也就是說(shuō)list中保存的其實(shí)是數(shù)據(jù)的存放地址(指針),它比原生態(tài)的數(shù)組多了一個(gè)存放指針的內(nèi)存消耗。因此,當(dāng)我們想去減少內(nèi)存消耗時(shí),不妨將list替換成np.array,這樣會(huì)節(jié)省不少的空間,并且Numpy數(shù)組是執(zhí)行更快數(shù)值計(jì)算的優(yōu)秀容器。
1.2 numpy常用操作
創(chuàng)建數(shù)組
np.array([1,2,3]) # 創(chuàng)建一維數(shù)組 np.asarray([1,2,3]) np.array([1,2,3], [4,5,6]) # 創(chuàng)建多維數(shù)組 np.zeros((3, 2)) # 3行2列 全0矩陣 np.ones((3, 2)) #全1矩陣 np.full((3, 2), 5) # 3行2列全部填充5
np.array 和 np.asarray 的區(qū)別:
def asarray(a, dtype=None, order=None): return array(a, dtype, copy=False, order=order)
可見(jiàn),它們區(qū)別主要在于: array會(huì)復(fù)制出一個(gè)新的對(duì)象,占用一份新的內(nèi)存空間,而asarray不會(huì)執(zhí)行這一操作。array類似深拷貝,asarray類似淺拷貝。
數(shù)值計(jì)算
基礎(chǔ)計(jì)算
arr1 = np.array([[1,2,3], [4,5,6]]) arr2 = np.array([[6,5], [4,3], [2,1]]) # 查看arr維度 print(arr1.shape) # (2, 3) #切片 np.array([1,2,3,4,5,6])[:3] #array([1,2,3]) arr1[0:2,0:2] # 二維切片 #乘法 np.array([1,2,3]) * np.array([2,3,4]) # 對(duì)應(yīng)元素相乘 array([2,6, 12]) arr1.dot(b) # 矩陣乘法 #矩陣求和 np.sum(arr1) # 所有元素之和 21 np.sum(arr1, axis=0) #列求和 array([5, 7, 9]) np.sum(arr1, axis=1) # 行求和 array([ 6, 15]) # 大最小 np.max(arr1, axis=0/1) np.min(a, axis=0/1)
進(jìn)階計(jì)算
arr = np.array([[1,2], [3,4], [5,6]]) #布爾型數(shù)組訪問(wèn)方式 print((arr>2)) """ [[False False] [ True True] [ True True]] """ print(arr[arr>2]) # [3 4 5 6] #修改形狀 arr.reshape(2,3) """ array([[1, 2, 3], [4, 5, 6]]) """ arr.flatten() # 攤平 array([1, 2, 3, 4, 5, 6]) arr.T # 轉(zhuǎn)置
2. sklearn庫(kù)
若你想快速使用sklearn,我的另一篇博客應(yīng)該可以滿足您的需求,點(diǎn)擊跳轉(zhuǎn):《ML神器:sklearn的快速使用》
是python的重要機(jī)器學(xué)習(xí)庫(kù),其中封裝了大量的機(jī)器學(xué)習(xí)算法,如:分類、回歸、降維以及聚類;還包含了監(jiān)督學(xué)習(xí)、非監(jiān)督學(xué)習(xí)、數(shù)據(jù)變換三大模塊。sklearn擁有完善的文檔,使得它具有了上手容易的優(yōu)勢(shì);并它內(nèi)置了大量的數(shù)據(jù)集,節(jié)省了獲取和整理數(shù)據(jù)集的時(shí)間。因而,使其成為了廣泛應(yīng)用的重要的機(jī)器學(xué)習(xí)庫(kù)。下面簡(jiǎn)單介紹一下sklearn下的常用方法。
監(jiān)督學(xué)習(xí)
sklearn.neighbors #近鄰算法 sklearn.svm #支持向量機(jī) sklearn.kernel_ridge #核-嶺回歸 sklearn.discriminant_analysis #判別分析 sklearn.linear_model #廣義線性模型 sklearn.ensemble #集成學(xué)習(xí) sklearn.tree #決策樹(shù) sklearn.naive_bayes #樸素貝葉斯 sklearn.cross_decomposition #交叉分解 sklearn.gaussian_process #高斯過(guò)程 sklearn.neural_network #神經(jīng)網(wǎng)絡(luò) sklearn.calibration #概率校準(zhǔn) sklearn.isotonic #保守回歸 sklearn.feature_selection #特征選擇 sklearn.multiclass #多類多標(biāo)簽算法
以上的每個(gè)模型都包含多個(gè)算法,在調(diào)用時(shí)直接import即可,譬如:
from sklearn.linear_model import LogisticRefression lr_model = LogisticRegression()
無(wú)監(jiān)督學(xué)習(xí)
sklearn.decomposition #矩陣因子分解 sklearn.cluster # 聚類 sklearn.manifold # 流形學(xué)習(xí) sklearn.mixture # 高斯混合模型 sklearn.neural_network # 無(wú)監(jiān)督神經(jīng)網(wǎng)絡(luò) sklearn.covariance # 協(xié)方差估計(jì)
數(shù)據(jù)變換
sklearn.feature_extraction # 特征提取 sklearn.feature_selection # 特征選擇 sklearn.preprocessing # 預(yù)處理 sklearn.random_projection # 隨機(jī)投影 sklearn.kernel_approximation # 核逼近
數(shù)據(jù)集
此外,sklearn還有統(tǒng)一的API接口,我們通??梢酝ㄟ^(guò)使用完全相同的接口來(lái)實(shí)現(xiàn)不同的機(jī)器學(xué)習(xí)算法,一般實(shí)現(xiàn)流程:
step1. 數(shù)據(jù)加載和預(yù)處理
step2. 定義分類器, 比如: lr_model = LogisticRegression()
step3. 使用訓(xùn)練集訓(xùn)練模型 : lr_model.fit(X,Y)
step4. 使用訓(xùn)練好的模型進(jìn)行預(yù)測(cè): y_pred = lr_model.predict(X_test)
step5. 對(duì)模型進(jìn)行性能評(píng)估:lr_model.score(X_test, y_test)
常見(jiàn)命令:
1. 數(shù)據(jù)集分割
# 作用:將數(shù)據(jù)集劃分為 訓(xùn)練集和測(cè)試集 # 格式:train_test_split(*arrays, **options) from sklearn.mode_selection import train_test_split X, y = np.arange(10).reshape((5, 2)), range(5) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42) """ 參數(shù) --- arrays:樣本數(shù)組,包含特征向量和標(biāo)簽 test_size: float-獲得多大比重的測(cè)試樣本 (默認(rèn):0.25) int - 獲得多少個(gè)測(cè)試樣本 train_size: 同test_size random_state: int - 隨機(jī)種子(種子固定,實(shí)驗(yàn)可復(fù)現(xiàn)) shuffle - 是否在分割之前對(duì)數(shù)據(jù)進(jìn)行洗牌(默認(rèn)True) 返回 --- 分割后的列表,長(zhǎng)度=2*len(arrays), (train-test split) """
以上是“python常用庫(kù)之NumPy和sklearn怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)站欄目:python常用庫(kù)之NumPy和sklearn怎么用-創(chuàng)新互聯(lián)
文章起源:http://m.rwnh.cn/article16/gehdg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航、搜索引擎優(yōu)化、動(dòng)態(tài)網(wǎng)站、面包屑導(dǎo)航、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容