成功解决TypeError: __init__() got an unexpected keyword argument 'sparse'
目录
解决问题
TypeError: __init__() got an unexpected keyword argument 'sparse'
解决思路
错误信息指出OneHotEncoder的构造函数__init__接收到一个意外的关键字参数sparse。这通常意味着使用的scikit-learn版本不支持sparse参数,或者在使用参数时的方式不正确。
解决方法
OneHotEncoder是scikit-learn库中的一个类,用于将分类特征转换为独热编码向量。在scikit-learn的早期版本中,OneHotEncoder默认返回的是稀疏矩阵,但在较新的版本中,可以通过sparse参数来控制输出是稀疏矩阵还是稠密矩阵。
T1、降低scikit-learn版本
import sklearn
print(sklearn.__version__)
pip install scikit-learn==1.2.0
T2、采用最新scikit-learn的最新参数用法
在最近版本的 scikit-learn(从 1.2.0 版本开始)中,sparse 参数被替换成了 sparse_output。具体来说:
旧的 API: OneHotEncoder(sparse=True)
新的 API: OneHotEncoder(sparse_output=True)
# 将 sparse 参数替换为 sparse_output即可!
from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder(sparse_output=True)