首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Scikit-learn 核心开发人员专访:建立机器学习工作流最容易犯这2点错误

Haebichan Jung:在机器学习工作流中实现 Scikit-learn 的那些人中,你看到了哪些常见的错误或低效的事情?...在 Scikit-learn 中,每个 ML 模型都封装在一个称为「估计器」的简单 python 类中。通常在机器学习过程中,你可能会有一个带有一系列预处理步骤的分类器。...在二进制分类中,精度取决于你的目标是什么。我喜欢看 ROC 曲线下的面积和平均精度。这些是某种细粒度的度量。我也喜欢看精确召回曲线(AUPRC)。...每种策略的优缺点是什么,尤其是在 Scikit-learn 方面? Andreas Muller:我想从你的问题中退一步,再次提到最重要的是指标以及你如何评估它。你的目标是什么?...在改变模型方面,类权重是人们经常使用且会有帮助的。类权重实际上改变了损失函数,这样就好像对少数类进行了过采样。所以你使用了所有的样本,但是给了少数类更多的权重。这是人们发现的有用的东西。

64010

Scikit-learn 核心开发人员专访:建立机器学习工作流最容易犯这2点错误

Haebichan Jung:在机器学习工作流中实现 Scikit-learn 的那些人中,你看到了哪些常见的错误或低效的事情?...在 Scikit-learn 中,每个 ML 模型都封装在一个称为「估计器」的简单 python 类中。通常在机器学习过程中,你可能会有一个带有一系列预处理步骤的分类器。...在二进制分类中,精度取决于你的目标是什么。我喜欢看 ROC 曲线下的面积和平均精度。这些是某种细粒度的度量。我也喜欢看精确召回曲线(AUPRC)。...每种策略的优缺点是什么,尤其是在 Scikit-learn 方面? Andreas Muller:我想从你的问题中退一步,再次提到最重要的是指标以及你如何评估它。你的目标是什么?...在改变模型方面,类权重是人们经常使用且会有帮助的。类权重实际上改变了损失函数,这样就好像对少数类进行了过采样。所以你使用了所有的样本,但是给了少数类更多的权重。这是人们发现的有用的东西。

