随着python版本的更迭,机器学习100天中部分原有的代码无法与较新版本的python相容,为了让大家更方便的运行代码,了解其中原理,笔者将其中需要改正的部分列举出来,供大家参考
1.ModuleNotFoundError: No module named 'sklearn.cross_validation'
原代码:
from sklearn.cross_validation import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split( X, Y, test_size = 1/4, random_state = 0)
错误原因:
在sklearn0.18及其以上版本,cross_validation被废弃,只需将cross_validation替代为model_selection即可。
修改后代码:
from sklearn.model_selection import train_test_split
X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_size=0.25,random_state=0)
代码外问题:
笔者在pycharm2020.3.3运行此代码时,出现图像不显示的问题(无法弹出图像窗口),程序运行无误:
阅读下面方法前,请大家先在绘图语句后添加plt.show(),然后尝试运行,如果成功即可忽略以下方法。
经查阅资料后了解,笔者用的是Mac系统,Mac系统上的Python版本为3.8.8,而Pycharm环境中版本为3.7,为后端绘制版本与Python版本无法对应的问题,详见Pycharm绘图图像无法显示https://blog.csdn.net/geanwen/article/details/78559272?ops_request_misc=&request_id=&biz_id=102&utm_term=pycharm%E4%BD%BF%E7%94%A8matplotlib%E7%BB%98%E5%9B%BE%E6%97%A0%E6%B3%95%E6%98%BE%E7%A4%BA%E5%9B%BE%E7%89%87&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-78559272.142%5Ev51%5Econtrol,201%5Ev3%5Econtrol_1&spm=1018.2226.3001.4187
笔者用anaconda新建环境python3.8.13,并更新环境,但还是无法解决此问题。笔者查阅大量资料,安装brew(MacOS中非常好用的包管理工具,真情推荐),详见Homebrew介绍和使用http://t.csdn.cn/8T4dv
然后通过brew安装pyenv(一款管理python环境的工具),更新系统版本为3.8.13。但事实上,只需保证系统版本和环境版本均为3.8即可,并不需要做到完全一致。Windows版本的朋友还可以尝试在settings中取消python scientific的勾选(笔者在Mac中的pycharm为找到此选项)。
参考文章:
1.ModuleNotFoundError: No module named 'sklearn.cross_validation'