ValueError: X needs to contain only non-negative integers.

for feature in short_cate_feature:
  enc.fit(data[feature].values.reshape(-1, 1))
  base_train_csr = sparse.hstack((base_train_csr, enc.transform(train_x[feature].values.reshape(-1, 1))), 'csr','bool')
  base_predict_csr = sparse.hstack((base_predict_csr, enc.transform(predict[feature].values.reshape(-1, 1))),'csr','bool')

///

报错:ValueError: X needs to contain only non-negative integers.

x不能包含负整数,因为我前面fillna(-1),

可以对dataframe,直接使用

for i in short_cate_feature:
  all_table[i] = all_table[i].astype(str)  但是因为是独热码,需要非负整数。

因此用了个骚操作:

for i in short_cate_feature:
  data[i] = data[i].map(dict(zip(data[i].unique(), range(0, data[i].nunique()))))

通过词典映射为数字

 

转载于:https://www.cnblogs.com/smartwhite/p/9767867.html

### 解决 `ValueError` 错误 当遇到 `ValueError: Input X must be non-negative.` 这样的错误提示时,意味着程序中的某个输入变量包含了负数,而该操作不允许处理负数值。通常情况下,在执行某些特定运算之前会检查输入的有效性。 对于此问题的解决方案可以分为几个方面: - **验证数据源**:确保提供给算法的数据集本身不含有任何负值。如果确实存在,则需考虑这些异常值是否应该被修正或者移除[^1]。 - **预处理阶段加入校验逻辑** 可以在代码中增加额外的条件判断来提前捕捉可能存在的非法输入,并给出更友好的报错信息或采取适当措施进行调整。例如: ```python if any(x < 0 for x in X): raise ValueError("All elements of X should be non-negative.") ``` - **转换数据类型或应用映射函数** 如果业务场景允许的话,还可以尝试通过某种方式将所有的负数转化为正数后再参与后续计算过程。比如利用绝对值函数 abs() 或者其他自定义的方式实现这一目的。 ```python import numpy as np def ensure_non_negative(X): """Ensure all values are non-negative.""" return np.abs(np.array(X)) # Using absolute value to convert negatives # Example usage: X = [-2, -1, 0, 1, 2] safe_X = ensure_non_negative(X) print(safe_X) ``` 上述方法能够有效地防止因传入不符合预期范围内的参数而导致程序崩溃的情况发生。当然具体采用哪种策略取决于实际应用场景以及对结果精度的要求等因素影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值