我自己一直在学习和练习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]
答案 0 :(得分:16)
BaseEstimator
提供了get_params
和set_params
方法的默认实现,请参阅 [the source code]。这有助于使模型网格可以使用GridSearchCV
进行自动参数调整,并且在Pipeline
中合并时可以很好地与其他人一起使用。