为什么出现这些警告,且不出图


# 导入可能要用到的库
from pylab import mpl
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

mpl.rcParams["font.sans-serif"] = ["SimHei"]

# 读取数据
# 选择Excel文件
wine = pd.read_excel("E:\\秦皇岛海上平台项目\\秦皇岛32-6油田数据\\分类后的数据\\I平台\\注水泵\\关联度分析.xlsx")
wine.head()

# 无量纲化
def dimensionlessProcessing(df):
    #创建Dataframe(DataFrame是带有标签轴(行和列)的二维大小可变的,可能是异构的表格数据结构)
    newDataFrame = pd.DataFrame(index=df.index)
    #显示列表索引
    columns = df.columns.tolist()
    for c in columns:
        d = df[c]
        MAX = d.max()
        MIN = d.min()
        MEAN = d.mean()
        newDataFrame[c] = ((d - MEAN) / (MAX - MIN)).tolist()
    return newDataFrame

def GRA_ONE(gray, m=0):
    # 读取为df格式
    gray = dimensionlessProcessing(gray)
    # 标准化

    #取m列
    std = gray.iloc[:, m]  # 为标准要素

    #axis = 1  表示删除列,inplace=True, 直接从内部删除
    gray.drop(str(m),axis=1,inplace=True)
    ce = gray.iloc[:, 0:]  # 为比较要素
    shape_n, shape_m = ce.shape[0], ce.shape[1]  # 计算行列,shape[0]读取矩阵第一维度的长度,shape[1]读取矩阵第二维度的长度

    # 与标准要素比较,相减
    a = np.zeros([shape_m, shape_n])
    for i in range(shape_m):
        for j in range(shape_n):
            a[i, j] = abs(ce.iloc[j, i] - std[j]) #abs() 函数返回数字的绝对值

    # 取出矩阵中最大值与最小值
    c, d = np.amax(a), np.amin(a)

    # 计算值
    result = np.zeros([shape_m, shape_n])
    for i in range(shape_m):
        for j in range(shape_n):
            result[i, j] = (d + 0.5 * c) / (a[i, j] + 0.5 * c)

    # 求均值,得到灰色关联值,并返回
    result_list = [np.mean(result[i, :]) for i in range(shape_m)]
    result_list.insert(m,1) #将result_list插入
    return pd.DataFrame(result_list)

# 调用GRA_ONE,求得所有因素之间的灰色关联值
def GRA(DataFrame):
    df = DataFrame.copy()
    list_columns = [
        str(s) for s in range(len(df.columns)) if s not in [None]
    ]
    df_local = pd.DataFrame(columns=list_columns)
    df.columns=list_columns
    for i in range(len(df.columns)):
        df_local[df_local.columns[i]] = GRA_ONE(df, m=i)[0]
    return df_local


import seaborn as sns


def ShowGRAHeatMap(DataFrame):
    colormap = plt.cm.RdBu
    ylabels = DataFrame.columns.values.tolist()
    f, ax = plt.subplots(figsize=(14, 14))
    ax.set_title('GRA HeatMap')

    # 设置展示一半,如果不需要注释掉mask即可
    mask = np.zeros_like(DataFrame)
    mask[np.triu_indices_from(mask)] = True

    with sns.axes_style("white"):
        sns.heatmap(DataFrame,
                    cmap="YlGnBu",
                    annot=True,
                    mask=mask,
                    )
    plt.show()

plt.show()
data_wine_gra = GRA(wine)
ShowGRAHeatMap(data_wine_gra)
F:\Anaconda3\lib\site-packages\seaborn\matrix.py:202: RuntimeWarning: All-NaN slice encountered
  vmin = np.nanmin(calc_data)
F:\Anaconda3\lib\site-packages\seaborn\matrix.py:207: RuntimeWarning: All-NaN slice encountered
  vmax = np.nanmax(calc_data)
E:\pythonProject2\影响因素分析\灰色关联法.py:94: UserWarning: Glyph 8722 (\N{MINUS SIGN}) missing from current font.
  plt.show()

为什么出现这些警告,且不出图

你的数据里有NaN,可以考虑先过滤下。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7452984
  • 你也可以参考下这篇文章:点云分割,点云聚类,找出特征点云
  • 除此之外, 这篇博客: 语音识别训练教程及常见问题解析中的 导出模型 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    训练保存的或者下载作者提供的模型都是模型参数,我们要将它导出为预测模型,这样可以直接使用模型,不再需要模型结构代码,同时使用Inference接口可以加速预测,详细参数请查看该程序。

    python export_model.py --resume_model=models/deepspeech2/epoch_50/
    

    输出结果:

    -----------  Configuration Arguments -----------
    dataset_vocab: dataset/vocabulary.txt
    mean_std_path: dataset/mean_std.npz
    resume_model: models/deepspeech2/epoch_50
    save_model: models/deepspeech2/
    use_model: deepspeech2
    ------------------------------------------------
    [2021-09-18 10:23:47.022243] 成功恢复模型参数和优化方法参数:models/deepspeech2/epoch_50/model.pdparams
    
    预测模型已保存:models/deepspeech2/infer
    
  • 您还可以看一下 王恩龙老师的软件测试基础课程中的 软件测试准入准出条件小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    出现警告并无法生成图像的原因可能有多种,以下是一些常见的原因和解决方案:

    1. 数据倾斜导致的警告和图像无法生成:当数据中某个类别的样本数量明显多于其他类别时,可能导致模型倾向于预测样本数量多的类别,而忽略数量少的类别,从而导致结果不准确。解决方法是可以使用降采样的方式,即减少数据中数量多的类别的样本数量,使各类别样本数量接近,从而平衡模型的预测结果。具体的实现可以使用Python的imbalanced-learn库,利用RandomUnderSampler函数对数据进行降采样。
    from imblearn.under_sampling import RandomUnderSampler
    
    # X为特征数据,y为目标数据
    X_resampled, y_resampled = RandomUnderSampler().fit_resample(X, y)
    

    另一种方法是在训练模型时添加参数class_weight='balanced',这样可以自动调整模型中每个类别的权重,使得模型对数量少的类别更加敏感,从而提高预测准确率。

    1. 数据未归一化导致的警告和图像无法生成:在训练模型时,特征数据的范围可能存在较大差异,导致模型难以收敛或预测结果不准确。解决方法是对特征数据进行归一化或标准化,使其范围统一。常用的归一化方法有min-max归一化和z-score标准化。具体的实现可以使用Python的sklearn库中的MinMaxScaler和StandardScaler函数进行归一化或标准化。
    from sklearn.preprocessing import MinMaxScaler
    
    scaler = MinMaxScaler()  # 创建归一化对象
    X_normalized = scaler.fit_transform(X)  # 对特征数据进行归一化
    
    from sklearn.preprocessing import StandardScaler
    
    scaler = StandardScaler()  # 创建标准化对象
    X_standardized = scaler.fit_transform(X)  # 对特征数据进行标准化
    

    这些是可能导致警告和无法生成图像的一些常见原因和解决方案。如果问题仍然存在,可能需要根据具体情况进行更深入的调查和分析。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^