numpy Sklearn预处理--* TypeError:未找到匹配的签名

jv4diomz  于 12个月前  发布在  其他
关注(0)|答案(3)|浏览(116)

我在试着规范一个企业社会责任矩阵,
但我得到了这个错误:(*** TypeError: No matching signature found).

from sklearn.preprocessing import normalize
normalize(x_m, norm="l2", axis=1)

该矩阵是609186x849632稀疏矩阵,类型为“numpy.float16”,存储元素为189140200,采用压缩稀疏行格式

8cdiaqws

8cdiaqws1#

实际上我解决了这个问题。我认为这是因为数据类型。将np.float16更改为np.float32,解决了问题。我不知道为什么,这个问题只发生在np.float16数据类型上。

w8rqjzmb

w8rqjzmb2#

from sklearn.preprocessing import normalize

columns_changed = []

for col in df.columns:
    col_type = x_m[col].dtypes
    if col_type == 'float16':
      columns_changed.append(col)
      x_m[col] = x_m[col].astype(np.float32)

normalize(x_m, norm="l2", axis=1)

for col in columns_changed:
  x_m[col] = x_m[col].astype(np.float16)

x_m
2o7dmzc5

2o7dmzc53#

如果它对任何人都有用,我在使用sklearn.linear_model中的广义线性模型时遇到了这个错误,即PoissonRegressor和GammaRegressor(这个错误在sklearn的www.example.com子模块中的某个地方出现loss.py)。只有一个目标变量,所以,正如我们通常对sklearn模型所做的那样,我做了.reshape((-1, 1))或等效的切片[:, None]。令人惊讶的是,这导致了错误:当我删除目标向量整形时,错误消失了,代价是众所周知的sklearn警告数组的1D形状:)

相关问题