1. 程式人生 > >模擬估算器:scikit-learn Estimator

模擬估算器:scikit-learn Estimator

ssi 包含 模擬 test 基準 ali int 好的 如何

轉載: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)

  使用啟發式方法創建模擬模型是在開發周期中消除瓶頸的一種極好的方法。它允許數據工程師和數據科學家並行工作,而不需要工程師等待真正的機器學習模型被建立。它還允許數據科學家使用他們將用於構建真實模型的精確代碼來設置基準性能標準。

  

  

模擬估算器:scikit-learn Estimator