欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python常用庫(kù)之NumPy和sklearn入門(mén)

 更新時(shí)間:2019年07月11日 11:56:31   作者:ML小菜鳥(niǎo)  
這篇文章主要介紹了python常用庫(kù)之NumPy和sklearn入門(mén),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

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ù)類(lèi)型是不用相同的,可以是字符串、可以是整型數(shù)據(jù)、甚至可以是個(gè)類(lèi)實(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類(lèi)似深拷貝,asarray類(lèi)似淺拷貝。

數(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í)算法,如:分類(lèi)、回歸、降維以及聚類(lèi);還包含了監(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 #多類(lèi)多標(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 # 聚類(lèi)
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. 定義分類(lèi)器, 比如: 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)
"""

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python使用type關(guān)鍵字創(chuàng)建類(lèi)步驟詳解

    Python使用type關(guān)鍵字創(chuàng)建類(lèi)步驟詳解

    在本文里我們給讀者們整理了關(guān)于Python如何使用type關(guān)鍵字創(chuàng)建類(lèi)的相關(guān)知識(shí)點(diǎn),需要的朋友們參考學(xué)習(xí)下。
    2019-07-07
  • pycharm debug功能實(shí)現(xiàn)跳到循環(huán)末尾的方法

    pycharm debug功能實(shí)現(xiàn)跳到循環(huán)末尾的方法

    今天小編就為大家分享一篇pycharm debug功能實(shí)現(xiàn)跳到循環(huán)末尾的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • Python史上最全種類(lèi)數(shù)據(jù)庫(kù)操作方法分享

    Python史上最全種類(lèi)數(shù)據(jù)庫(kù)操作方法分享

    本文將詳細(xì)探討如何在Python中連接全種類(lèi)數(shù)據(jù)庫(kù)以及實(shí)現(xiàn)相應(yīng)的CRUD(創(chuàng)建,讀取,更新,刪除)操作,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2023-07-07
  • Python實(shí)現(xiàn)實(shí)時(shí)監(jiān)測(cè)可視化數(shù)據(jù)大屏

    Python實(shí)現(xiàn)實(shí)時(shí)監(jiān)測(cè)可視化數(shù)據(jù)大屏

    實(shí)時(shí)監(jiān)測(cè)的可視化數(shù)據(jù)大屏是一種非常有用的工具,可以幫助我們實(shí)時(shí)了解數(shù)據(jù)的變化和趨勢(shì),下面我們將介紹如何使用Python代碼實(shí)現(xiàn)實(shí)時(shí)監(jiān)測(cè)的可視化數(shù)據(jù)大屏,需要的可以參考一下
    2023-06-06
  • Python表格數(shù)據(jù)處理庫(kù)之tablib庫(kù)詳解

    Python表格數(shù)據(jù)處理庫(kù)之tablib庫(kù)詳解

    這篇文章主要介紹了Python表格數(shù)據(jù)處理庫(kù)之tablib庫(kù)詳解,Tablib是一個(gè)用于處理電子表格數(shù)據(jù)的Python庫(kù),它可以輕松地進(jìn)行數(shù)據(jù)的導(dǎo)入和導(dǎo)出,以及數(shù)據(jù)格式的轉(zhuǎn)換,需要的朋友可以參考下
    2023-08-08
  • 通過(guò)cmd進(jìn)入python的步驟

    通過(guò)cmd進(jìn)入python的步驟

    在本篇文章里小編給大家整理了關(guān)于通過(guò)cmd進(jìn)入python的步驟和實(shí)例,需要的朋友們可以參考下。
    2020-06-06
  • Python時(shí)間序列的實(shí)現(xiàn)

    Python時(shí)間序列的實(shí)現(xiàn)

    本文主要介紹了Python時(shí)間序列的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 如何使用Python設(shè)置和讀取config.ini文件

    如何使用Python設(shè)置和讀取config.ini文件

    使用配置文件是一種常見(jiàn)的方法,而INI文件是一種簡(jiǎn)單而常見(jiàn)的配置文件格式,在本文中,我將介紹如何使用Python設(shè)置和讀取INI格式的配置文件,需要的朋友可以參考下
    2024-03-03
  • python批量處理txt文件的實(shí)例代碼

    python批量處理txt文件的實(shí)例代碼

    這篇文章主要介紹了python批量處理txt文件的實(shí)例代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01
  • 對(duì)numpy中的where方法嵌套使用詳解

    對(duì)numpy中的where方法嵌套使用詳解

    今天小編就為大家分享一篇對(duì)numpy中的where方法嵌套使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10

最新評(píng)論