【发布时间】:2021-09-02 19:43:38
【问题描述】:
-
我对这个管道中的每个函数到底做了什么有点困惑。有人可以解释这个管道是如何工作的吗?我大致知道怎么做,但澄清一下会非常有帮助。
-
为什么在 def
transform(self, X)中使用大写“X”? -
get_feature_names和__init__具体有什么意义?
代码:
class custom_fico(BaseEstimator,TransformerMixin):
def __init__(self):
self.feature_names = ['fico']
def fit(self,x,y=None):
return self
def transform(self,X):
k = X['FICO.Range'].str.split('-',expand = True).astype(float)
fico = 0.5 * (k[0] + k[1])
return pd.DataFrame({'fico':fico})
def get_feature_names(self):
return self.feature_names
【问题讨论】:
-
Check this for init。此外,它可以是任何字符,除非它是无效字符
-
X用于训练数据矩阵,该名称在机器学习中按惯例使用,但在其他任何地方都没有。get_feature_names()可能被使用此 custom_fico 对象的任何代码使用。 -
但是为什么我们在 def transform(self,X) 中使用 'capital X' 而在 def fit(self,x,y=None) 中使用 'small x'。 'init' 是构造函数,对吗?
-
x与X不一致,我不知道 fit() 方法的目的是什么,因为它实际上不适合数据并且参数未使用。代码似乎不完整,但同样取决于此对象的实际使用位置。 -
1.实际上,这段代码是整个数据预处理大管道的一部分,我们使用这个子管道来分隔列“FICO.Range”的值,该列的值在范围内,即 700-710、720-726。我们对这些值所做的是将它们拆分为“-”,然后取它们的平均值,并创建一个新的列名称“fico”并将单个平均值,即 705、723 放入“fico”列中。
标签: python pandas numpy scikit-learn data-science