• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • Python數據科學入門-筆記01

    標簽: python

    Python數據科學入門

    慕課網課程學習筆記
    學習環境 win10 + 虛擬機centos7 + python3

    第一節 Annconda 基本介紹

    一、Anaconda 介紹

    1.Anaconda 介紹

    • Anaconda /,æn?’kɑnd?/

    • Anaconda 是最著名的Python數據科學平臺,750+ 流行的Python&R包

    • 跨平臺,開源,免費,活躍社區
    • conda:可擴展的包管理工具

    2.Anaconda 中的 conda

    a).Conda 的 Environment 管理
    • 創建一個新的environment:conda create –name python34 python=3.4
    • **一個 environment:activity python34 # win系統中

      source activity python34 # linux中

    • 退出enviornment: deactivate python34 # win系統

      source deactivate python34 # linux 中

    • 刪除 environment: conda remove –name python34 –all
    b).Conda 的Package 管理
    • Conda 的包管理有點類似 pip
    • 安裝一個python包: conda install packageName
    • 查看已安裝包: conda list / conda list -n python34 # 查看指定環境的包列表
    • 刪除一個 python 包: conda remove -n python34 numpy
    c). IDE 比較

    IDE比較

    拓展:從IPython 到 Jupyter

    d). 什么是 Ipython
    • ipython 是一個強大的 交互式 shell
    • 是 Jupyter 的kernel
    • 支持交互式數據分析和可視化
    • Ipython kernel 主要負責運行用戶代碼,通過stdin/stdut 和ipython shell交互

      用 json message 通過 ZeroMQ 和 notebook 交互

    e). 什么是 Jupyter Notebook
    • 前身是 ipython notebook
    • 是一個開源的 web application
    • 可以創建和分享包含代碼,視圖,注釋文檔
    • 可以用于統計數據統計,分析,建模,機器學習等領域
    f).notebook 和 Kernel 之間的交互
    • 核心是 notebook server
    • notebook server 加載和保存 notebook

    g).Notebook 的文件格式 .ipynb
    • 由 Ipython Notebook 定義的一種格式(json)
    • 可以讀取在線數據,csv / xls 文件
    • 可以轉換成其他格式(py,html,pdf,md)
    h).查看 .ipynb 文件 NBViewer
    • 一個 online 的 ipynb 格式 notebook 展示工具
    • 可以通過 URL 分享
    • GitHub 集成了 NBViewer
    • 通過轉換器輕松集成到 Blogs , emails,wikis ,books

    二.環境安裝

    1.安裝Anaconda 到 Centos7

    • 官網下載好 Anaconda的 .sh 文件后

    • 使用SecureCRT的sftp上傳到 centos 中

    • sftp 的一些命令:lpwd 查看本地物理機所在目錄,cld 進入本地目錄,put 上傳文件到 遠程機

    • 上傳 安裝文件后,使用 sh 命令按提示安裝 Anaconda

    2.Anaconda 基本命令

    • conda –version 查看版本號
    • jupyter notebook –no-browser 只啟動 服務,不啟動瀏覽器

    3.ssh 虛擬機 端口轉發 到本地物理機

    如果是桌面版 centos 可直接在虛擬機里訪問即可
    或者本地機安裝直接使用


    可以將遠端服務器一個端口remote_port綁定到本地端口port,其中-C是進行數據壓縮,-f是后臺操作,只有當提示用戶名密碼的時候才轉向前臺。-N是不執行遠端命令,在只是端口轉發時這條命令很有用處。-g 是允許遠端主機連接本地轉發端口。-R表明是將遠端主機端口映射到本地端口。如果是-L,則是將本地端口映射到遠端主機端口。

    轉發命令:(注意參數對應)

    • 轉發到遠端:ssh -C -f -N -g -L 本地端口:目標IP:目標端口 用戶名@目標IP
    • 轉發到本地:ssh -C -f -N -g –R 本地端口:目標IP:目標端口 用戶名@目標IP
    • ssh -C -f -N -g -D listen_port user@hostname/ip

    SSH端口轉發

    接著瀏覽器訪問:


    三.jupyter 的使用

    1.登錄

    Jupyter

    2.新建 notebook

    新建notebook

    3.操作演示

    操作演示

    4.win 系統下啟動 jupyter 服務

    win系統下啟動 jupyter 服務

    5.一些基本操作



    第二節 數據科學領域的幾個常用Python庫

    數據科學領域 5個 常用Python庫
    Numpy/Scipy/Pandas/Matplotlib/Scikit-learn

    1.Numpy 特點

    • N維數組(矩陣),快速高效,矢量數學運算
    • 高效的Index,不需要循環
    • 開源免費跨平臺,運行效率足以和 C/Matlab 媲美

    2.Scipy 特點

    • 依賴于Numpy
    • 專門為科學和工程設計
    • 實現了多種常用科學計算:線性代數,傅里葉變換,信號和圖像處理

    3.Pandas 特點

    • 結構化數據分析利器(依賴于Numpy)
    • 提供多種高級數據結構:Time-Series,DataFrame,Panel
    • 強大的數據索引和數據處理能力

    4.Matplotlib 特點

    • Python 2D繪圖領域使用最廣泛的套件
    • 基本能取代Matlab的繪圖功能(散點,曲線,柱形等)
    • 通過 mplot3d 可以繪制精美的 3D 圖

    5.Scikit-learn 特點

    • 機器學習的 Python 模塊
    • 建立在 Scipy 之上,提供了常用的機器學習算法:聚類,回歸
    • 簡單易學的API接口
    • 另外還有 google 的TensorFlow

    第三節 Numpy 入門

    Numpy文檔

    1.矩陣回顧

    • 基本概念:
      • 矩陣:矩形的數組,即二維數組。其中向量和標量都是矩陣的特例
      • 向量:是指 1 * n 或者 n * 1 的矩陣
      • 標量:1 * 1 的矩陣
      • 數組:N 維的數組,是矩陣的延伸
    • 特殊矩陣
      • 全 0 、全 1 矩陣
      • 單位矩陣

        矩陣

    • 矩陣加減運算兩個矩陣必須要有相同的行和列

      • 相加/減的
      • 行和列對應元素相加減

        矩陣加法

    • 數組乘法(點乘)

      • 數組乘法是對應元素之間的乘法

        數組乘法

    • 矩陣乘法只有當矩陣 A的列數與矩陣 B的行數相等時 A× B才有意義
      • Ab x p的矩陣, Bp x n的矩陣,

        m * n的矩陣 C 為A與B的乘積,記 C=AB,其中矩陣C中的第 i 行第 j 列元素可以表示為:

        矩陣乘法

    2.數組的創建和訪問

    數組的創建和訪問

    import numpy as np
    # 創建 列表
    list_1 = [1,2,3,4]
    list_1
    [1, 2, 3, 4]
    
    array_1 = np.array(list_1)  #創建一維數組
    array_1
    array([1, 2, 3, 4])
    
    list_2 = [5,6,7,8]
    array_2 = np.array([list_1,list_2]) # 創建二維數組
    array_2
    array([[1, 2, 3, 4],
           [5, 6, 7, 8]])
    
    array_2.shape  # 返回數組 維數
    (2, 4)
    
    array_2.size # 返回數組元素個數
    8
    
    array_2.dtype   # 返回數組元素類型 (這里的元素類型一致)
    dtype('int32')
    
    array_3 = np.array([[1.0,2,3],[4.0,5,6]])  # 數據類型不同的數組
    array_3.dtype   # 數據類型不一致,取精確度最高的
    dtype('float64')
    

    通過函數創建矩陣

    array_4 = np.arange(1,10)  # 通過arange() 函數創建 數組
    array_4             # np.arange(始,終,步長)
    array([1, 2, 3, 4, 5, 6, 7, 8, 9])
    
    np.zeros(5) #  一維全 0 矩陣
    array([0., 0., 0., 0., 0.])
    
    np.zeros([2,3])  # 二維全 0 矩陣
    array([[0., 0., 0.],
           [0., 0., 0.]])
    
    np.eye(5) # 5 * 5 單位矩陣
    array([[1., 0., 0., 0., 0.],
           [0., 1., 0., 0., 0.],
           [0., 0., 1., 0., 0.],
           [0., 0., 0., 1., 0.],
           [0., 0., 0., 0., 1.]])
    

    數組元素的訪問

    a = np.arange(1,10)
    a
    array([1, 2, 3, 4, 5, 6, 7, 8, 9])
    
    a[1]
    2
    
    a[1:5]  # 訪問2到5元素
    array([2, 3, 4, 5])
    
    b = np.array([[1,2,3],[4,5,6]])
    b
    array([[1, 2, 3],
           [4, 5, 6]])
    
    b[1][2]  # 訪問二維數組 注意起始是 0 或者 b[1,0]
    6
    
    c = np.array([[1,2,3],[4,5,6],[7,8,9]])
    c
    array([[1, 2, 3],
           [4, 5, 6],
           [7, 8, 9]])
    
    c[:2,1:]  # 二維數組的切片操作
    array([[2, 3],
           [5, 6]])
    

    3.數組和矩陣運算

    快速創建數組

    import numpy as np
    np.random.randn(10)  # 符合標準正態分布
    array([-0.44773486, -1.02510785, -1.29485893, -1.26046504,  0.62437175,
           -0.32248227, -0.64261711,  0.79787437,  2.40994751,  0.83609302])
    
    np.random.randint(10)  # 隨機返回一個 10 以內的數
    6
    
    np.random.randint(10,size=(2,3))  # 返回 10 以內的 2 行 3 列 數組
    array([[0, 3, 2],
           [5, 4, 6]])
    
    np.random.randint(10,size=20).reshape(4,5) # 將 20 個元素的一維變為 二維
    array([[3, 5, 9, 8, 4],
           [4, 6, 1, 8, 8],
           [2, 4, 5, 6, 9],
           [2, 5, 4, 7, 6]])
    

    數組運算

    a = np.random.randint(10,size=20).reshape(4,5)
    a
    array([[2, 6, 4, 3, 2],
           [0, 6, 3, 4, 0],
           [8, 1, 1, 5, 6],
           [5, 0, 0, 1, 9]])
    
    b = np.random.randint(10,size=20).reshape(4,5)
    b
    array([[4, 4, 7, 3, 3],
           [2, 4, 2, 1, 5],
           [8, 8, 8, 8, 1],
           [0, 9, 1, 9, 4]])
    
    a + b
    array([[ 6, 10, 11,  6,  5],
           [ 2, 10,  5,  5,  5],
           [16,  9,  9, 13,  7],
           [ 5,  9,  1, 10, 13]])
    
    a - b
    array([[-2,  2, -3,  0, -1],
           [-2,  2,  1,  3, -5],
           [ 0, -7, -7, -3,  5],
           [ 5, -9, -1, -8,  5]])
    
    a * b
    array([[ 8, 24, 28,  9,  6],
           [ 0, 24,  6,  4,  0],
           [64,  8,  8, 40,  6],
           [ 0,  0,  0,  9, 36]])
    
    a / b   # 遇到 被除數為 0 時 --- inf
    C:\myapp\Anaconda3\lib\site-packages\ipykernel_launcher.py:1: RuntimeWarning: divide by zero encountered in true_divide
      """Entry point for launching an IPython kernel.
    
    
    
    
    
    array([[0.5       , 1.5       , 0.57142857, 1.        , 0.66666667],
           [0.        , 1.5       , 1.5       , 4.        , 0.        ],
           [1.        , 0.125     , 0.125     , 0.625     , 6.        ],
           [       inf, 0.        , 0.        , 0.11111111, 2.25      ]])
    

    創建矩陣

    np.mat([[1,2,3],[4,5,6]])
    matrix([[1, 2, 3],
            [4, 5, 6]])
    
    a
    array([[2, 6, 4, 3, 2],
           [0, 6, 3, 4, 0],
           [8, 1, 1, 5, 6],
           [5, 0, 0, 1, 9]])
    
    np.mat(a)  # 數組轉換為矩陣
    matrix([[2, 6, 4, 3, 2],
            [0, 6, 3, 4, 0],
            [8, 1, 1, 5, 6],
            [5, 0, 0, 1, 9]])
    

    矩陣的運算

    A = np.mat(a)
    A
    matrix([[2, 6, 4, 3, 2],
            [0, 6, 3, 4, 0],
            [8, 1, 1, 5, 6],
            [5, 0, 0, 1, 9]])
    
    B = np.mat(b)
    B
    matrix([[4, 4, 7, 3, 3],
            [2, 4, 2, 1, 5],
            [8, 8, 8, 8, 1],
            [0, 9, 1, 9, 4]])
    
    A + B
    matrix([[ 6, 10, 11,  6,  5],
            [ 2, 10,  5,  5,  5],
            [16,  9,  9, 13,  7],
            [ 5,  9,  1, 10, 13]])
    
    A * B   # 只有當矩陣 A的列數與矩陣 B的行數相等時 A× B才有意義
    ---------------------------------------------------------------------------
    
    ValueError                                Traceback (most recent call last)
    
    <ipython-input-28-a4cedde81ed0> in <module>()
    ----> 1 A * B
    
    
    C:\myapp\Anaconda3\lib\site-packages\numpy\matrixlib\defmatrix.py in __mul__(self, other)
        307         if isinstance(other, (N.ndarray, list, tuple)) :
        308             # This promotes 1-D vectors to row vectors
    --> 309             return N.dot(self, asmatrix(other))
        310         if isscalar(other) or not hasattr(other, '__rmul__') :
        311             return N.dot(self, other)
    
    
    ValueError: shapes (4,5) and (4,5) not aligned: 5 (dim 1) != 4 (dim 0)
    
    a = np.mat(np.random.randint(10,size=20).reshape(4,5))
    a
    matrix([[3, 4, 1, 5, 2],
            [3, 7, 8, 7, 3],
            [4, 2, 6, 9, 6],
            [4, 4, 5, 2, 7]])
    
    b = np.mat(np.random.randint(10,size=20).reshape(5,4))
    b
    matrix([[9, 6, 0, 4],
            [4, 3, 6, 5],
            [4, 6, 1, 8],
            [4, 4, 3, 5],
            [2, 1, 1, 1]])
    
    a * b
    matrix([[ 71,  58,  42,  67],
            [121, 118,  74, 149],
            [116, 108,  51, 125],
            [ 94,  81,  42,  93]])
    

    Array 常用函數

    a = np.random.randint(10,size=20).reshape(4,5)
    np.unique(a)  # 返回 不重復的值
    array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    
    a
    array([[0, 5, 3, 2, 7],
           [8, 0, 1, 7, 6],
           [2, 0, 9, 8, 2],
           [7, 1, 2, 9, 4]])
    
    sum(a)  # 返回一個數組 列和
    array([17,  6, 15, 26, 19])
    
    sum(a[0])  # 返回某一行和
    17
    
    sum(a[:,1])  # 返回某一列和
    6
    
    a.max()  # 返回最大值
    9
    
    max(a[0]) # 第 0 行最大值
    7
    

    Array 的 input 和 output

    使用pickle序列化 bumpy array

    import pickle
    import numpy as np
    x = np.arange(10)
    x
    array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    
    f = open('x.pkl','wb')
    pickle.dump(x,f)
    !ls   
    Array.ipynb
    Untitled.ipynb
    x.pkl
    鏁扮粍涓庣煩闃佃繍綆?.ipynb
    
    f = open('x.pkl','rb')
    pickle.load(f)
    array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    

    ### 使用 save 函數序列化保存

    np.save('one_array',x) 
    !ls
    Array.ipynb
    Untitled.ipynb
    one_array.npy
    x.pkl
    鏁扮粍涓庣煩闃佃繍綆?.ipynb
    
    np.load('one_array.npy')
    array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    
    y = np.arange(20)
    y
    array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
           17, 18, 19])
    
    np.savez('two_array.npz',a=x,b=y)
    !ls
    Array.ipynb
    Untitled.ipynb
    one_array.npy
    two_array.npz
    x.pkl
    鏁扮粍涓庣煩闃佃繍綆?.ipynb
    
    c = np.load('two_array.npz')  # 多個
    c['a']
    array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    
    c['b']
    array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
           17, 18, 19])
    
    版權聲明:本文為iflytop原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/iflytop/article/details/80544532

    智能推薦

    Python 數據科學入門教程:TensorFlow 目標檢測

    TensorFlow 目標檢測 原文:TensorFlow Object Detection 譯者:飛龍 協議:CC BY-NC-SA 4.0 一、引言 你好,歡迎閱讀 TensorFlow 目標檢測 API 迷你系列。 這個 API 可以用于檢測圖像和/或視頻中的對象,帶有使用邊界框,使用可用的一些預先訓練好的模型,或者你自己可以訓練的模型(API 也變得更容易)。 首先,你要確保你有 Tens...

    Python基礎+數據科學入門(一)基本語法元素

    聲明:該博客參考深度之眼的視頻課程,如有侵權請聯系小編刪除博文,謝謝! 若總結有所失誤,還請見諒,并歡迎及時指出。 Python所使用環境和基本語法元素 該系列python基礎針對之后學習人工智能打造的,所學習的python基礎知識并不全面,僅涉及與人工智能方面相關的python內容 所使用開發環境 以Anaconda為主要開發工具(可自行百度安裝教程),使用Jupyter Notebook 開發...

    猿創征文|【Python數據科學快速入門系列 | 05】常用科學計算函數

    這是機器未來的第44篇文章 原文首發地址:https://blog.csdn.net/RobotFutures/article/details/126615267 文章目錄 1. 概述 2. 加載數據集 3. 查看數據特征 3.1 查看首5行數據 3.2 查看數據集每個特征的最大值 3.3 查看每個特征的最小值 3.4 查看特征均值 3.5 查看特征百分位數 3.6 查看特征數據分布波動 3.8 ...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    猜你喜歡

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    Linux C系統編程-線程互斥鎖(四)

    互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...

    統計學習方法 - 樸素貝葉斯

    引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...

    精品国产乱码久久久久久蜜桃不卡