# 导入可能要用到的库
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,可以考虑先过滤下。
不知道你这个问题是否已经解决, 如果还没有解决的话:训练保存的或者下载作者提供的模型都是模型参数,我们要将它导出为预测模型,这样可以直接使用模型,不再需要模型结构代码,同时使用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
出现警告并无法生成图像的原因可能有多种,以下是一些常见的原因和解决方案:
from imblearn.under_sampling import RandomUnderSampler
# X为特征数据,y为目标数据
X_resampled, y_resampled = RandomUnderSampler().fit_resample(X, y)
另一种方法是在训练模型时添加参数class_weight='balanced',这样可以自动调整模型中每个类别的权重,使得模型对数量少的类别更加敏感,从而提高预测准确率。
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) # 对特征数据进行标准化
这些是可能导致警告和无法生成图像的一些常见原因和解决方案。如果问题仍然存在,可能需要根据具体情况进行更深入的调查和分析。