Scikit-learn(通常写作 scikit-learn 或 sklearn)是一种广泛使用的开源 Python 机器学习库。
NumPy:科学计算领域至关重要的 Python 库之一。它提供数组对象及多种其他数据集类型,并包含大量在 Scikit-learn 使用过程中进行数组高效运算的函数。
Scipy:一项由社区驱动的项目,旨在创建和推广用于 Python 数据科学的开源软件。具体来说,其使命聚焦于开发维护 Scipy 工具包,该工具包在开源许可证(例如 Berkeley Software Distribution 许可证,也称为 BSD)下免费提供,并可通过 Scipy 组织内的 GitHub 存储库公开访问。
Matplotlib:一个功能全面且灵活的 Python 绘图库,使数据科学家能够将数据集转化为信息丰富的图形、图表及其他可视化形式。Matplotlib 通过提供一套全面的工具和功能,促进了数据分析、探索和交流。
Cython: 通过支持直接调用 C 函数以及在变量和类属性上显式声明 C 数据集类型,来扩展 Python 的功能。此功能有助于从源代码生成高度优化的 C 代码,以便在 sklearn 中使用。
使用 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。这个过程也可称为特征提取。通过将这些操作链接在一起,可以准备一个统一的数据集,为机器学习模型训练做好准备。
Scikit-learn 为分类和回归问题提供了一系列内置评估指标,有助于模型优化或模型选择的决策过程。在机器学习领域(特别是 Scikit-learn 中),回归模型是一类基于输入特征预测连续结果的预测模型。与预测离散标签或类别的分类模型不同,回归模型适用于需要预测数值量的场景。
对于分类任务,评估指标包括准确率、精确率、召回率、F1 分数和 ROC 曲线下面积 (AUC-ROC) 。
对于回归任务,Scikit-learn 常用的评估指标包括平均绝对误差 (MAE)、均方根误差 (RMSE)、R^2 分数和均方误差 (MSE)。
例如,在基于 scikit-learn 的信用风险评估场景中,接收者操作特征曲线下面积 (AUC-ROC) 指标对于评估模型性能至关重要。该指标通过收入、债务收入比和就业历史等特征,衡量模型区分贷款违约与非违约借款人的能力。AUC-ROC 值越接近 1,表明模型区分能力越强,有助于银行经理判断模型是否适用于贷款决策或识别改进方向。
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 最初以决策树、支持向量机和聚类算法等传统模型为核心,但其灵活的生态系统支持通过应用程序编程接口 (API) 配置集成 LLM。这包括利用 OpenAI 的 GPT 系列模型和及社区贡献的 Anthropic 或 AzureChatOpenAI 等模型。
熟练掌握 Python 环境、NumPy、SciPy、Pandas 和 Matplotlib 对发挥 scikit-learn 效能至关重要,因为它们构成机器学习管道中数据 预处理、特征工程和可视化的基础。 这些库为机器学习管道中的数据预处理、 特征工程和可视化奠定了基础。 熟悉其功能可实现高效数据集处理、 相关特征选择及结果可视化,最终提高模型 性能。
Python 及其依赖项的独立安装, 可隔离项目需求并确保 不同项目间的一致性。可通过 conda 或 virtualenv 等工具创建。
该库支持大型多维数组和矩阵, 同时还提供各种高性能 数学函数用于操作。它是 Python 科学计算的基础包。
该库建立在 NumPy 之上,为科学和工程应用提供函数, 例如信号处理、线性代数、 优化和统计。该库广泛应用于物理、工程和数据分析等领域。
该库提供数据结构和函数, 用于有效处理结构化数据,包括电子表格和 SQL 表格等表格数据。它 特别适用于数据清洗、过滤、分组和合并。
该绘图库提供广泛的可视化工具, 支持创建高质量的 2D 和 3D 绘图、图表和图形。它通常 与 NumPy 和 Pandas 结合使用,用于可视化科学数据。
随着持续演进,scikit-learn 正致力于通过高级集成技术和元学习方法扩展其能力。通过结合神经网络与传统算法的优势,该工具集旨在提供全面解决方案以应对日益增长的机器学习挑战。这些发展有望使希望在工作中利用尖端技术的从业者更容易获得这些技术。