Scikit-Learn (Sklearn) 是什么?

作者

Bryan Clark

Senior Technology Advocate

scikit-learn (sklearn) 是什么?

Scikit-learn(通常写作 scikit-learn 或 sklearn)是一种广泛使用的开源 Python 机器学习库。

Scikit-learn 是当今最常用的机器学习 (ML) 库之一。该数据科学工具集以 Python 编写,通过一致的接口简化了人工智能 (AI) 领域的 ML 和统计建模。它包括用于分类回归、聚类和降维的基本模块,所有功能都构建在 NumPy、SciPy 和 Matplotlib 库之上。在 Python 中从头开始实现机器学习算法可能是一项计算密集型且容易出错的任务,需要线性代数、微积分和优化领域的专业知识。 Scikit-learn 可以成为缓解这些问题的宝贵资源。

通过利用 Scikit-learn 强大的预训练神经网络和机器学习算法套件,领域新手能够快速有效地为监督学习应用(如回归或分类)预处理数据集。这一步骤无需深入理解线性代数、微积分或基数等复杂数学概念即可完成。此外,这些工具还有助于实现包括聚类和降维在内的无监督学习过程。这些工具使用户能够专注于更高层次的洞察分析和商业价值创造。

scikit-learn 工作流
scikit-learn 工作流

scikit-learn 组件

NumPy:科学计算领域至关重要的 Python 库之一。它提供数组对象及多种其他数据集类型,并包含大量在 Scikit-learn 使用过程中进行数组高效运算的函数。

Scipy:一项由社区驱动的项目,旨在创建和推广用于 Python 数据科学的开源软件。具体来说,其使命聚焦于开发维护 Scipy 工具包,该工具包在开源许可证(例如 Berkeley Software Distribution 许可证,也称为 BSD)下免费提供,并可通过 Scipy 组织内的 GitHub 存储库公开访问。

Matplotlib:一个功能全面且灵活的 Python 绘图库,使数据科学家能够将数据集转化为信息丰富的图形、图表及其他可视化形式。Matplotlib 通过提供一套全面的工具和功能,促进了数据分析、探索和交流。

Cython: 通过支持直接调用 C 函数以及在变量和类属性上显式声明 C 数据集类型,来扩展 Python 的功能。此功能有助于从源代码生成高度优化的 C 代码,以便在 sklearn 中使用。

专家为您带来最新的 AI 趋势

获取有关最重要且最有趣的 AI 新闻的精选洞察分析。订阅我们的每周 Think 时事通讯。请参阅 IBM 隐私声明

谢谢!您已订阅。

您的订阅将以英语提供。您会在每份时事通讯中找到一个取消订阅链接。您可以在此处管理您的订阅或取消订阅。有关更多信息,请参阅我们的 IBM 隐私声明

预处理

使用 Scikit-learn 时,必须确保训练数据在输入机器学习模型前经过妥善准备和格式化。这个过程称为预处理,Scikit-learn 提供了一系列工具来帮助整理数据集。在 Scikit-learn 预处理阶段,常见的任务包括归一化,即使用 MinMax Scaler 或 Standard Scaler 等技术将数值特征缩放至相似量级。如果需要将数据集从分类变量编码为数值表示,则可以使用独热编码 (OHE) 或标签编码器 (LE) 使其与数据集的工作流兼容。OHE 将分类数据值转换为二进制向量,为每个类别创建新列并以 1 或 0 表示类别存在与否。LE 用于机器学习,为类别分配数值标签。与独热编码器不同,它不会创建新列而是用整数值替换分类值。由于可能产生序数假设等问题,在现代机器学习实践中标签编码器的使用频率低于独热编码。

预处理还可能涉及特征选择,即选取 Scikit-learn 相关特征的子集进行模型训练。此步骤可以通过删除无相关列或使用递归特征消除 (RFE) 或互信息 (MI) 等技术来完成。递归特征消除是一种用于选择数据集中最重要特征的技术,它通过迭代移除特征并基于简化特征集重新训练模型,最终识别出表现最好的特征。互信息则衡量一个随机变量包含另一个随机变量的信息量,从而识别与目标结果高度相关或关联的特征。该方法适用于选择信息量大的变量。此外,处理缺失值至关重要,Scikit-learn 提供了多种填补方法,如均值/中位数插补、前向填充/后向填充或其他更复杂的方法。

