sklearn官網,Scikit-learn針對Python編程語言的免費軟件機器學習庫
Sklearn是什么?
sklearn官網: https://scikit-learn.org/stable/index.html
sklearn中文指南 社區: https://scikit-learn.org.cn/

Sklearn常用功能介紹
2.1 聚類
聚類是一種典型的無監督學習任務,但也是實際應用中較為常見的需求。在不提供樣本真實標簽的情況下,基于某些特征對樣本進行物以類聚。根據聚類的原理,主要包括:K-MEANS、近鄰傳播(AffinityPropagation)、均值偏移(MeanShift)、譜聚類(SpectralCluster)、層次聚類(AgglomerativeClustering)、密度噪聲(DBSCAN)、平衡迭代層次聚類(Birch)、高斯混合(GMM)、雙向聚類(SpectralBiclustering)。
2.2 降維
降維也屬于無監督學習的一種,將已存在的特征進行壓縮,降維完畢后的特征不是原本的特征矩陣中的任何一個特征,而是通過某些方式組合起來的新特征。盡可能保留原有信息的情況下降低維度,一般采用PCA處理,且降維后的特征與原特征沒有直接聯系,使得模型訓練不再具有可解釋性。根據降維的原理,主要包括:普通PCA、增量PCA(IPCA)、使用隨機化的SVD的PCA、Kernel PCA、稀疏化PCA 和minibatchsparsePCA、非負矩陣分解、成分分析-ICA、Latent Dirichlet Allocation (LDA)。

2.3 度量指標
不同的度量指標可以學到不同的最優模型。對于不同類型任務,sklearn提供了多種度量指標,包括:
·分類任務:準確率,所有樣本中分類正確樣本所占比例;精準率和召回率,一對相互矛盾的指標,適用于分類樣本數量不均衡時,此時為了保證既定目標,可只選其中一個指標;調和平均數F1,相當于兼顧了精準率和召回率兩項指標;
·回歸任務:常用的包括MSE、MAE,F1-score;
·聚類任務:輪廓系數(無需先驗標簽,用組內距離與組外最近距離的比值度量)、調整蘭德指數(基于真實分簇標簽和聚類標簽計算)。
2.4 集成學習模型
當基本學習模型性能難以滿足需求時,集成學習便應運而生。集成學習,顧名思義,就是將多個基學習器的結果集成起來匯聚出最終結果。而根據匯聚的過程,集成學習主要包括3種流派:
·bagging,即bootstrap aggregating,通過自助取樣(有放回取樣)實現并行訓練多個差異化的基學習器,雖然每個學習器效果可能并不突出,但通過最后投票得到的最終結果性能卻會穩步提升。當基學習器采取決策樹時,bagging思想的集成學習模型就是隨機森林。另外,與bagging對應的另一種方式是無放回取樣,相應的方法叫pasting,不過應用較少;
·boosting,即提升法。基學習器串行組合,試圖減小組合學習器的偏差,把幾個弱學習器組合成一個強力的集成模型。(eg:adaboost,Gradient Tree Boosting)與bagging模型并行訓練多個基學習器不同,boosting的思想是基于前面訓練結果逐漸訓練更好的模型,屬于串行的模式。根據實現細節不同,又具體分為兩種boosting模型,分別是Adaboost和GBDT,二者的核心思想差異在于前者的提升聚焦于之前分錯的樣本、而后者的提升聚焦于之前漏學的殘差。另外一個大熱的XGBoost是對GBDT的一個改進,實質思想是一致的‘’
·stacking,即堆棧法,基本流程與bagging類似而又不同:stacking也是并行訓練多個基學習器,而后又將這些訓練的結果作為特征進行再次學習。有些類似于深度學習中的多層神經網絡。

