找回密码
 会员注册
查看: 42|回复: 0

Bug小能手系列(python)_9使用sklearn库报错module‘numpy‘hasnoattribute‘int‘

[复制链接]

6

主题

0

回帖

19

积分

新手上路

积分
19
发表于 2024-9-3 11:05:14 | 显示全部楼层 |阅读模式
AttributeError:module'numpy'hasnoattribute'int'.0.错误介绍1.环境介绍2.问题分析3.解决方法3.1调用解决3.2库包中存在报错4.总结首先,对于自己使用代码dtype=np.int报错的情况,建议直接修改为np.int_即可解决,也不用向下看了!!!!下文主要是针对sklearn库包中存在大量np.int报错的情况!!!0.错误介绍在使用sklearn库的metrics的cohen_kappa_score()函数以及preprocessing.OneHotEncoder的fit_transform()函数时出错。当然包括sklearn中的很多函数。但是,需要注意的是:这里的报错是sklearn库中调用np.int报错,与自己书写时使用np.int报错是不同的。因为,对于自己书写的np.int,直接进行修改就行(修改为:np.int_,np.int32或者np.int64)。而sklearn库中存在大量使用np.int的内容,修改过于麻烦,因此专门介绍对于该情况如何解决问题。代码如下:frommne.decodingimportCSP#CommonSpatialPatternFilteringfrommne.channelsimportread_layoutfromsklearnimportpreprocessingfromsklearn.preprocessingimportOneHotEncoderfromsklearn.model_selectionimportShuffleSplit#OneHotEncodingLabelsenc=OneHotEncoder()X_out=enc.fit_transform(labels.reshape(-1,1)).toarray()#CrossValidationSplit交叉验证拆分cv=ShuffleSplit(n_splits=10,test_size=0.2,random_state=0)fromsklearn.metricsimportaccuracy_scorefromsklearn.metricsimportcohen_kappa_scorefromsklearn.metricsimportprecision_scorefromsklearn.metricsimportrecall_scoreacc=[]ka=[]prec=[]recall=[]ka.append(cohen_kappa_score(test_trues,test_pres))123456789101112131415161718192021222324报错:1.环境介绍首先,对代码当前使用环境进行简单介绍。代码环境:python版本为:3.9、numpy版本为:1.25.0、sklearn版本为:0.21.3。代码中存在大量关于jupyter的环境,可以在观看的时候将其忽略。aiofiles22.1.0aiosqlite0.18.0albumentations1.2.1anyio3.5.0appdirs1.4.4argon2-cffi21.3.0argon2-cffi-bindings21.2.0asttokens2.0.5attrs22.1.0Babel2.11.0backcall0.2.0beautifulsoup44.12.2bleach4.1.0brotlipy0.7.0certifi2023.5.7cffi1.15.1charset-normalizer2.0.4chinese-calendar1.8.0colorama0.4.6comm0.1.2contourpy1.1.0cryptography39.0.1cycler0.11.0debugpy1.5.1decorator5.1.1defusedxml0.7.1entrypoints0.4executing0.8.3fastjsonschema2.16.2fonttools4.40.0idna3.4importlib-metadata6.0.0importlib-resources5.12.0ipykernel6.19.2ipython8.12.0ipython-genutils0.2.0ipywidgets8.0.4jedi0.18.1Jinja23.1.2joblib1.2.0json50.9.6jsonschema4.17.3jupyter1.0.0jupyter_client8.1.0jupyter-console6.6.3jupyter_core5.3.0jupyter-events0.6.3jupyter_server2.5.0jupyter_server_fileid0.9.0jupyter_server_terminals0.4.4jupyter_server_ydoc0.8.0jupyter-ydoc0.2.4jupyterlab3.6.3jupyterlab-pygments0.1.2jupyterlab_server2.22.0jupyterlab-widgets3.0.5kiwisolver1.4.4lxml4.9.2MarkupSafe2.1.1matplotlib3.7.1matplotlib-inline0.1.6mistune0.8.4mkl-fft1.3.6mkl-random1.2.2mkl-service2.4.0mne1.4.2nbclassic0.5.5nbclient0.5.13nbconvert6.5.4nbformat5.7.0nest-asyncio1.5.6notebook6.5.4notebook_shim0.2.2numpy1.25.0packaging23.0pandocfilters1.5.0parso0.8.3pickleshare0.7.5Pillow10.0.0pip23.1.2platformdirs2.5.2ply3.11pooch1.4.0prometheus-client0.14.1prompt-toolkit3.0.36psutil5.9.0pure-eval0.2.2pycparser2.21Pygments2.15.1pyOpenSSL23.0.0pyparsing3.1.0pypiwin32223PyQt55.15.7PyQt5-sip12.11.0pyrsistent0.18.0PySocks1.7.1python-dateutil2.8.2python-json-logger2.0.7pyttsx32.90pytz2022.7PyWavelets1.4.1pywin32305.1pywinpty2.0.10PyYAML6.0pyzmq25.1.0qtconsole5.4.2QtPy2.2.0qudida0.0.4requests2.29.0rfc3339-validator0.1.4rfc3986-validator0.1.1scikit-learn0.21.3scipy1.10.1Send2Trash1.8.0setuptools67.8.0sip6.6.2six1.16.0sniffio1.2.0soupsieve2.4stack-data0.2.0terminado0.17.1threadpoolctl2.2.0tinycss21.2.1toml0.10.2tomli2.0.1torch1.12.1+cu116torchaudio0.12.1+cu116torchvision0.13.1+cu116tornado6.2tqdm4.65.0traitlets5.7.1typing_extensions4.6.3urllib31.26.16wcwidth0.2.5webencodings0.5.1websocket-client0.58.0wheel0.38.4widgetsnbextension4.0.5win-inet-pton1.1.0y-py0.5.9ypy-websocket0.8.2zipp3.11.01234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411422.问题分析首先对问题进行分析,根据报错信息以及报错中的问题指出可以发现,错误来源于numpy库包在当前版本已经没有了np.int这个用法,而这里却使用了这个用法。np.int在NumPy1.20中已弃用,在NumPy1.24中已删除。具体地址为:~\AppData\Roaming\Python\Python39\site-packages\sklearn\metrics\classification.py:564(~表示当前电脑用户地址,一般为:C:\user)具体代码为:w_mat=np.ones([n_classes,n_classes],dtype=np.int)错误为:module'numpy'hasnoattribute'int'.,即不能使用np.int,需要对其进行替换。3.解决方法3.1调用解决对于自己调用np.int报错,可以通过修改该用法来解决。这里我们点击报错所给的链接,然后得到了下面的图像:从上面可以看出,对于调用np.int报错的内容,可以通过将np.int替换为np.int_、np.int32或者np.int64来解决该报错。3.2库包中存在报错对于上文提及的sklearn中存在报错的情况,虽然根据报错给出的具体地址可以找到报错代码,然后根据上文3.1节给出的修改方法可以解决该报错。但是,当你下次同样使用该库包时可能仍会出现上文给出的错误的情况。因此,这里从sklearn库创建者的角度思考:我不能容忍一个错误存在这么久。所以,尝试对库包进行更新,而更新后的库包理论上应该不会存在该错误。这里,使用以下命令对sklearn库包进行更新:pipinstallscikit-learn--upgrade--user1最后,得到更新后的sklearn的版本为:scikit-learn1.3.01最后,实验结果表明:sklearn库包经更新后,代码可以跑通了!实在是不容易哦!!!4.总结总的而言,感觉出现该错误可能就是我使用的sklearn版本太低了了(scikit-learn=0.21.3),不过好歹问题解决了。网上的相关教程根本没有,所以根据自己的经验来总结这篇文章,希望大家会喜欢。如果有什么疑问欢迎在评论区提出,对于共性问题可能会后续添加到文章介绍中。如果觉得这篇文章对你有用,记得点赞、收藏并分享给你的小伙伴们哦😄。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-13 17:06 , Processed in 0.499305 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表