为执行这些任务,scikit-learn 提供了完整的预处理工具集。StandardScaler 和 MinMaxScaler 类是常用的数值特征缩放工具,OneHotEncoder 则适用于分类变量处理。对于缺失值插补, SimpleImputer 类提供了一系列方法可供选择。通过以创造性的方式组合这些工具,可以创建强大的预处理管道,从而显著提升机器学习模型的性能与准确度。

例如,StandardScaler 可用于标准化数据的数字特征,然后用 OneHotEncoder 将分类变量转换为数字表示。对于分类变量中的每个独特类别,都会创建一个新的二进制(0 或 1)特征。如果一个观测值的类别为“X”,那么与“X”相对应的特征就会被设为 1,而所有其他特征都会被设为 0。这个过程也可称为特征提取。通过将这些操作链接在一起,可以准备一个统一的数据集,为机器学习模型训练做好准备。

AI 学院

成为 AI 专家

获取相关知识,以确定 AI 投资的优先级,从而推动业务增长。立即开始观看我们的免费 AI 学院视频,引领 AI 在组织中的未来应用。

指标

Scikit-learn 为分类和回归问题提供了一系列内置评估指标,有助于模型优化或模型选择的决策过程。在机器学习领域(特别是 Scikit-learn 中),回归模型是一类基于输入特征预测连续结果的预测模型。与预测离散标签或类别的分类模型不同,回归模型适用于需要预测数值量的场景。

对于分类任务,评估指标包括准确率、精确率、召回率、F1 分数和 ROC 曲线下面积 (AUC-ROC)

  • 准确率:衡量正确预测占总预测数的比例。

  • 精确度:侧重于正面预测,量化所选项目的相关性。

  • 召回率:召回率也称为灵敏度,评估模型查找所有相关实例的能力。

  • F1 分数: 精确度和召回率的调和平均值,提供这两个指标之间的平衡。

  • AUC-ROC:用于评估输出为概率的分类模型性能的指标。它以可视化的方式表示真阳性率 (TPR) 和假阳性率 (FPR) 之间的权衡。

对于回归任务,Scikit-learn 常用的评估指标包括平均绝对误差 (MAE)、均方根误差 (RMSE)、R^2 分数和均方误差 (MSE)。

  • MAE :衡量误差的平均幅度,而不考虑误差方向。

  • RMSE:均方误差的平方根,对较大误差赋予更高权重。

  • R2分数:也称为决定系数,表示因变量中可自变量预测的方差比例。

  • MSE:计算预测值与实际值之间平方差的平均值,反映拟合结果与数据点的接近程度。

例如,在基于 scikit-learn 的信用风险评估场景中,接收者操作特征曲线下面积 (AUC-ROC) 指标对于评估模型性能至关重要。该指标通过收入、债务收入比和就业历史等特征,衡量模型区分贷款违约与非违约借款人的能力。AUC-ROC 值越接近 1,表明模型区分能力越强,有助于银行经理判断模型是否适用于贷款决策或识别改进方向。

Scikit-learn 的评估指标体系支持对不同任务和场景下的机器学习模型进行全面评估。理解这些指标有助于解读模型表现,识别潜在改进领域,并最终为特定问题选择或优化性能最佳的模型。

Scikit-learn 用例

电子邮件垃圾检测:Scikit-learn 的逻辑回归或支持向量机 (SVM) 等分类算法,可通过将邮件分类为垃圾邮件或非垃圾邮件来过滤垃圾邮件。Sklearn 还支持使用 cross_val_score 进行交叉验证,以评估朴素贝叶斯分类器区分垃圾邮件的性能。Sklearn 采用交叉验证的方式,在数据的 5 个不同分区中训练和测试模型。这提供了一个平均性能指标,能让您更好地了解模型在新的、未见过的电子邮件上的表现。

预测房价:Scikit-learn 可应用线性回归等回归技术,根据地理位置、房屋面积和配套设施等特征估算房价,帮助买家做出明智决策。Scikit-learn 与 Plotly 和 Matplotlib 等数据可视化库无缝集成。这样就可以实现可视化,加强对回归结果的理解和解释,从而有助于在类似的使用案例中做出更明智的决策。

山毛榉叶病检测:scikit-Learn 的决策树算法可用于美国东部森林的山毛榉叶病 (BLD) 检测。通过分析树龄、位置和叶片状况等因素,模型可识别存在 BLD 风险的山毛榉树。通过使用机器学习和数据驱动方法,可精确定位最脆弱的树木并制定保护策略。