2.5 樣例數據集
sklearn提供了一些經典數據集,數據集主要圍繞分類和回歸兩類經典任務,通過這些數據集可快速搭建機器學習任務、對比模型性能。
常用數據集簡介如下:
·load_breast_cancer:乳腺癌數據集,標簽為0或1的二分類任務;
·load_iris:經典鳶尾花數據集,特征為連續數值變量,標簽為0/1/2的三分類任務;
·load_wine:紅酒數據集,各類樣本數量輕微不均衡;
·load_digits:小型手寫數字數據集(之所以稱為小型,是因為還有大型的手寫數字數據集mnist),包含0-9共10種標簽,各類樣本均衡;
·load_boston:波士頓房價數據集,適用于回歸任務值得指出。
2.6 數據預處理
sklearn中的各模型均有規范的數據輸入輸出格式,一般以np.array和pd.dataframe為標準格式,所以一些字符串的離散標簽是不能直接用于模型訓練的;同時為了加快模型訓練速度和保證訓練精度,往往還需對數據進行預處理,常用的數據預處理功能:
·MinMaxScaler:最大最小歸一化;
·StandardScaler:標準化歸一化,主要適用于可能存在極大或極小的異常值,此時用MinMaxScaler時,可能因單個異常點而將其他數值變換的過于集中,而用標準正態分布去量綱則可有效避免這一問題;
·Binarizer:二值化處理,適用于將連續變量離散化;
·OneHotEncoder:獨熱編碼,一種經典的編碼方式,適用于離散標簽間不存在明確的大小相對關系時;
·Ordinary:數值編碼,適用于某些標簽編碼為數值后不影響模型理解和訓練時。
2.7 特征選擇
機器學習中有句經典的臺詞是:數據和特征決定學習上限,模型和算法只是逼近這個上限,可見特征工程在機器學習中的重要性。幾種常見的特征選擇方式:from_model、VarianceThreshold、SelectKBest。
2.8 模型選擇
模型選擇是機器學習中的重要環節,涉及到的操作包括數據集切分、參數調整和驗證等。對應常用函數包括:
·train_test_split:常用操作之一,切分數據集和測試集,可設置切分比例;
·cross_val_score:交叉驗證,默認K=5折,相當于把數據集平均切分為5份,并逐一選擇其中一份作為測試集、其余作為訓練集進行訓練及評分,最后返回K個評分;
·GridSearchCV:調參常用方法,通過字典類型設置一組候選參數,并制定度量標準,最后返回評分最高的參數。
2.9 基本學習模型
分類和回歸任務是機器學習中的經典場景,同屬于有監督學習。經典的學習算法主要包括5種:
·線性模型,回歸任務中對應線性回歸,分類任務則對應即邏輯回歸,或者叫對數幾率回歸,實質是通過線性回歸擬合對數幾率的方式來實現二分類;
·K近鄰,最簡單易懂的機器學習模型,無需訓練(惰性模型),僅僅是通過判斷自己所處位置周邊的樣本判斷類比或者擬合結果;
·支持向量機,一個經典的機器學習模型,最初也是源于線性分類,通過最大化間隔實現最可靠的分類邊界。業界相傳:支持向量機有三寶、間隔對偶核函數。其中”間隔”由硬間隔升級為軟間隔解決了帶異常值的線性不可分場景,”對偶”是在優化過程中求解拉格朗日問題的一個小技巧,而核函數才是支持向量機的核心,通過核實的核函數可以實現由線性可分向線性不可分的升級、同時避免了維度災難;
·樸素貝葉斯,源于概率論中貝葉斯全概率公式,模型訓練的過程就是擬合各特征分布概率的過程,而預測的過程則是標出具有最大概率的類比,是一個純粹的依據概率完成分類任務的模型。而像邏輯回歸、K近鄰、支持向量機以及決策樹,雖然也都可以預測出各類別概率,但并不是純粹意義上的概率;
·決策樹,這是一個直觀而又強大的機器學習模型,訓練過程主要包括特征選擇-切分-剪枝,典型的3個決策樹是ID3、C4.5和CART,其中CART樹既可用于分類也可用于回歸。更重要的是,決策樹不僅模型自身頗具研究價值,還是眾多集成學習模型的基學習器。
安裝指南
有多種安裝scikit-learn的方法:
安裝最新的官方版本。這是對于大多數用戶來說最好的方法。它將提供一個較穩定的版本,并且預編譯的軟件包可適用于大多數平臺。 安裝電腦操作系統或Python發行版提供的scikit-learn版本 。對于電腦操作系統或Python發行版兼容scikit-learn的用戶來說,這是一個快速的選擇。它提供的可能不是最新的發行版本。 從源代碼構建軟件包。對于想要最新和最強大的功能并且不害怕運行全新代碼的用戶而言,這是最好的選擇。這也正是希望為該項目做出貢獻的用戶所需要的。
安裝最新版本
操作系統:Windows
包管理器:pip
例如從https://www.python.org上安裝Python 3的64位版本。
然后運行:
pip?install?-U?scikit-learn
您可以使用以下語句去檢查
python?-m?pip?show?scikit-learn?#?查看scikit-learn安裝的位置及安裝的版本
python?-m?pip?freeze?#?查看所有在虛擬環境中已下載的包
python?-c?"import?sklearn;?sklearn.show_versions()"
操作系統:Windows
包管理器:conda
安裝 conda(不需要管理員權限).
然后運行:
conda?install?scikit-learn
您可以使用以下語句去檢查
conda?list?scikit-learn?#?查看scikit-learn安裝的位置及安裝的版本
conda?list?#?查看所有在虛擬環境中已下載的包
python?-c?"import?sklearn;?sklearn.show_versions()"
操作系統:macOS
包管理器:pip
使用?homebrew?(brew install python
) 或通過從?https://www.python.org手動安裝軟件包來安裝Python 3
然后運行:
pip?install?-U?scikit-learn
您可以使用以下語句去檢查
python?-m?pip?show?scikit-learn?#?查看scikit-learn安裝的位置及安裝的版本
python?-m?pip?freeze?#?查看所有在虛擬環境中已下載的包
python?-c?"import?sklearn;?sklearn.show_versions()"
操作系統:macOS
包管理器:conda
安裝 conda(不需要管理員權限).
然后運行:
conda?install?scikit-learn
您可以使用以下語句去檢查
conda?list?scikit-learn?#?查看scikit-learn安裝的位置及安裝的版本
conda?list?#?查看所有在虛擬環境中已下載的包
python?-c?"import?sklearn;?sklearn.show_versions()"
操作系統:Linux
包管理器:pip
使用Linux發行版的軟件包管理器安裝python3和python3-pip
然后運行:
pip3?install?-U?scikit-learn
您可以使用以下語句去檢查
python3?-m?pip?show?scikit-learn?#?查看scikit-learn安裝的位置及安裝的版本
python3?-m?pip?freeze?#?查看所有在虛擬環境中已下載的包
python3?-c?"import?sklearn;?sklearn.show_versions()"
操作系統:Linux
包管理器:conda
安裝 conda(不需要管理員權限).
然后運行:
conda?install?scikit-learn
您可以使用以下語句去檢查
conda?list?scikit-learn?#?查看scikit-learn安裝的位置及安裝的版本
conda?list?#?查看所有在虛擬環境中已下載的包
python?-c?"import?sklearn;?sklearn.show_versions()"
? 請注意,為了避免與其他軟件包產生潛在的沖突,強烈建議使用虛擬環境,例如python3?virtualenv
?(請參閱python3 virtualenv文檔)或conda環境。
? 使用的環境去安裝scikit-learn的特定版本及其依賴項時,可以完全與任何先前安裝的Python軟件包區分開。特別是在Linux下,不建議安裝pip軟件包依賴于軟件包管理器(apt,dnf,pacman…)管理的軟件包上。
請注意,無論何時啟動新的終端會話,您都應該始終記住在運行任何Python命令之前要先激活您選擇的環境。
? 如果尚未安裝NumPy或SciPy,也可以使用conda或pip安裝它們。使用pip時,請確保使用二進制wheels,并且不會從源代碼重新編譯NumPy和SciPy,這在使用操作系統和硬件的特定配置(例如Raspberry Pi上的Linux)時可能會發生。
? 如果必須使用pip安裝scikit-learn及其依賴項,則可以將其安裝為scikit-learn[alldeps]
。
? Scikit-learn的繪圖功能(例如,函數以“ plot_”開頭和類以“ Display”結尾)需要Matplotlib(> = 2.1.1)。為了運行這些示例,需要Matplotlib> = 2.1.1。其他有些示例需要scikit-image> = 0.13,有些示例需要Pandas> = 0.18.0,有些示例需要seaborn> = 0.9.0。
警告:
Scikit-learn?0.20是最后一個支持Python?2.7和Python?3.4的版本。?Scikit-learn0.21支持Python?3.5-3.7。?Scikit-learn0.22支持Python?3.5-3.8。Scikit-learn現在需要Python?3.6或更高版本。
注意:
要在PyPy上安裝,需要PyPy3-v5.10?+,Numpy?1.14.0+和scipy?1.1.0+。
scikit-learn的第三方發行版
? 一些第三方發行版提供了scikit-learn的版本及其軟件包管理系統。
? 這些功能使用戶的安裝和升級變得更加容易,因為集成功能擁有自動安裝scikit-learn所需的依賴項(numpy,scipy)的能力。
? 以下是OS和python發行版提供的scikit-learn版本的不完整列表。
Arch
? Arch Linux的包是通過官方資料庫的?python-scikit-learn
提供的。可以通過鍵入以下命令來安裝它:
sudo?pacman?-S?python-scikit-learn
Debian / Ubuntu
? Debian / Ubuntu軟件包分為三個不同的軟件包,分別稱為?python3-sklearn
(python模塊),python3-sklearn-lib
(低配版),python3-sklearn-doc
(文檔)。Debian Buster(最新的Debian發行版)中僅提供Python 3版本。可以使用命令apt-get
安裝軟件包:
sudo?apt-get?install?python3-sklearn?python3-sklearn-lib?python3-sklearn-doc
Fedora
? Fedora軟件包在python 3版本中被稱為python3-scikit-learn
,這是Fedora30中唯一可用的版本。可以使用dnf
命令安裝:
sudo?dnf?install?python3-scikit-learn
NetBSD
? scikit-learn可通過pkgsrc-wip獲得:
http://pkgsrc.se/math/py-scikit-learn
MacPorts for Mac OSX
? MacPorts軟件包的名稱為py<XY>-scikits-learn
,其中XY
表示Python版本。可以通過鍵入以下命令來安裝它:
sudo?port?install?py36-scikit-learn
Canopy和Anaconda適用于所有支持的平臺
? 除了用于Windows,Mac OSX和Linux的大量科學python庫之外,Canopy和Anaconda還提供了最新版本的scikit-learn。
? Anaconda免費提供scikit-learn。
Intel conda channel
? 英特爾擁有專用的conda渠道,該渠道可提供scikit-learn:
conda?install?-c?intel?scikit-learn
? 此版本的scikit-learn包含一些常見估量的替代求解器。這些求解器來自DAAL C ++庫,并針對多核Intel CPU進行了優化。
? 請注意,默認情況下不啟用這些求解器,請參閱?daal4py文檔以獲取更多詳細信息。
? 可通過在https://github.com/IntelPython/daal4py上報告的自動集成,運行完整的scikit-learn測試,來檢查與標準scikit-learn解算器的兼容性。
Windows 版WinPython
? 該WinPython項目作為額外的插件在scikit-learn發布。
故障排除
Windows上的文件路徑長度限制引起的錯誤
? 如果將Python安裝在電腦內部位置(例如AppData
用戶主目錄下的文件夾結構)中,若達到Windows的默認路徑大小限制時,pip可能無法安裝軟件包 ,例如:
C:\Users\username>C:\Users\username\AppData\Local\Microsoft\WindowsApps\python.exe?-m?pip?install?scikit-learn
Collecting?scikit-learn
...
Installing?collected?packages:?scikit-learn
ERROR:?Could?not?install?packages?due?to?an?EnvironmentError:?[Errno?2]?No?such?file?or?directory:?'C:\\Users\\username\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python37\\site-packages\\sklearn\\datasets\\tests\\data\\openml\\292\\api-v1-json-data-list-data_name-australian-limit-2-data_version-1-status-deactivated.json.gz'
在這種情況下,可以使用以下regedit
工具在Windows注冊表中取消該限制:
在Windows開始菜單中鍵入“ regedit”來啟動 regedit
。選擇? Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
?key編輯該 LongPathsEnabled
鍵的屬性值,將其設置為1。重新安裝scikit-learn(忽略以前的安裝報錯):
數據統計
數據評估
本站OpenI提供的sklearn都來源于網絡,不保證外部鏈接的準確性和完整性,同時,對于該外部鏈接的指向,不由OpenI實際控制,在2023年 6月 15日 下午5:21收錄時,該網頁上的內容,都屬于合規合法,后期網頁的內容如出現違規,可以直接聯系網站管理員進行刪除,OpenI不承擔任何責任。