Python中常见错误汇总(持续更新中)

Problem1 ModuleNotFoundError: No module named 'sklearn.datasets.samples_generator’

from sklearn.datasets.samples_generator import make_blobs

ModuleNotFoundError: No module named 'sklearn.datasets.samples_generator’

原因

samples_generator模块在新版本scikit-learn中已被移除。

samples_generator模块中相应的类/函数直接从sklearn.datasets中导入即可。

Problem2 ‘sklearn.externals’ (C:\anaconda\lib\site-packages\sklearn\externals_init_.py

python储存模型时报错,cannot import name ‘joblib’ from ‘sklearn.externals’ (C:\anaconda\lib\site-packages\sklearn\externals_init_.py)

原因:

使用的anaconda 而不是自己下载的python

解决:

删除:from sklearn.externals import joblib
更改为:import joblib

Problem3 AttributeError: module ‘tensorflow’ has no attribute ‘Session’

AttributeError: module ‘tensorflow’ has no attribute ‘Session’

解释:

这个错误表明你正在尝试从tensorflow模块中访问一个不存在的属性Session。在TensorFlow 2.x版本中,tensorflow.Session已被移除,因为TensorFlow 2.x版本引入了新的API,其中最主要的变化是使用tf.function来构建图结构,并使用Eager Execution来执行操作,这样可以让编程变得更加直观和简单。

解决方法:

如果你的代码是为TensorFlow 1.x编写的,并且你想在TensorFlow 2.x环境中运行它,你需要做一些修改。以下是几种解决方法:

  1. 如果你只是想使用TensorFlow 1.x的行为,可以通过以下代码在TensorFlow 2.x中启用TensorFlow 1.x兼容模式:
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()

然后你可以使用tf.Session创建一个会话。

  1. 如果你想迁移到TensorFlow 2.x的API,你需要将所有tf.Session的用法替换为tf.compat.v1.Session,并将图构建的代码迁移到tf.function装饰器中。

  2. 另一个选择是安装TensorFlow 1.x版本,可以通过pip安装一个特定版本的TensorFlow:

pip install tensorflow==1.15

确保选择与你的代码兼容的版本。

Problem4 波士顿数据集导入错误

ImportError: load_boston has been removed from scikit-learn since version 1.2. 波士顿数据集导入错误

该问题是由于在sklearn 1.2之后版本中被移除造成的。

不过可以通过以下网址之一获得这个数据集:

http://lib.stat.cmu.edu/datasets/boston

https://archive.ics.uci.edu/ml/machine-learning-databases/housing/housing.data

解决

import numpy as np
import pandas as pd
data_url = "http://lib.stat.cmu.edu/datasets/boston"
raw_df = pd.read_csv(data_url, sep=r"\s+", skiprows=22, header=None)
data = np.hstack([raw_df.values[::2, :], raw_df.values[1::2, :2]])
target = raw_df.values[1::2, 2]

导入数据集的方法:

boston = np.hstack([raw_df.values[::2, :], raw_df.values[1::2, :3]])
print(boston.shape)

输出(506, 14)

或者,卸载现有的scikit-learn:

pip uninstall scikit-learn

之后,使用下面的命令下载比1.2版本的scikit-learn低的版本:

pip install scikit-learn==1.1.1 -i https://pypi.tuna.tsinghua.edu.cn/simple

Problem5 AttributeError: module ‘sklearn.metrics’ has no attribute ‘calinski_harabaz_score’

AttributeError: module ‘sklearn.metrics’ has no attribute ‘calinski_harabaz_score’

metrics.calinski_harabaz_score(X, y_pred)

改为

metrics.calinski_harabasz_score(X, y_pred)

官方示例

Problem6 AttributeError: module ‘matplotlib.pyplot’ has no attribute ‘df_cm1’

AttributeError: module ‘matplotlib.pyplot’ has no attribute ‘df_cm1’

# 计算混淆矩阵  
cm = confusion_matrix(y_true, y_pred)  
  
# 将混淆矩阵转换为 DataFrame  
df_cm1 = pd.DataFrame(cm, index=['类别0', '类别1'], columns=['类别0', '类别1'])  # 假设你有两个类别  
  
# 绘制热图  
plt.figure(figsize=(10, 7))  
sns.heatmap(df_cm1, annot=True, cmap='Blues')  
  

Problem 7 ValueError: Number of rows must be a positive integer, not 5.0

ValueError: Number of rows must be a positive integer, not 5.0
经过查看

ax1 = p.add_subplot(num/10,10,fignum+1)

改为

ax1 = p.add_subplot(int(num/10),10,fignum+1)

只需要给num/10加一个int函数,转为整型即可

本文由笔者整理而成,内容收集于网络,整理不易,转载注明出处,持续更新中ing

  • 17
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值