每個(gè)機(jī)器學(xué)習(xí)項(xiàng)目都有自己獨(dú)特的形式。對(duì)于每個(gè)項(xiàng)目,都可以遵循一組預(yù)定義的步驟。盡管沒(méi)有嚴(yán)格的流程,但是可以提出一個(gè)通用模板。
準(zhǔn)備問(wèn)題
不僅是機(jī)器學(xué)習(xí),任何項(xiàng)目的第一步都是簡(jiǎn)單地定義當(dāng)前的問(wèn)題。您首先需要了解背景和需要解決的問(wèn)題。然后設(shè)計(jì)機(jī)器學(xué)習(xí)算法來(lái)有效地解決這一問(wèn)題。一旦清楚地了解了問(wèn)題,就可以解決它。
加載庫(kù)
我將繼續(xù)使用Python。第一步是加載或?qū)胨璧乃袔?kù)和包。一些非?;厩?guī)缀醣匾臋C(jī)器學(xué)習(xí)軟件包是-NumPy,Pandas,Matplotlib和Scikit-Learn。
加載數(shù)據(jù)集
加載庫(kù)后,您需要加載數(shù)據(jù)。Pandas具有執(zhí)行此任務(wù)的非常簡(jiǎn)單的功能-pandas.read_csv。read.csv函數(shù)不僅限于csv文件,而且還可以讀取其他基于文本的文件。其他格式也可以使用pandas讀取功能(例如html,json,pickled文件等)讀取。需要牢記的一件事是,您的數(shù)據(jù)需要與當(dāng)前工作目錄位于同一工作目錄中,否則您將需要在函數(shù)中提供以“ /”為前綴的完整路徑。
匯總數(shù)據(jù)
現(xiàn)在數(shù)據(jù)已加載并準(zhǔn)備好進(jìn)行操作。但是,您需要先檢查數(shù)據(jù)的外觀以及內(nèi)容。首先,您需要查看數(shù)據(jù)具有多少行和列,以及每一列的數(shù)據(jù)類型都是什么(pandas認(rèn)為它們是什么類型)。
快速查看數(shù)據(jù)類型和形狀的方法是— pandas.DataFrame.info。這將告訴您數(shù)據(jù)框具有多少行和列以及它們包含哪些數(shù)據(jù)類型和值。
描述性統(tǒng)計(jì)
顧名思義,描述性統(tǒng)計(jì)數(shù)據(jù)以統(tǒng)計(jì)數(shù)據(jù)的形式描述數(shù)據(jù)-均值,標(biāo)準(zhǔn)差,四分位數(shù)等。獲得完整描述的最簡(jiǎn)單方法是pandas.DataFrame.describe。您可以輕松確定數(shù)據(jù)是否需要縮放或需要添加缺失值,等等。(稍后會(huì)對(duì)此進(jìn)行更多介紹)。
數(shù)據(jù)可視化
數(shù)據(jù)可視化非常重要,因?yàn)樗鼈兪橇私鈹?shù)據(jù)和規(guī)律(即使它們不存在)的最快方法。您的數(shù)據(jù)可能具有數(shù)千個(gè)樣本,甚至更多。無(wú)法直接分析所有數(shù)值數(shù)據(jù)。如果需要可視化,可以使用Matplotlib和Seaborn這樣強(qiáng)大的可視化程序包。
使用Seaborn的Matplotlib進(jìn)行可視化可用于檢查特征內(nèi)的相關(guān)性以及與目標(biāo)的關(guān)系,可以使用散點(diǎn)圖,直方圖和箱形圖來(lái)檢查分布和偏度等。甚至pandas都有自己的內(nèi)置可視化庫(kù)-pandas.DataFrame.plot,其中包含條形圖,散點(diǎn)圖,直方圖等。
Seaborn本質(zhì)上是經(jīng)過(guò)改造的matplotlib,因?yàn)樗⒃趍atplotlib的基礎(chǔ)上,使繪圖更加美觀,并且繪圖速度更快。熱圖和對(duì)圖(pairplot)是Seaborn快速繪制整個(gè)數(shù)據(jù)的可視化以檢查多重共線性,缺失值等特征的示例。
一種獲取大多數(shù)上述數(shù)據(jù)描述性和推斷性信息的統(tǒng)計(jì)數(shù)據(jù)的非常有效的方法是Pandas Profiling。它會(huì)生成數(shù)據(jù)的精美報(bào)告,其中包含上述所有詳細(xì)信息,使您能夠一次分析所有數(shù)據(jù)。
準(zhǔn)備數(shù)據(jù)
知道了數(shù)據(jù)的內(nèi)容和規(guī)律,就需要對(duì)其進(jìn)行轉(zhuǎn)換,以使其適合算法來(lái)更有效地工作,以便提供更準(zhǔn)確,更精確的結(jié)果。這就是數(shù)據(jù)預(yù)處理,這是任何ML項(xiàng)目中最重要,最耗時(shí)的階段。
數(shù)據(jù)清洗
現(xiàn)實(shí)生活中的數(shù)據(jù)不能很好地安排在沒(méi)有異常的數(shù)據(jù)框中并呈現(xiàn)給您。數(shù)據(jù)通常具有很多所謂的異常,例如缺失值,許多格式不正確的特征,不同比例的特征等。所有這些都需要手動(dòng)處理,這需要大量時(shí)間和編碼技巧(主要是python和pandas:D )!
Pandas具有各種功能來(lái)檢查異常,例如pandas.DataFrame.isna以檢查NaN等值。您可能還需要轉(zhuǎn)換數(shù)據(jù)格式以擺脫無(wú)用的信息,例如刪除“ Mr.”和“ Mrs” ”(如果存在單獨(dú)的性別特征)。您可能需要使用pandas.DataFrame.replace函數(shù)以整個(gè)數(shù)據(jù)框的標(biāo)準(zhǔn)格式獲取它,或使用pandas.DataFrame.drop刪除不相關(guān)的特征。
特征選擇
特征選擇是選擇一定數(shù)量的最有用特征的過(guò)程,這些特征將用于訓(xùn)練模型。這樣做是為了在大多數(shù)特征對(duì)整體差異的貢獻(xiàn)不足時(shí)縮小尺寸。如果您的數(shù)據(jù)中有300個(gè)特征,而前120個(gè)特征可以解釋97%的方差,那么用這么多無(wú)用的特征來(lái)充實(shí)您的算法是沒(méi)有意義的。減少特征不僅可以節(jié)省時(shí)間,還可以節(jié)省成本。
一些流行的特征選擇技術(shù)包括SelectKBest,特征消除方法(例如RFE(遞歸特征消除))和嵌入式方法(例如LassoCV)。
特征工程
所有功能可能都不處于最佳狀態(tài)。特征工程的意思是通過(guò)使用一組函數(shù)可以將它們轉(zhuǎn)換為不同的相關(guān)的數(shù)據(jù)。這是為了增加與目標(biāo)的相關(guān)性,從而增加準(zhǔn)確性/分?jǐn)?shù)。其中一些轉(zhuǎn)換與縮放有關(guān),例如StandardScaler,Normalizer,MinMaxScaler等。甚至可以通過(guò)將一些特征進(jìn)行線性/二次組合來(lái)增加特征,以提高性能。對(duì)數(shù)轉(zhuǎn)換,交互作用和Box-Cox轉(zhuǎn)換是數(shù)字?jǐn)?shù)據(jù)的一些有用轉(zhuǎn)換。
對(duì)于分類數(shù)據(jù),有必要將類別編碼為數(shù)字,以便算法可以從中識(shí)別出來(lái)。一些最有用的編碼技術(shù)是– LabelEncoder,OneHotEncoder和Binarizer。
評(píng)估算法
數(shù)據(jù)準(zhǔn)備就緒后,請(qǐng)繼續(xù)檢查各種回歸/分類算法的性能(基于問(wèn)題的類型)。您可以首先創(chuàng)建一個(gè)基本模型來(lái)設(shè)置要進(jìn)行比較的基準(zhǔn)。
拆分驗(yàn)證數(shù)據(jù)集
訓(xùn)練完模型后,還需要對(duì)其進(jìn)行驗(yàn)證,以查看它是否真的對(duì)數(shù)據(jù)進(jìn)行了概括或擬合過(guò)度/不足。手中的數(shù)據(jù)可以預(yù)先分為訓(xùn)練集和驗(yàn)證集。這種拆分具有多種技術(shù)-訓(xùn)練測(cè)試拆分,隨機(jī)排序等。您還可以對(duì)整個(gè)數(shù)據(jù)集運(yùn)行交叉驗(yàn)證,以進(jìn)行更可靠的驗(yàn)證。KFold交叉驗(yàn)證,Leave-One-Out-CV是最流行的方法。
測(cè)試選項(xiàng)和評(píng)估指標(biāo)
基于一組需要定義的評(píng)估指標(biāo)來(lái)評(píng)估模型。對(duì)于回歸算法,一些常用指標(biāo)是MSE和R Square。
與分類有關(guān)的評(píng)估指標(biāo)要多樣化得多-混淆矩陣,F(xiàn)1得分,AUC / ROC曲線等。對(duì)每種算法的這些得分進(jìn)行比較,以檢查哪些算法的性能優(yōu)于其余算法。
抽查算法
拆分?jǐn)?shù)據(jù)并定義評(píng)估指標(biāo)后,您需要在for循環(huán)中運(yùn)行一組算法,以檢查哪個(gè)算法表現(xiàn)最佳。簡(jiǎn)短的算法列表可以很好地解決您的問(wèn)題,這是一個(gè)反復(fù)的嘗試,這樣您便可以加速研究并進(jìn)一步調(diào)優(yōu)它們。
可以制作流水線,并可以混合使用線性和非線性算法來(lái)檢查性能。
比較算法
現(xiàn)場(chǎng)運(yùn)行測(cè)試工具后,您可以輕松查看哪些工具最適合您的數(shù)據(jù)。始終獲得高分的算法應(yīng)該是您的目標(biāo)。然后,您可以選擇最好的,并對(duì)其進(jìn)行進(jìn)一步調(diào)整以提高其性能。
提高準(zhǔn)確性
擁有性能最佳的算法之后,可以調(diào)整它們的參數(shù)和超參數(shù)以提供最好的結(jié)果。也可以連接多種算法。
算法調(diào)整
維基百科指出“超參數(shù)調(diào)整是為機(jī)器學(xué)習(xí)算法選擇一組最佳超參數(shù)”。超參數(shù)是無(wú)法學(xué)習(xí)的參數(shù),必須在運(yùn)行算法之前進(jìn)行設(shè)置。超參數(shù)的一些例子包括邏輯回歸的損失,隨機(jī)梯度下降的損失以及SVM的核。
這些參數(shù)可以在數(shù)組中傳遞,并且算法可以遞歸運(yùn)行,直到找到完美的超參數(shù)。這可以通過(guò)諸如網(wǎng)格搜索和隨機(jī)搜索之類的方法來(lái)實(shí)現(xiàn)。
組合
可以將多種機(jī)器學(xué)習(xí)算法組合在一起,以形成一個(gè)更健壯和更優(yōu)化的模型,該模型相比于單個(gè)算法可以提供更好的預(yù)測(cè)。這被稱為合奏。
有2種類型常見(jiàn)的合奏-套袋(Bootstrap-Aggregating)和Boosting。例如,“隨機(jī)森林”是一種Bagging集成體,它組合了多個(gè)決策樹(shù)并獲取輸出的總和。
另一方面,Boosting通過(guò)適應(yīng)性學(xué)習(xí)的方式組合了一組弱學(xué)習(xí)方式:集合中的每個(gè)模型都得到了擬合,從而更加重視數(shù)據(jù)集中實(shí)例中序列中先前模型存在較大錯(cuò)誤的實(shí)例。XGBoost,AdaBoost,CatBoost是一些例子。
完成模型
驗(yàn)證數(shù)據(jù)集的預(yù)測(cè)
當(dāng)您獲得具有最佳超參數(shù)和合奏的最佳性能模型時(shí),可以在未知的測(cè)試數(shù)據(jù)集上對(duì)其進(jìn)行驗(yàn)證。
在訓(xùn)練集上創(chuàng)建獨(dú)立模型
驗(yàn)證后,對(duì)整個(gè)數(shù)據(jù)集運(yùn)行一次模型,以確保在訓(xùn)練/測(cè)試時(shí)不會(huì)遺漏任何數(shù)據(jù)點(diǎn)。現(xiàn)在,您的模型處于最佳狀態(tài)。
保存模型以備后用
有了準(zhǔn)確的模型后,您仍然需要保存并加載它,以備將來(lái)需要時(shí)使用。完成此操作的最常用方法是Pickle。
以上就是本文的內(nèi)容。當(dāng)然,在機(jī)器學(xué)習(xí)方面,這還不是全部。但這可以用作良好的路線圖。對(duì)于不同類型的數(shù)據(jù)/問(wèn)題,需要自己發(fā)揮。在下面評(píng)論您的想法,或說(shuō)一說(shuō)您是否了解更好和更關(guān)鍵的技術(shù)。
半小時(shí)訓(xùn)練億級(jí)規(guī)模知識(shí)圖譜,亞馬遜AI開(kāi)源知識(shí)圖譜嵌入表示框架DGL-KE
中國(guó)頂尖的技術(shù)社區(qū)們?cè)谝粋€(gè)群里,會(huì)聊什么…
京東智能內(nèi)容創(chuàng)作算法的演進(jìn)與實(shí)踐:基于關(guān)鍵詞自動(dòng)生成摘要
馬化騰、馬云并列成為中國(guó)首富;百度回應(yīng)“將上線電商直播”;.NET 5 Preview 2 發(fā)布 | 極客頭條
程序員職場(chǎng)背鍋甩鍋指南
警惕!新騙術(shù)出現(xiàn):這些虛假二維碼生成器已成功盜取 4.6 萬(wàn)美元!
“出道” 5 年采用率達(dá) 78%,Kubernetes 的成功秘訣是什么?
-
算法
+關(guān)注
關(guān)注
23文章
4623瀏覽量
93102 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8428瀏覽量
132832 -
數(shù)據(jù)可視化
+關(guān)注
關(guān)注
0文章
468瀏覽量
10329
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論