• 模拟估算器:scikit-learn Estimator


    转载:https://www.toutiao.com/i6606193174010397187/

      当一个数据科学项目刚刚开始时,关键是要尽可能快地走向一个最小可行的产品(MVP)。这个MVP将包含最终数据产品的所有组件,但只具有最低限度的功能。在项目达到这一点之后,迭代和改进已经存在的Pipeline将会更快。由于一个经过训练的机器学习模型需要花费大量的时间和精力来创建,因此在数据管道中放置一个模拟模型将允许数据工程师在数据科学家完成最终模型的训练之前开始他们的工作。创建MockBinaryClassifier充当二元预测模型的类。该模型遵循以下简单规则:如果第一个特征的值小于或等于0,则返回0级,如果第一个特征大于0则返回1级:

    import numpy as np
    from sklearn.base import BaseEstimator
    from sklearn.pipeline import Pipeline
    from sklearn.preprocessing import MinMaxScaler
    
    class MockBinaryClassifier(BaseEstimator):
        
        def __init__(self):
            self.n_classes_ = 2
            self.classes_ = np.array([0, 1])
        
        def fit(self,features:np.ndarray,target:np.ndarray,sample_weight:np.ndarray=None):
            
            return self
        
        def predict(self,features:np.ndarray):
            
            return np.where(features[:,0]>0,1,0)   
        

      MockBinaryClassifier继承sklearn.base.BaseEstimator,这意味着它可以在任何使用scikit-learn estimator 的地方使用;fit函数本质上是一个无操作。既然我们知道如何对实例进行分类,就不需要考虑任何历史数据。

      下面的Python代码展示了MockBinaryClassifier如何在scikit-learn pipeline中工作:    

    test_feature = np.array([[0], [0.5], [3], [-1]])
    
    train_feature = np.zeros_like(test_feature)
    train_target  = np.zeros_like(test_feature)  
    
    pipe = Pipeline([("scale",MinMaxScaler()),
                     ("mock",MockBinaryClassifier())]) 
    
    pred = pipe.fit(train_feature,train_target).predict(test_feature)
    
    print(pred)

      使用启发式方法创建模拟模型是在开发周期中消除瓶颈的一种极好的方法。它允许数据工程师和数据科学家并行工作,而不需要工程师等待真正的机器学习模型被建立。它还允许数据科学家使用他们将用于构建真实模型的精确代码来设置基准性能标准。

      

      

  • 相关阅读:
    8月的list
    hdu 2853
    【问题交流】JAVA 基础 switch 执行顺序的问题
    h5/css动态旋转木马源码
    javascript系列丛书之读后感
    java运行闪退,报错如下,是因为ole32.dll的问题吗?
    js
    切换为文本框编辑状态,点击空白区域保存修改
    前端工程师源码分享:html5 2d 扇子
    2017武汉马拉松4月9日开跑啦~~~
  • 原文地址:https://www.cnblogs.com/wzdLY/p/9736605.html
Copyright © 2020-2023  润新知