Scikit-learn是使用最廣泛的Python機(jī)器學(xué)習(xí)庫(kù)之一。它有標(biāo)準(zhǔn)化和簡(jiǎn)單的接口,用于數(shù)據(jù)預(yù)處理和模型訓(xùn)練、優(yōu)化以及評(píng)估。
這個(gè)項(xiàng)目最初是由David Cournapeau 開(kāi)發(fā)的Google Summer of Code 項(xiàng)目,并于2010年首次公開(kāi)發(fā)布。自創(chuàng)建以來(lái),該庫(kù)已經(jīng)發(fā)展成為一個(gè)豐富的生態(tài)系統(tǒng),用于開(kāi)發(fā)機(jī)器學(xué)習(xí)模型。隨著時(shí)間的推移,該項(xiàng)目開(kāi)發(fā)了許多方便的功能,以增強(qiáng)其易用性。在本文中,我將介紹你可能不知道的10個(gè)關(guān)于Scikit-learn最有用的特性。
1. 內(nèi)置數(shù)據(jù)集
Scikit-learn API內(nèi)置了各種toy和real-world數(shù)據(jù)集[1]。這些可以便捷地通過(guò)一行代碼訪問(wèn),如果你正在學(xué)習(xí)或只是想快速嘗試新功能,這會(huì)非常有用。
你還可以使用make_regression()、make_blobs()和make_classification()生成合成數(shù)據(jù)集。所有加載實(shí)用程序都提供了返回已拆分為X(特征)和y(目標(biāo))的數(shù)據(jù)選項(xiàng),以便它們可以直接用于訓(xùn)練模型。
2. 獲取公開(kāi)數(shù)據(jù)集
如果你想直接通過(guò)Scikit-learn訪問(wèn)更多的公共可用數(shù)據(jù)集,請(qǐng)了解,有一個(gè)方便的函數(shù)datasets.fetch_openml,可以讓您直接從openml.org網(wǎng)站[2]獲取數(shù)據(jù)。這個(gè)網(wǎng)站包含超過(guò)21000個(gè)不同的數(shù)據(jù)集,可以用于機(jī)器學(xué)習(xí)項(xiàng)目。
3. 內(nèi)置分類器來(lái)訓(xùn)練baseline
在為項(xiàng)目開(kāi)發(fā)機(jī)器學(xué)習(xí)模型時(shí),首先創(chuàng)建一個(gè)baseline模型是非常有必要的。這個(gè)模型在本質(zhì)上應(yīng)該是一個(gè)“dummy”模型,比如一個(gè)總是預(yù)測(cè)最頻繁出現(xiàn)的類的模型。這就提供了一個(gè)基準(zhǔn),用來(lái)對(duì)你的“智能”模型進(jìn)行基準(zhǔn)測(cè)試,這樣你就可以確保它的性能比隨機(jī)結(jié)果更好。
Scikit learn包括用于分類任務(wù)的DummyClassifier() 和用于基于回歸問(wèn)題的 DummyRegressor()。
4. 內(nèi)置繪圖api
Scikit learn有一個(gè)內(nèi)置的繪圖API,允許你在不導(dǎo)入任何其他庫(kù)的情況下可視化模型性能。包括以下繪圖:部分相關(guān)圖、混淆矩陣、精確召回曲線和ROC曲線。
5. 內(nèi)置特征選擇方法
提高模型性能的一種技術(shù)是只使用最好的特征集或通過(guò)刪除冗余特征來(lái)訓(xùn)練模型。這個(gè)過(guò)程稱為特征選擇。
Scikit learn有許多函數(shù)來(lái)執(zhí)行特征選擇。一個(gè)示例為 SelectPercentile(),該方法根據(jù)所選的統(tǒng)計(jì)方法選擇性能最好的X百分位特征進(jìn)行評(píng)分。
6. 機(jī)器學(xué)習(xí)pipeline
除了為機(jī)器學(xué)習(xí)提供廣泛的算法外,Scikit learn還具有一系列用于「預(yù)處理」和「轉(zhuǎn)換數(shù)據(jù)」的功能。為了促進(jìn)機(jī)器學(xué)習(xí)工作流程的再現(xiàn)性和簡(jiǎn)單性,Scikit learn創(chuàng)建了管道(pipeline),允許將大量預(yù)處理步驟與模型訓(xùn)練階段鏈接在一起。
管道將工作流中的所有步驟存儲(chǔ)為單個(gè)實(shí)體,可以通過(guò)「fit」和「predict」方法調(diào)用該實(shí)體。在管道對(duì)象上調(diào)用fit方法時(shí),預(yù)處理步驟和模型訓(xùn)練將自動(dòng)執(zhí)行。
7. ColumnTransformer
在許多數(shù)據(jù)集中,你將擁有不同類型的特征,需要應(yīng)用不同的預(yù)處理步驟。例如,可能有分類數(shù)據(jù)和連續(xù)數(shù)據(jù)的混合,你可能希望通過(guò)one-hot編碼將分類數(shù)據(jù)轉(zhuǎn)換為數(shù)字,并縮放數(shù)字變量。
Scikit-learn管道有一個(gè)名為ColumnTransformer的函數(shù),它允許你通過(guò)索引或指定列名來(lái)輕松指定要對(duì)哪些列應(yīng)用最適當(dāng)?shù)念A(yù)處理。
8. 管道的HTML形式
管道通常會(huì)變得非常復(fù)雜,尤其是在處理真實(shí)世界的數(shù)據(jù)時(shí)。因此,scikit-learn提供了一種方法來(lái)輸出管道中步驟的HTML圖表[3],非常方便。
9. 可視化 樹(shù)模型
plot_tree() 函數(shù)允許你創(chuàng)建決策樹(shù)模型中的步驟圖。
10. 豐富的第三方擴(kuò)展
許多第三方庫(kù)可以更好地?cái)U(kuò)展scikit-learn的特性。舉個(gè)栗子,category-encoders庫(kù),它為分類特性提供了更大范圍的預(yù)處理方法,以及ELI5包以實(shí)現(xiàn)更大的模型可解釋性。這兩個(gè)包也可以直接在Scikit-learn管道中使用。
本文參考資料
[1]toy和real-world數(shù)據(jù)集: https://scikit-learn.org/stable/datasets/index.html
[2]openml.org網(wǎng)站: https://www.openml.org/home
[3]HTML圖表: https://scikit-learn.org/stable/modules/compose.html#visualizing-composite-estimators
-
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8492瀏覽量
134122 -
python
+關(guān)注
關(guān)注
56文章
4825瀏覽量
86223
原文標(biāo)題:關(guān)于Scikit-Learn你(也許)不知道的10件事
文章出處:【微信號(hào):zenRRan,微信公眾號(hào):深度學(xué)習(xí)自然語(yǔ)言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
評(píng)論