Python基礎(chǔ)訓(xùn)練營(yíng)

緒論

  • 庫(kù)

    • 解決數(shù)據(jù)科學(xué)任務(wù)和挑戰(zhàn)
      • Numpy
      • Pandas
    • 解決數(shù)據(jù)可視化
      • Matplotlib
    • 解決機(jī)器學(xué)習(xí)問(wèn)題
      • Scikit-learn
      • XGBoost/LightGBM
    • 數(shù)據(jù)采集
      • Scrapy
    • 解決深度學(xué)習(xí)任務(wù)
      • Tensorflow
      • PyTorch
      • Keras
    • 分布式深度學(xué)習(xí)
      • Dist-keras
      • elephas
      • spark-deep-learning
    • 自然語(yǔ)言處理
      • NLTK
      • SpaCy
      • Gensim
  • 機(jī)器學(xué)習(xí)項(xiàng)目四大步

    • 問(wèn)題定義與抽象業(yè)務(wù)
      • 問(wèn)題抽象成數(shù)學(xué)問(wèn)題,使用算法模型解決
      • 對(duì)業(yè)務(wù)的理解
      • 算法模型使用問(wèn)題
      • 明確輸入輸出
    • 數(shù)據(jù)清洗和特征工程
      • 缺失值
      • 異常值
      • 不規(guī)范數(shù)據(jù)
      • 特征選擇
      • 數(shù)據(jù)降維
    • 算法選擇與模型訓(xùn)練
      • 算法模型
      • 模型調(diào)用,訓(xùn)練
      • 模型評(píng)估指標(biāo)
    • 模型調(diào)優(yōu)與應(yīng)用
      • 模型調(diào)參
      • 特征優(yōu)化
      • 模型融合

Python基礎(chǔ)知識(shí)

編程規(guī)范

  • 代碼開頭
    Python中的代碼必須頂格編寫,除非被作為語(yǔ)句嵌套在條件判斷或者條件循環(huán)
  • 代碼層級(jí)
    第一層頂格編寫,第二層開頭需要預(yù)留4個(gè)空格(不考慮跨平臺(tái)可以使用tab)
  • 對(duì)齊方式
    同一個(gè)層級(jí)的代碼必須嚴(yán)格對(duì)齊(第一層頂格,第二層空4個(gè)空格,第三層空8個(gè)空格)
  • 注釋
    單行注釋:#
    多行注釋:首尾處用成對(duì)三引號(hào)引用即可,“注釋”;"””注釋””"
  • 代碼塊
    邏輯判斷i以及循環(huán)條件while和for條件后均以冒號(hào)結(jié)尾,然后通過(guò)4個(gè)空格開始下一層級(jí)的實(shí)際執(zhí)行動(dòng)作語(yǔ)句編寫。(冒號(hào)后面接上的語(yǔ)句時(shí)代碼塊)

基本數(shù)據(jù)類型

Number(數(shù)字);String(字符串);List(列表)Tuple(元組);Set(集合);Dictionary(字典)

Numpy

numpy屬性:
ndim-維度,shape-行數(shù)和列數(shù),size-元素個(gè)數(shù)

Pandas

序列Series和數(shù)據(jù)框DataFrame

Series類似于NumPy中的一維數(shù)組,可以使用一維數(shù)組的可用函數(shù)和方法,而且還可以通過(guò)索引標(biāo)簽的方式獲取數(shù)據(jù),具有索引的自動(dòng)對(duì)齊功能

DataFrame類似于Numpy中的二維數(shù)組,同樣可以使用Numpy數(shù)組的函數(shù)和方法,還具有一些其它靈活的使用

  • pd.Series():
    • 通過(guò)一維數(shù)組創(chuàng)建序列
    • 通過(guò)字典的方式創(chuàng)建序列
    • 通過(guò)DataFrame中的某一行或者某一列創(chuàng)建序列
  • pd.DataFrame():
    • 通過(guò)二維數(shù)組創(chuàng)建
    • 通過(guò)字典方式創(chuàng)建
    • 通過(guò)數(shù)據(jù)框創(chuàng)建

查詢數(shù)據(jù),我們需要使用索引有針對(duì)的選取原數(shù)據(jù)中的子集,指定行,指定列等

無(wú)論數(shù)據(jù)框還是序列,最左側(cè)始終有一個(gè)非原始數(shù)據(jù)對(duì)象,這個(gè)就是接下來(lái)要介紹的數(shù)據(jù)索引

通過(guò)索引獲取目標(biāo)數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行一系列的操作

  • 通過(guò)index屬性獲取序列的索引值
  • 更改index
  • 通過(guò)索引獲取數(shù)據(jù)
  • 自動(dòng)化對(duì)齊

