You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

导入scikit.decomposition.PCA时遇numpy 'float'属性错误的解决咨询

解决导入sklearn.decomposition.PCA时的AttributeError问题

问题详情

你使用Python 3.8.5在VSCode的.ipynb文件中尝试导入PCA模块,代码如下:

import numpy as np
from sklearn.decomposition import PCA

已升级numpy和scikit-learn,但仍报错,错误信息核心为:

AttributeError: module 'numpy' has no attribute 'float'

同时你尝试过错误的导入语句from scikit.decomposition import PCA,同样触发该错误,但单独导入numpy正常。

原因分析

这个错误的本质是版本不兼容:新版本NumPy(1.24及以上)移除了numpy.float、numpy.int等旧的类型别名,但你的scikit-learn版本过旧,仍在调用这些已被移除的属性。另外,scikit不是正确的包名,官方包名为sklearn,所以from scikit.decomposition import PCA本身就是错误写法。

解决步骤

方案一:升级scikit-learn到兼容版本

Python 3.8支持的scikit-learn最高兼容版本为1.2.2,该版本适配NumPy 1.24+。执行以下命令升级:

# Anaconda环境推荐用conda
conda update scikit-learn
# 或者用pip指定版本
pip install --upgrade scikit-learn==1.2.2

方案二:降低NumPy到兼容旧版本scikit-learn的版本

如果不想升级scikit-learn,可将NumPy降级到1.23.5(该版本保留了旧类型别名,适配大多数旧版scikit-learn):

conda install numpy==1.23.5
# 或者用pip
pip install numpy==1.23.5

方案三:临时兼容修复(不推荐长期使用)

若需紧急运行代码,可在导入sklearn前手动恢复NumPy的旧类型别名:

import numpy as np
# 恢复旧类型别名
np.float = float
np.int = int
np.bool = bool
np.str = str
np.long = int

# 正常导入PCA
from sklearn.decomposition import PCA

内容的提问来源于stack exchange,提问作者Vishakh Sandwar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 15:15:32