我正在努力创建一个带有内置转换器和自定义转换器的预处理管道,其中包括一个可以向数据添加额外属性并进一步对添加的属性执行转换的转换器。
附加属性示例:
有一个 phValue 属性缺少数据。我想尝试创建一个附加属性,该属性将在 phLabel 列中将 phValue 标记为 (Acid, Neutral, Base)。
也是每个序列特征的字符串长度。
这将需要输入 phValue 的缺失值,然后创建其他属性和进一步的转换器,这些转换器也将转换 sequence_length 属性。
这是我如何创建自定义转换器的示例,我可以将其用于手动预处理,但是,在创建完整的预处理管道时,这不是处理它的正确方法。
def data_to_frame(X):
if isinstance(X, pd.DataFrame):
return X
elif isinstance(X, sparse.csr_matrix):
return pd.DataFrame(X, indices, atributes)
elif isinstance(X, np.ndarray):
return pd.DataFrame(X, indices, atributes)
else:
raise Exception("Incorrect Data Structure Passed")
class CombinedAttributesAdder(BaseEstimator, TransformerMixin):
def __init__(self, no_difference = True): # no *args or **kargs
self.no_difference = no_difference
def fit(self, X, y=None):
return self # nothing else to do
def transform(self, X):
atributes.extend(['sequence_length', 'difference', 'phLabel'])
sequence_length = X.sequence.str.len()
difference = X['residueCount'] - sequence_length
phLabel = X['phValue'].apply(ph_labels)
if self.no_difference:
atributes.append('no_difference')
no_difference = (difference == 0)
return np.c_[X, sequence_length, difference, phLabel, no_difference]
else:
return np.c_[X, sequence_length, difference, phLabel]
我想在变形金刚中执行的操作特定于熊猫。我的解决方案是将输入的 numpy 数组转换为数据帧,并在转换函数中将其作为 numpy 数组返回。我将全局变量用于属性和索引。我意识到这是一种乏善可陈的方法。我如何在我的自定义转换器中使用 pandas 操作?
尚方宝剑之说
相关分类