80330
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    scikit-learn 逻辑回归类库使用小结

    之前在逻辑回归原理小结这篇文章中,对逻辑回归的原理做了小结。这里接着对scikit-learn中逻辑回归类库的我的使用经验做一个总结。重点讲述调参中要注意的事项。 1....概述     在scikit-learn中,与逻辑回归有关的主要是这3个类。...在分类模型中,我们经常会遇到两类问题:     第一种是误分类的代价很高。...在scikit-learn做逻辑回归时,如果上面两种方法都用到了,那么样本的真正权重是class_weight*sample_weight.     ...以上就是scikit-learn中逻辑回归类库调参的一个小结,还有些参数比如正则化参数C(交叉验证就是 Cs),迭代次数max_iter等,由于和其它的算法类库并没有特别不同,这里不多累述了。

    1.1K50

    特征选择三板斧

    在scikit-learn中,可以通过如下方式指定方差阈值,删除低方差对应的特征 >>> from sklearn.feature_selection import VarianceThreshold...在scikit-learn中,使用RFE算法的代码如下 >>> from sklearn.datasets import make_friedman1 >>> from sklearn.feature_selection...为了克服这个超参数的设置问题,scikit-learn中支持采用交叉验证的方式,对于特征的所有组合,计算所有组合的误差,选择误差最小的特征集合作为所挑选的特征,用法如下 >>> from sklearn.feature_selection...在scikit-learn中,使用L1正则项来筛选特征的代码如下 >>> from sklearn.datasets import load_iris >>> from sklearn.feature_selection...在scikit-learn中,使用平均不纯度减少来筛选特征的代码如下 >>> from sklearn.datasets import load_iris >>> from sklearn.feature_selection

    81630

    【算法】从头开始编写任何机器学习算法的6个步骤:感知器案例研究

    下面是我们要用到的方程: ? 基本思想是,我们在迭代“n”处调整当前权重,以便在下一个迭代中得到一个新的权重“n+1”。 为了调整权重,我们需要设置一个“学习率”。这是用希腊字母“eta”表示的。...为了比较,我们将使用scikit-learn中的感知器。...scikit-learn模型中的权重与我们的相同。这意味着我们的模型工作正常,这是个好消息。 在我们结束之前,有几个小问题需要复习一下。...在scikit-learn模型中,我们必须将随机状态设置为“None”并关闭变换。我们已经设置了一个随机种子并打乱了数据,所以我们不需要再这样做了。...因为我们已经包含了一个虚拟的特征列1s,我们正在自动拟合截距,所以我们不需要在scikit-learn感知器中打开它。

    1.1K30

    独家 | 使用Python了解分类决策树(附代码)

    除此之外,本教程还将涵盖: 分类树的结构(树的深度,根节点,决策节点,叶节点/终端节点) 分类树如何进行预测 如何通过Python中的scikit-learn构造决策树 超参数调整 与往常一样,本教程中用到的代码可以在我的...我猜测,基尼指数之所以是scikit-learn的默认值,是因为熵的计算过程略慢一些(因为它使用了对数)。 ? 不同的不纯度度量(基尼指数和熵)通常会产生相似的结果。...Scikit-learn建模的四个步骤 第一步:导入你想使用的模型 在scikit-learn中,所有的机器学习模型都被封装为Python中的类。...Scikit-learn对每个特征输出一个0和1之间的数值。所有特征的重要性之和为1。下列代码展示了在决策树模型中每个特征的重要性。...在上述例子中(iris的某个特定的训练集测试集划分),花瓣宽度的特征重要性权重最高。我们可以通过察看相应的决策树来确认。 ?

    2.7K40

    扶稳!四大步“上手”超参数调优教程,就等你出马了 | 附完整代码

    为了在模型运行时检查模型的性能,需要用到回调函数(callbacks) 回调函数:在训练时记录模型性能 回调是在训练过程的给定阶段执行的一组函数,可以使用回调来获取训练期间模型内部状态和模型统计信息的视图...常用的回调函数如下: keras.callbacks.History() 记录模型训练的历史信息,该函数默认包含在 .fit() 中 keras.callbacks.ModelCheckpoint()将模型的权重保存在训练中的某个节点...然后,使用如下公式来对数据进行标准化(0~1 标准化) ? 在本例中,最小值为 0,最大值为255,因此公式简化为 ?:=?...如果数据集太大,无法全部放入机器的内存中,那么使用 batch 显得尤为重要。 一般来讲,网络使用较小的 batch 来训练更快。这是因为在每次前向传播后,网络都会更新一次权重。...为了使用 keras 进行交叉验证,可以使用 Scikit-Learn API 的包装器,该包装器使得 Sequential 模型(仅支持单输入)成为 Scikit-Learn 工作流的一部分。

    1.7K40

    回归、分类与聚类:三大方向剖解机器学习算法的优缺点(附Python和R实现)

    优点:线性回归的理解与解释都十分直观,并且还能通过正则化来降低过拟合的风险。另外,线性模型很容易使用随机梯度下降和新数据更新模型权重。 缺点:线性回归在变量是非线性关系的时候表现很差。...另外,其在训练上是计算密集型的,所以这就需要更富经验的人进行调参(即设置架构和超参数)以减少训练时间。...优点:输出有很好的概率解释,并且算法也能正则化而避免过拟合。Logistic 模型很容易使用随机梯度下降和新数据更新模型权重。 缺点:Logistic 回归在多条或非线性决策边界时性能比较差。...目前在工业界中,随机森林通常优于支持向量机算法。...但以上每一个算法都有更多的概念和细节没有展现出来,我们不能知道它们的损失函数是什么、训练目标是什么、权重更新策略是什么等等一些列问题。

    2.9K50

    从零开始学机器学习——线性和多项式回归

    首先给大家介绍一个很好用的学习地址:https://cloudstudio.net/columns 在之前的学习中,我们已经对数据的准备工作以及数据可视化有了一定的了解。...因此,利用现有的框架,如Scikit-learn,能够更高效、准确地进行相关性分析,让我们专注于更重要的任务。...在这个过程中,我们使用了另一个API,即scikit-learn库,来构建一个包含多项式特征转换和线性回归模型的管道(pipeline)。...PolynomialFeatures是scikit-learn库中用于生成多项式特征的工具。 它的主要作用是将输入的特征转换为多项式形式,从而允许我们在模型中考虑变量之间的非线性关系。...通过逐步引导,希望大家对数据分析的复杂性有了更深的认识。未来,在实际问题中灵活应用这些回归技术,将使我们在数据驱动的决策中占据优势。

    34540

    Python 数据科学手册 5.2 Scikit-Learn 简介

    Scikit-Learn 中的数据表示 机器学习是从数据创建模型:因此,我们将首先讨论如何表示数据,以便计算机理解。 在 Scikit-Learn 中考虑数据的最佳方式就是数据表。...选择一个模型类 在 Scikit-Learn 中,每个模型类都由 Python 类表示。...这些选择通常表示为超参数,或在模型拟合数据之前必须设置的参数。在 Scikit-Learn 中,通过在模型实例化下传递值来选择超参数。我们将在超参数和模型验证中,探讨如何定量地改进超参数的选择。...特别是,我们还没有将模型应用于任何数据:Scikit-Learn API 非常清楚模型选择和模型对数据应用之间的区别。 3....在 Scikit-Learn 中,按照惯例,在fit过程中学习的所有模型参数,都有尾随的下划线;例如在这个线性模型中,我们有以下这些东西: model.coef_ # array([ 1.9776566

    36410

    教程 | 初学者入门:如何用Python和SciKit Learn 0.18实现神经网络?

    在本文中,我们将了解神经网络的工作方式以及如何使用 Python 编程语言和最新版本的 SciKit-Learn 来实现它们。...了解这篇文章需要 Python 基础知识,而且它也有助于积累 SciKit Learn 的经验。...由于神经网络的特点,神经网络在 GPU 上的表现往往比 CPU 好。可惜的是,SciKit-learn 框架不支持 GPU 加速优化。...SciKit-Learn 本教程使用了最新版本的 SciKit-Learn(> 0.18),它可以通过 pip 或 conda 来轻松安装,也可以参考官方安装文档(http://scikit-learn.org...SciKit-learn 使用 estimator(估计量)对象。我们将从 SciKit-Learn 的 neural_network 库导入我们的估计量(多层感知器分类器模型/MLP)。

    1.1K110

    【Scikit-Learn 中文文档】决策树 - 监督学习 - 用户指南 | ApacheCN

    GitHub: https://github.com/apachecn/scikit-learn-doc-zh(觉得不错麻烦给个 Star,我们一直在努力) 贡献者: https://github.com...这就是所谓的过拟合.一些策略像剪枝、设置叶节点所需的最小样本数或设置数的最大深度是避免出现 该问题最为有效地方法。 决策树可能是不稳定的,因为数据中的微小变化可能会导致完全不同的树生成。...例如XOR,奇偶或者复用器的问题。 如果某些类在问题中占主导地位会使得创建的决策树有偏差。因此,我们建议在拟合前先对数据集进行平衡。 1.10.1....在训练之前平衡您的数据集,以防止决策树偏向于主导类.可以通过从每个类中抽取相等数量的样本来进行类平衡,或者优选地通过将每个类的样本权重 (sample_weight) 的和归一化为相同的值。...决策树算法: ID3, C4.5, C5.0 和 CART 所有种类的决策树算法有哪些以及它们之间的区别?scikit-learn 中实现何种算法呢?

    1.7K50

    一文带你读懂机器学习和数据科学的决策树

    这正是我们想要的,因为我们知道,一旦我们到达那个特定的决策节点,无论我们是在决策边界的一边还是另一边,我们的输出究竟是什么。 在我们的数据集中具有单个分类的概念被称为信息增益。 看看下面的例子。...Scikit Learn实例 很容易在Scikit Learn中使用内置的分类和回归决策树的类! 首先加载数据集并初始化我们的决策树以进行分类。 ?...下面我们将根据功能名称为节点着色,并显示每个节点的类和功能信息。 ? ? 你可以在Scikit Learn中为决策树模型设置几个参数。...不过进行某种类的平衡(例如类权重,采样或专门的损失函数)总是一个好主意。...推荐阅读 如果您想了解更多关于使用Scikit Learn进行机器学习的知识,建议你使用Hands-On Machine Learning with Scikit-Learn and TensorFlow

    44720

    统计建模——模型——python为例

    ----python实现线性回归模型 在Python中实现线性回归模型有多种方式,包括使用基本的数学库如NumPy进行手动实现,或者利用高级的机器学习库如Scikit-Learn、TensorFlow和...python实现逻辑回归模型 在Python中实现逻辑回归模型,除了可以使用高级机器学习库如Scikit-Learn之外,也可以手动实现逻辑回归算法。...这里我将给出一个简单的手动实现逻辑回归的示例,以及如何使用Scikit-Learn库的版本。 手动实现逻辑回归 手动实现逻辑回归涉及到梯度上升法来优化损失函数(对数似然函数)。...python实现统计建模决策树与随机森林 在Python中实现统计建模的决策树与随机森林通常涉及到使用scikit-learn库,这是一个广泛使用的机器学习库,提供了丰富的算法实现,包括决策树和随机森林...python实现统计建模主成分分析(PCA)与因子分析 在Python中实现主成分分析(PCA)和因子分析,你可以使用scikit-learn库,它提供了简单且高效的方法来执行这些操作。

    17910

    观点 | 我们该如何学习机器学习中的数学

    在我们的代码中,其将所有满足条件 [x 的元素梯度 grad 都设置为零,也就是说上游梯度只有在 x>0 的情况下才能继续向前传播。...定义你的系统 目前有非常多的资源可以帮助我们跨越写代码而直接调用函数构建机器学习系统,例如数据分析中常用的 scikit-learn 和深度学习中常用的 keras。...所以你们可以尝试回答以下关于搭建机器学习流程的问题: 机器学习系统中输入和输出都是什么? 我们该如何准备合适的数据以拟合系统? 如何构建特征或数据以帮助模型提高泛化性能?...你的权重是不是合理?为什么模型使用一些损失函数不能收敛?用什么样的度量方法衡量模型性能才是合理的?在这个时候,对数据分布做出假设、约束最优化方法或采用不同的算法都是非常有帮助的。...通常,你可能会发现在建模和调试过程背后有直观的数学原理,例如选择损失函数或评估度量,这些数学原理都会帮助我们实现更优的工程决策。 因此,根据实际工程中遇到的数学,再进一步学习这些数学才是更好的方法。

    26910

    scikit-learn 支持向量机算法库使用小结

    scikit-learn SVM算法库封装了libsvm 和 liblinear 的实现,仅仅重写了算法了接口部分。...1. scikit-learn SVM算法库使用概述     scikit-learn中SVM的算法库分为两类,一类是分类的算法库,包括SVC, NuSVC,和LinearSVC 3个类。...$K(x_i,x_j) $为我们要使用的核函数。 3. SVM核函数概述     在scikit-learn中,内置的核函数一共有4种,当然如果你认为线性核函数不算核函数的话,那就只有三种。     ...3)高斯核函数(Gaussian Kernel),在SVM中也称为径向基核函数(Radial Basis Function,RBF),它是libsvm默认的核函数,当然也是scikit-learn默认的核函数...SVM算法库其他调参要点     上面已经对scikit-learn中类库的参数做了总结,这里对其他的调参要点做一个小结。

    1K20

    深度学习性能提升的诀窍

    在模型中不适合计算大的数值。此外,还有许多其它方法来压缩模型中的数据,比如对权重和激活值做归一化,我会在后面介绍这些技巧。 相关阅读: 我需要对输入数据(列向量)做标准化吗?.../prepare-data-machine-learning-python-scikit-learn/) 4) 对数据做变换 与上一节的方法相关,但是需要更多的工作量。...准备机器学习的输入数据(http://machinelearningmastery.com/prepare-data-machine-learning-python-scikit-learn/) 5)...一旦模型在验证集上的效果下降了,则可以停止训练。 你也可以设置检查点,保存当时的状态,然后模型可以继续学习。...相关阅读: 用scikit-learn集成机器学习算法(http://machinelearningmastery.com/ensemble-machine-learning-algorithms-python-scikit-learn

    1.2K80
    领券