Análisis de correlación de Pearson y trazado de gráficos (histograma de coeficiente de correlación, dibujo de un histograma del número de valores no nulos)
Análisis de correlación de Pearson y trazado de gráficos (histograma de coeficiente de correlación, dibujo de un histograma del número de valores no nulos)
1. Análisis de correlación de Pearson
El análisis de correlación de Pearson es un método estadístico utilizado para detectar la fuerza de una relación lineal entre dos variables, con un resultado entre -1 y 1. Un coeficiente de correlación de 1 indica una relación positiva perfecta, -1 indica una relación negativa perfecta y 0 indica que no hay relación lineal. El análisis de correlación de Pearson asume que los datos provienen de una distribución normal y es sensible a los valores atípicos.
2. Ejemplo de análisis de correlación de Pearson
# 计算pearsonr相关系数defcalculate_pearsonr(pd):
head = pd.head().columns.values
GDM = pd["目标变量"].tolist()
coefficient_of_association ={
}
significance_level ={
}
feature_cnt ={
}for feature in head:if feature !="目标变量":
ftc =0
feature_values = pd[feature].tolist()
GDM_temp, feature_temp, tag =[],[],0for v in feature_values:ifstr(v)!="nan":
ftc +=1
GDM_temp.append(GDM[tag])
feature_temp.append(v)
tag +=1
feature_cnt[feature]= ftc
iflen(feature_temp)>1:
pc = pearsonr(np.array(feature_temp), np.array(GDM_temp))ifstr(pc[0])!="nan":
ca = pc[0]if ca <-0.0001:
ca = ca*-1
coefficient_of_association[feature]= ca
significance_level[feature]= pc[1]elif ca >0.0001:
coefficient_of_association[feature]= ca
significance_level[feature]= pc[1]
dp_ca =sorted(
coefficient_of_association.items(),
key=lambda x: x[1],
reverse=True)print("pearsonr-相关系数:",dp_ca)
dp_ca_Nempty=[(i[0], feature_cnt[i[0]])for i in dp_ca]print("非空值的数量:",dp_ca_Nempty)return dp_ca
import matplotlib.pyplot as plt
defplot1(dp_ca):# 将元组列表转换为字典
dp_ca_dict =dict(dp_ca)# 创建子图# fig, ax = plt.subplots()
fig = plt.figure(figsize=(16,10))
ax = fig.add_subplot(1,1,1)# 绘制相关性系数柱状图
ax.bar(dp_ca_dict.keys(), dp_ca_dict.values())
ax.set_title('Correlation between Feature and 目标变量')
ax.set_xlabel('Features')
ax.set_ylabel('Correlation Coefficient')# 调整布局并显示图形
plt.xticks(rotation=45,ha='right')## # 将x轴标签旋转45度,并以最后一个字符为旋转中心# 设置x轴刻度标签字体大小为8
ax.tick_params(axis='x', labelsize=10)
plt.tight_layout()
plt.savefig("./Pearson.jpeg")
plt.show()if __name__ =='__main__':file= pd.read_excel("./filename.xlsx")
dp_ca=calculate_pearsonr(file)
plot1(dp_ca)
3.trazar el dibujo (histograma del coeficiente de correlación, dibujar un histograma del número de valores no nulos)