异常检测:在网络安全领域,scikit-learn 的 k 均值聚类可用于检测可能预示安全威胁的异常模式或行为。通过将相似数据点分组,k 均值有助于识别与既定聚类显著偏离的异常点,即潜在异常。这些异常可能表明存在未授权访问尝试、恶意软件活动或其他恶意行为。利用 sklearn 及时检测此类异常,可使网络安全团队快速调查并缓解威胁,从而提升组织整体安全防护水平。

信用风险评估:金融机构使用 scikit-learn 随机森林算法评估潜在借款人信用风险时,可识别信用历史、收入和债务收入比等重要特征。通过随机森林的变量重要性排序,贷款机构能更科学地决策贷款审批额度和利率水平。

基因组学研究:Sklearn 可应用包括主成分分析 (PCA) 等技术降低遗传数据复杂度,从而更轻松识别显著模式而不受噪声干扰。

文本分析: 处理大型文档或数据集时,降维技术有助于高效总结和可视化关键主题,这对情感分析或内容推荐系统等领域至关重要。

scikit-learn 中的 LLM 集成

Scikit-learn 主要专注于机器学习算法,但可以扩展到大型语言模型 (LLM) 。虽然 scikit-learn 最初以决策树、支持向量机和聚类算法等传统模型为核心,但其灵活的生态系统支持通过应用程序编程接口 (API) 配置集成 LLM。这包括利用 OpenAI 的 GPT 系列模型和及社区贡献的 Anthropic 或 AzureChatOpenAI 等模型。

该集成流程遵循类似 Auto-GPT 项目的标准化模式,便于熟悉 scikit-learn 工作流的开发人员使用。Scikit-learn 在其 GitHub 网站上提供了包括开源 LLM 探索指南在内的教程资源。这种设置便于通过凭据部署所选的 LLM 模型,使 scikit-learn 获得增强的自然语言处理能力。

要求

熟练掌握 Python 环境、NumPy、SciPy、Pandas 和 Matplotlib  对发挥 scikit-learn 效能至关重要,因为它们构成机器学习管道中数据 预处理、特征工程和可视化的基础。 这些库为机器学习管道中的数据预处理、 特征工程和可视化奠定了基础。 熟悉其功能可实现高效数据集处理、 相关特征选择及结果可视化,最终提高模型 性能。

Python 环境

 

Python 及其依赖项的独立安装, 可隔离项目需求并确保 不同项目间的一致性。可通过 conda 或 virtualenv 等工具创建。

NumPy

 

该库支持大型多维数组和矩阵, 同时还提供各种高性能 数学函数用于操作。它是 Python 科学计算的基础包。

SciPy

 

该库建立在 NumPy 之上,为科学和工程应用提供函数, 例如信号处理、线性代数、 优化和统计。该库广泛应用于物理、工程和数据分析等领域。

Pandas

 

该库提供数据结构和函数, 用于有效处理结构化数据,包括电子表格和 SQL 表格等表格数据。它 特别适用于数据清洗、过滤、分组和合并。

Matplotlib

 

该绘图库提供广泛的可视化工具, 支持创建高质量的 2D 和 3D 绘图、图表和图形。它通常 与 NumPy 和 Pandas 结合使用,用于可视化科学数据。

未来开发

随着持续演进,scikit-learn 正致力于通过高级集成技术和元学习方法扩展其能力。通过结合神经网络与传统算法的优势,该工具集旨在提供全面解决方案以应对日益增长的机器学习挑战。这些发展有望使希望在工作中利用尖端技术的从业者更容易获得这些技术。

相关解决方案
IBM® watsonx.ai

使用面向 AI 构建器的新一代企业级开发平台 IBM watsonx.ai,可以训练、验证、调整和部署生成式 AI、基础模型和机器学习功能。使用一小部分数据,即可在很短的时间内构建 AI 应用程序。

深入了解 watsonx.ai
人工智能 (AI) 解决方案

借助 IBM 业界领先的 AI 专业知识和解决方案组合,让 AI 在您的业务中发挥作用。

深入了解人工智能解决方案
人工智能 (AI) 咨询服务

IBM Consulting AI 服务有助于重塑企业利用 AI 实现转型的方式。

深入了解人工智能服务
采取下一步行动

通过使用 AI,IBM Concert 可揭示有关运营的重要洞察分析,并提供特定于应用程序的改进建议。了解 Concert 如何推动您的业务向前发展。

深入了解 Concert 深入了解业务流程自动化解决方案