- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 sklearn
的Pipeline
和 FunctionTransformer
带有自定义功能
from sklearn.externals import joblib
from sklearn.preprocessing import FunctionTransformer
from sklearn.pipeline import Pipeline
def f(x):
return x*2
pipe = Pipeline([("times_2", FunctionTransformer(f))])
joblib.dump(pipe, "pipe.joblib")
del pipe
del f
pipe = joblib.load("pipe.joblib") # Causes an exception
AttributeError: module '__ main__' has no attribute 'f'
pickle
中。
最佳答案
我能够使用 marshal
破解解决方案模块(除了 pickle
)并覆盖魔术方法 getstate
和 setstate
由 pickle
使用.
import marshal
from types import FunctionType
from sklearn.base import BaseEstimator, TransformerMixin
class MyFunctionTransformer(BaseEstimator, TransformerMixin):
def __init__(self, f):
self.func = f
def __call__(self, X):
return self.func(X)
def __getstate__(self):
self.func_name = self.func.__name__
self.func_code = marshal.dumps(self.func.__code__)
del self.func
return self.__dict__
def __setstate__(self, d):
d["func"] = FunctionType(marshal.loads(d["func_code"]), globals(), d["func_name"])
del d["func_name"]
del d["func_code"]
self.__dict__ = d
def fit(self, X, y=None):
return self
def transform(self, X):
return self.func(X)
MyFunctionTransformer
而不是
FunctionTransformer
,代码按预期工作:
from sklearn.externals import joblib
from sklearn.pipeline import Pipeline
@MyFunctionTransformer
def my_transform(x):
return x*2
pipe = Pipeline([("times_2", my_transform)])
joblib.dump(pipe, "pipe.joblib")
del pipe
del my_transform
pipe = joblib.load("pipe.joblib")
f
来自 pickle ,而不是
marshaling
它的代码和它的名字。
dill
看起来也是编码的不错选择
关于python - 用它包装的函数保存一个 sklearn `FunctionTransformer`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54012769/
我有一个示例数据: df = pd.DataFrame(columns=['X1', 'X2', 'X3'], data=[
我正在使用 sklearn的Pipeline和 FunctionTransformer带有自定义功能 from sklearn.externals import joblib from sklearn
我正在尝试将数据处理管道放在一起。其中一个步骤需要在某个功能上应用具有特定 lmbda 值的 numpy.stats.boxcox。我想我应该为此使用 FunctionTransformer 。我可以
我的 pandas DataFrame 中有一个列,如下所示: df = pd.DataFrame([ ['26.6 km'], ['19.67 km'], ['18.2 km
我正在使用 sklearn 的 FunctionTransformer 预处理我的一些数据,这些数据是日期字符串,例如“2015-01-01 11:09:15”。 我的自定义函数将字符串作为输入,但我
我正在使用 sklearn 制作 DataFrame 预处理管道并链接各种类型的预处理步骤。 我想链接一个 SimpleImputer 转换器和一个 FunctionTransformer 应用 pd
我正在尝试使用 GridSearchCV 创建一个管道来过滤数据(使用 iforest)并使用 StandarSclaler+MLPRegressor 执行回归。 我制作了一个 FunctionTra
来自documentation我已经读过: A FunctionTransformer forwards its X (and optionally y) arguments to a user-de
考虑链接 PCA 和回归的任务,其中 PCA 执行降维,回归执行预测。 来自 sklearn 文档的示例: import numpy as np import matplotlib.pyplot as
为了进行适当的 CV,建议使用管道,以便可以将相同的转换应用于 CV 中的每个折叠。我可以通过使用 sklearn.preprocessing.FunctionTrasformer 或通过 subcl
我正在使用管道来预处理数据。这是我的代码。我想将字符串列转换为日期时间并用 np.nan 替换空字符串 (' '), "N.A"对于其他一些列。我正在尝试使用 FunctionTransformer在
我是一名优秀的程序员,十分优秀!