为了账号安全,请及时绑定邮箱和手机立即绑定

AttributeError: 'numpy.ndarray' 对象没有属性 'transform'

AttributeError: 'numpy.ndarray' 对象没有属性 'transform'

海绵宝宝撒 2023-05-09 15:35:30
我想创建一个sklearn包含两个步骤的管道:自定义转换器功能Keras 分类模型这是我的数据集(当然,我提供了一个简化的子集来显示数据格式):x_trainarray([[[0.45977011, 0.16666667, 0.18373494, ..., 0.33333333,         0.71317829, 0.7246617 ],        [0.6091954 , 0.25      , 0.28313253, ..., 0.33333333,         0.66666667, 0.73101353],        [0.25287356, 0.75      , 0.34337349, ..., 0.16666667,         0.62790698, 0.62137531],        ...,        [0.6091954 , 0.58333333, 0.20481928, ..., 0.33333333,         0.62015504, 0.65009666],        [0.41954023, 0.91666667, 0.30722892, ..., 0.33333333,         0.71317829, 0.76719138],        [0.31609195, 0.41666667, 0.46987952, ..., 0.33333333,         0.5503876 , 0.71306269]],       [[0.6091954 , 0.25      , 0.28313253, ..., 0.33333333,         0.66666667, 0.73101353],        [0.25287356, 0.75      , 0.34337349, ..., 0.16666667,         0.62790698, 0.62137531],        [0.54022989, 0.5       , 0.34337349, ..., 0.33333333,         0.57364341, 0.66238608],        ...,        [0.41954023, 0.91666667, 0.30722892, ..., 0.33333333,         0.71317829, 0.76719138],        [0.31609195, 0.41666667, 0.46987952, ..., 0.33333333,         0.5503876 , 0.71306269],        [0.44252874, 0.75      , 0.48192771, ..., 0.41666667,         0.62015504, 0.65023474]],       [[0.25287356, 0.75      , 0.34337349, ..., 0.16666667,         0.62790698, 0.62137531],        [0.54022989, 0.5       , 0.34337349, ..., 0.33333333,         0.57364341, 0.66238608],        [0.3908046 , 0.33333333, 0.34939759, ..., 0.41666667,         0.58914729, 0.70450152],        ...,        [0.31609195, 0.41666667, 0.46987952, ..., 0.33333333,         0.5503876 , 0.71306269],        [0.44252874, 0.75      , 0.48192771, ..., 0.41666667,         0.62015504, 0.65023474],        [0.60344828, 0.41666667, 0.46686747, ..., 0.25      ,         0.66666667, 0.61391881]]]火车array([[1., 0., 0.],       [1., 0., 0.],       [1., 0., 0.]], dtype=float32)
查看完整描述

1 回答

?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

该方法Transformer().fit()应返回self。


因为你的Transformer对象是无状态的,它可能更容易使用sklearn.preprocessing.FunctionTransformer。您可以使用转换函数实例化该类。类似于以下内容(未经测试):


import sklearn.preprocessing


def _rec_plot(s, eps=0.10, steps=10):

    d = pdist(s[:,None])

    d = np.floor(d/eps)

    d[d>steps] = steps

    Z = squareform(d)

    return Z


def fun(x, y=None):

    return np.apply_along_axis(_rec_plot, 1, x).astype('float16')


transformer = sklearn.preprocessing.FunctionTransformer(func=fun)

我还建议不要使用语法,from module import *因为这会污染您的命名空间。当我第一次阅读您的问题时,我想知道问题是不是因为所有不必要的导入而导致函数名称冲突。


查看完整回答
反对 回复 2023-05-09
  • 1 回答
  • 0 关注
  • 113 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信