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(忽略以前的安装報错):
数据评估
本站ai工具百寶箱提供的sklearn都来源于网络,不保证外部链接的准确性和完整性,同时,对于该外部链接的指向,不由ai工具百寶箱实际控制,在2024年12月8日 下午6:06收录时,该网页上的内容,都属于合规合法,后期网页的内容如出现违规,可以直接联系网站管理员进行删除,ai工具百寶箱不承担任何责任。