sklearn

  • Scikit-learn(sklearn)是機(jī)器學(xué)習(xí)中常用的第三方模塊,對(duì)常用的機(jī)器學(xué)習(xí)方法進(jìn)行了封裝,包括回歸(Regression)、降維(Dimensionality Reduction)、分類(Classfication)、聚類(Clustering)方法。
    • 常用的回歸:線性、決策樹、SVM、KNN;集成回歸:隨機(jī)森林、Adaboost、GradientBoosting、Bagging、ExtraTrees
    • 常用的分類:線性、決策樹、5VM、KNN,樸索貝葉斯;集成分類:隨機(jī)森林、Adaboost、GradientBoosting.Bagging、ExtraTrees
    • 常用聚類:k均值(K-means)、層次聚類(Hierarchical clustering)、DBSCAN常用降維:LinearDiscriminantAnalysis、PCA
  • 常規(guī)使用模式
    • 導(dǎo)包
    • 加載數(shù)據(jù)
    • 數(shù)據(jù)預(yù)處理:降維,數(shù)據(jù)歸一化,特征提取,特征轉(zhuǎn)換
    • 選擇算法訓(xùn)練數(shù)據(jù):直接查看api找到你需要的方法,直接調(diào)用即可,其中你可能需要調(diào)調(diào)參等
    • 測(cè)試數(shù)據(jù):使用模型自帶的score方法,或者使用sklearn指標(biāo)函數(shù),或者使用自己的評(píng)價(jià)方法
    • 預(yù)測(cè)結(jié)果寫入.csv中
  • 數(shù)據(jù)標(biāo)準(zhǔn)化
    • 存在的問(wèn)題:如果某個(gè)特征的方差比其他特征大幾個(gè)數(shù)量級(jí),那么他就會(huì)在學(xué)習(xí)算法中占據(jù)主導(dǎo)位置,導(dǎo)致學(xué)習(xí)器對(duì)其他特征有所忽略。
    • 概念:標(biāo)準(zhǔn)化:先對(duì)數(shù)據(jù)進(jìn)行去中心化,再除以特征的標(biāo)準(zhǔn)差,對(duì)數(shù)據(jù)進(jìn)行縮放
    • 實(shí)現(xiàn)方式:數(shù)據(jù)標(biāo)準(zhǔn)化通過(guò)sklarn中preprocessing.scale()方法實(shí)現(xiàn)
  • 交叉驗(yàn)證
    • 思想:重復(fù)使用數(shù)據(jù),把得到的樣本數(shù)據(jù)進(jìn)行切分,組合成為不同的訓(xùn)練集和驗(yàn)證集,用訓(xùn)練集來(lái)訓(xùn)練模型,用驗(yàn)證集評(píng)估模型預(yù)測(cè)的好壞
    • 簡(jiǎn)單的交叉驗(yàn)證:隨機(jī)的將樣本數(shù)據(jù)分為兩部分(如70%訓(xùn)練,30%測(cè)試),然后用訓(xùn)練集來(lái)訓(xùn)練模型,在驗(yàn)證集上驗(yàn)證模型及參數(shù);接著再把樣本打亂,重新選擇訓(xùn)練集和驗(yàn)證集,重新訓(xùn)練驗(yàn)證,最后選擇損失函數(shù)評(píng)估最優(yōu)的模型和參數(shù)
    • K折交叉驗(yàn)證:隨機(jī)將樣本數(shù)均分為K份,每次隨機(jī)選擇其中的k-1份作為訓(xùn)練集,剩下的1份做驗(yàn)證集。當(dāng)這一輪完成后,重新隨機(jī)選擇k-1份來(lái)訓(xùn)練數(shù)據(jù),若干輪后選擇損失函數(shù)評(píng)估最優(yōu)的模型和參數(shù)。
    • 留一交叉驗(yàn)證:留一交叉驗(yàn)證是k折交叉驗(yàn)證的一種特例,此時(shí)k=n(樣本的個(gè)數(shù)),每次選擇n-1個(gè)樣本進(jìn)行訓(xùn)練,留一個(gè)樣本進(jìn)行驗(yàn)證模型的好壞(這種方法適合樣本量非常少的情況)
    • boostrapping自助采樣:這種方法也是隨機(jī)森林訓(xùn)練樣本采用的方法。在n個(gè)樣本中隨機(jī)有放回抽樣m個(gè)樣本作為一顆樹的一個(gè)訓(xùn)練集,這種采用會(huì)大約有1/3的樣本不被采到,這些不被采到的樣本就會(huì)被作為這棵樹的驗(yàn)證集。
  • 過(guò)擬合
    • 過(guò)擬合的問(wèn)題是因?yàn)槟P瓦^(guò)于復(fù)雜,對(duì)于訓(xùn)練數(shù)據(jù)能很好的擬合,卻不能正確的處理測(cè)試數(shù)據(jù),從一個(gè)角度說(shuō)就是,學(xué)到了一些樣本數(shù)據(jù)一些非通用信息,使得模型的泛化效果非常不好。
    • learning_curve():主要是用來(lái)判斷(可視化)模型是否過(guò)擬合的
    • validation curve():主要是用來(lái)查看在參數(shù)不同的取值下模型的性能
  • 保存模型
    • 目的:節(jié)約時(shí)間,方便的將模型遷移
    • 從sklearn中導(dǎo)入自帶保存模塊
      from sklearn.externals import joblib
      
    • 保存模型
      joblib.dump(model,'sklearn_save/clf.pkl')
      
    • 重新加載模型
      model2=joblib.load('sklearn_save/clf.pkl')
      

參考

深度之眼-Python基礎(chǔ)訓(xùn)練營(yíng)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容