Sklearn 教程2024 年 8 月 29 日 | 14 分钟阅读 什么是 Sklearn?Scikit-learn 是一个开源的 Python 包,用于在 Python 中实现机器学习模型。该库支持 KNN、随机森林、XGBoost 和 SVC 等现代算法。它构建在 NumPy 之上。知名的软件公司和 Kaggle 竞赛都经常使用 Scikit-learn。它有助于模型构建的各种过程,如模型选择、回归、分类、聚类和降维(参数选择)。 Scikit-learn 易于使用且性能优越。但是,Scikit Learn 不支持并行处理。我们可以使用 sklearn 实现深度学习算法,尽管这不是一个明智的选择,特别是当 TensorFlow 是一个可用的选项时。 在我们的系统上安装 Sklearn在安装 sklearn 之前,我们需要先安装以下库作为其依赖项。
在安装 sklearn 库之前,请验证 NumPy 和 SciPy 是否已安装在计算机上。在 NumPy 和 SciPy 已正确安装之后,使用 pip 是安装 scikit-learn 的最简单方法。 导入数据集正如我们之前讨论的,在此 sklearn 教程中,我们将使用鸢尾花数据集。我们不需要从外部服务器获取此数据集,因为 Scikit Learn Python 已经包含了它。我们将立即导入数据集,但在此之前,我们必须使用以下命令导入 Scikit-Learn 和 Pandas 库。 代码 导入 sklearn 后,使用以下命令,我们可以快速从 sklearn 导入鸢尾花数据集。 代码 分割数据集我们可以将整个数据集分成两部分——训练数据集和测试数据集,以留出一些未见过的数据来检查模型的准确性。模型训练完成后,使用测试数据集来测试或验证模型。然后,我们可以评估训练模型的性能。 本示例会将数据分为 70:30 的比例,这意味着 70% 的数据将用于训练模型,30% 将用于测试模型。示例中使用的数据集与上面相同。 代码 输出 (105, 3) (45, 3) (105,) (45,) 训练模型然后,我们可以使用我们的数据集训练一个预测模型。如前所述,scikit-learn 提供了广泛的现代机器学习算法,具有标准化的用户界面,用于拟合、预测准确率分数、召回率等。 在本示例中,我们将使用 KNN(K 最近邻)分类器。KNN 分类器将根据其相似性对数据集进行聚类。我们将在下面的代码中看到如何实现此机器学习算法。 代码 输出 Accuracy: 0.9777777777777777 Predictions: ['versicolor', 'setosa'] 线性建模这些是 Sklearn 提供的用于执行线性回归分析的回归算法。
聚类方法聚类是最佳的无监督机器学习技术之一,用于发现数据集中相似的模式和关系。然后,它们根据相似的特征将这些样本分成组。聚类确定了可用无标签数据的内在分组,因此它很重要。 Sklearn.cluster 是 Scikit-Learn 包的一部分,用于对无标签数据进行聚类。Scikit-learn 在此模块下提供了以下聚类技术: KMeans该算法计算质心,然后通过迭代确定最佳质心。它假设已经知道簇,因为它需要提供簇的数量。该方法的基本思想是通过将样本分成 n 个具有相同方差的组来聚类数据,同时减小惯性准则。Scikit-learn 拥有 sklearn.cluster,它表示算法找到的簇数量。K-Means 聚类使用 Sklearn 的 KMeans 包进行。样本权重参数允许 sklearn.cluster 计算簇中心和惯性值,并且 KMeans 模块为某些样本提供额外的权重。 代码 输出 The number of clusters are: [6 0 6 2 0 8 8 5 6 2 8 6 0 6 0 5 3 5 2 2 8 8 2 7 2 6 8 2 4 3 2 4 1 4 4 9 3 2 5 6 5 8 6 9 1 6 2 8 0 1] 谱聚类在聚类之前,该方法通过使用相似度矩阵的特征值(或谱)来有效地将维度减少到更少的维度。当存在许多簇时,不建议使用此方法。 代码 输出 The number of clusters are: [0 2 0 8 4 3 6 4 9 1 3 0 4 6 2 8 5 4 7 1 7 6 9 5 2 8 3 9 1 3 9 5 0 5 4 5 1 5 8 1 7 3 6 5 0 6 1 3 6 8] 层次聚类通过连续合并或拆分簇,该算法创建了嵌套的簇。此簇层次结构显示为树状图,通常称为树,它属于以下两类: 层次聚合算法:在此类层次算法中,每个数据点都被视为一个单独的簇。然后,按照自底向上的方法,一对一对地聚合两个簇。 层次算法(将所有数据点视为一个大簇):在此层次方法中,聚类过程涉及使用自顶向下的技术将一个大簇拆分成许多小簇。 代码 输出 The number of clusters are: [3 6 3 5 6 0 0 1 3 5 0 2 6 3 6 1 4 1 5 6 0 0 5 9 5 2 0 5 6 4 5 0 8 7 6 7 4 5 1 3 1 0 2 7 8 3 0 0 3 2] 决策树算法节点代表一个特征(或属性),分支表示一个决策函数,并且每个叶节点表示结论,这类似于流程图。决策树中的根节点是从顶部开始的第一个节点。它通过属性值获得划分数据的能力。递归分区是重复划分树的过程。这个类似于流程图的框架有助于决策。它是一种流程图式的表示,完美地复制了人们的思考方式。因此,决策树易于理解和解释。 代码 输出 Accuracy scores: [1. 0.93333333 1. 0.93333333 0.93333333 0.86666667 0.93333333 1. 1. 1. ] Mean accuracy score: 0.96 梯度提升当存在回归和分类问题时,我们可以使用梯度提升方法。它基于许多较小的预测模型(通常是决策树)创建一个预测模型。 为了正常工作,Gradient Boosting Classifier 需要一个损失函数。除了处理自定义损失函数外,梯度提升分类器还可以接受许多标准化损失函数,但损失函数必须是可微的。 在回归技术中可以使用平方误差,但在分类算法中通常使用对数损失。在梯度提升系统中,我们不需要为每个渐进提升步骤显式推导损失函数,而是可以使用任何可微的损失函数。 代码 输出 Accuracy scores: 0.9185416666666667 Dimensionality Reduction using PCA in Sklearn 精确 PCA利用数据的奇异值分解(SVD),通过主成分分析(PCA)进行线性降维,将数据投影到降维后的特征空间。在使用 SVD 进行 PCA 降维之前,输入数据会居中,但不会为每个特征进行归一化。 sklearn.decomposition 模块是 Scikit-learn ML 工具包的一部分。 在其 fit() 方法中,PCA 模块(作为转换器对象使用)学习 n 个组件。它也可以用于将新数据投影到这些组件上。 代码 输出 dict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names', 'filename', 'data_module']) ['malignant' 'benign'] ['mean radius' 'mean texture' 'mean perimeter' 'mean area' 'mean smoothness' 'mean compactness' 'mean concavity' 'mean concave points' 'mean symmetry' 'mean fractal dimension' 'radius error' 'texture error' 'perimeter error' 'area error' 'smoothness error' 'compactness error' 'concavity error' 'concave points error' 'symmetry error' 'fractal dimension error' 'worst radius' 'worst texture' 'worst perimeter' 'worst area' 'worst smoothness' 'worst compactness' 'worst concavity' 'worst concave points' 'worst symmetry' 'worst fractal dimension'] Shape of data after PCA: (569, 3) Components: [[ 0.21890244 0.10372458 0.22753729 0.22099499 0.14258969 0.23928535 0.25840048 0.26085376 0.13816696 0.06436335 0.20597878 0.01742803 0.21132592 0.20286964 0.01453145 0.17039345 0.15358979 0.1834174 0.04249842 0.10256832 0.22799663 0.10446933 0.23663968 0.22487053 0.12795256 0.21009588 0.22876753 0.25088597 0.12290456 0.13178394] [-0.23385713 -0.05970609 -0.21518136 -0.23107671 0.18611304 0.15189161 0.06016537 -0.03476751 0.19034877 0.36657546 -0.10555215 0.08997968 -0.08945724 -0.15229262 0.20443045 0.23271591 0.1972073 0.13032154 0.183848 0.28009203 -0.21986638 -0.0454673 -0.19987843 -0.21935186 0.17230436 0.14359318 0.09796412 -0.00825725 0.14188335 0.27533946] [-0.00853123 0.0645499 -0.00931421 0.02869954 -0.10429182 -0.07409158 0.00273384 -0.02556359 -0.04023992 -0.02257415 0.26848138 0.37463367 0.26664534 0.21600656 0.30883896 0.15477979 0.17646382 0.22465746 0.28858428 0.21150377 -0.04750699 -0.04229782 -0.04854651 -0.01190231 -0.25979759 -0.2360756 -0.1730573 -0.17034416 -0.27131265 -0.23279135]] Explained variance ratio: [0.44272026 0.18971182 0.09393163] 增量 PCA主成分分析(PCA)主要允许批量计算,这意味着要分析的所有独立特征都必须适合存储。增量主成分分析(IPCA)用于克服此限制。 sklearn.decomposition 模块是 Scikit-learn ML 工具包的一部分。IPCA 包提供了 np.memmap(内存映射文件),避免将整个文件加载到内存中,从而允许在其 partial fit 函数上对渐进获取的数据部分进行操作,或者两者都可以。 与 PCA 并行,在通过 IPCA 分解数据之前,输入数据会居中,但不会为每个特征进行归一化。 示例 以下示例使用 Sklearn 数字数据集来使用 sklearn.decomposition.IPCA 模块。 代码 输出 dict_keys(['data', 'target', 'frame', 'feature_names', 'target_names', 'images', 'DESCR']) Shape of the dataset before decomposition: (1797, 64) Shape of the dataset after decomposition: (1797, 15) 在这种情况下,我们可以使用 fit() 方法将信息分成批次,或者我们可以对较小的数据批次进行部分拟合(就像我们对每批 200 个数据进行的那样)。 核 PCA通过使用核函数,PCA 的核主成分分析(Kernel PCA)修改可以减少非线性维度。它支持 transform() 和 inverse_transform() 方法。 我们可以使用 sklearn.decomposition 模块的 KernelIPCA 类。 示例 我们将使用 sklearn 的数字数据集来演示 KernelIPCA 的用法。我们正在使用的核函数是 sigmoid。 代码 输出 dict_keys(['data', 'target', 'frame', 'feature_names', 'target_names', 'images', 'DESCR']) Shape of the dataset before decomposition: (1797, 64) Shape of the dataset after decomposition: (1797, 15) 使用随机 SVD 的 PCA通过主成分分析(PCA)将变量投影到较低维度的特征空间,并使用随机 SVD,通过移除与较低奇异值相关的特征的奇异向量来保留大部分方差。在这种情况下,sklearn.decomposition.PCA 类加上 svd_solver = 'randomized' 参数将非常有用。 示例 下面的示例将使用 sklearn.decomposition.PCA 类和 svd_solver = 'randomized' 辅助参数,从 sklearn 的乳腺癌数据集中识别前 10 个主成分。 代码 输出 Shape of the dataset before decomposition: (569, 30) Shape of data after PCA: (569, 10) Explained variance ratio: [0.45067848 0.18239963 0.09159257 0.06781847 0.05626861 0.04135939 0.01989181 0.01637191 0.01397121 0.01209004] 下一个主题Python 中的睡眠时间是什么 |
我们请求您订阅我们的新闻通讯以获取最新更新。