sklearn.base中的BaseEstimator(Python)

时间:2013-03-05 20:38:56

标签: scikit-learn classification

我自己一直在学习和练习sklearn图书馆。当我参加Kaggle比赛时,我注意到所提供的示例代码使用BaseEstimator中的sklearn.base。 我不太明白使用BaseEstimator的原因是什么/为什么。

from sklearn.base import BaseEstimator
class FeatureMapper:
    def __init__(self, features):
        self.features = features        #features contains feature_name, column_name, and extractor( which is CountVectorizer) 

    def fit(self, X, y=None):
        for feature_name, column_name, extractor in self.features:
            extractor.fit(X[column_name], y) #my question is: is X features? if yes, where is it assigned? or else how can X call column_name by X[column_name]. 

...

这是我通常在sklearn的教程页面上看到的:

from sklearn import SomeClassifier
X = [[0, 0], [1, 1],[2, 2],[3, 3]]
Y = [0, 1, 2, 3]
clf = SomeClassifier()
clf = clf.fit(X, Y)

我在sklearn的官方网页上找不到一个好的例子或任何文件。虽然我在github上找到了sklearn.base代码,但是我想要一些例子并解释它是如何使用的。

更新

以下是示例代码的链接:https://github.com/benhamner/JobSalaryPrediction/blob/master/features.py 更正:我刚刚意识到BaseEstimator用于课程SimpleTransform。我想我的第一个问题是为什么需要它? (因为它没有在计算中的任何地方使用),另一个问题是定义拟合,什么是X,以及如何分配?因为我经常看到:

def mymethod(self, X, y=None):
     X=self.features
     # then do something to X[Column_name]

1 个答案:

答案 0 :(得分:16)

BaseEstimator提供了get_paramsset_params方法的默认实现,请参阅 [the source code]。这有助于使模型网格可以使用GridSearchCV进行自动参数调整,并且在Pipeline中合并时可以很好地与其他人一起使用。