緒論
-
庫(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
- 解決數(shù)據(jù)科學(xué)任務(wù)和挑戰(zhàn)
-
機(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)化
- 模型融合
- 問(wèn)題定義與抽象業(yè)務(wù)
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)