赞
踩
本学渣补充数学知识点:
1 Pearson Correlation(皮尔逊相关系数),详见
这里我自己先创建一个表格,
重点关注A和B,因为我输入的时候是线性相关的,
CDE 三个栏完全随机,
F 和 G 有一定相关性,但是不如A和B那么明显,
H,I,J 也是乱输入的完全随机。
给出两个代码结果,分别是
给出显著性和不给出显著性的运行结果:
运行一下看看:
不给出显著性的结果:
给出显著性的结果:
两个图对比发现图二多了一些星星
代表相关性等级,F和G 的相关性没有A和B高,这和我之前预想的结果一样。
下面用到的基础知识和函数参数补充:
mask那一坨代码完成了两件事:
1 去重
2 去掉一半的矩阵,如果不去掉的效果类似这样
或者这样
去掉一半显得更加简洁明了
代码:
import pandas as pd import seaborn as sns import matplotlib.pyplot as plt import numpy as np from scipy.stats import pearsonr import matplotlib as mpl def cm2inch(x,y): return x/2.54,y/2.54 size1 = 10.5 #这块设置字体的,人家设置的本来已经很漂亮了,暂时不关注 mpl.rcParams.update( { 'text.usetex': False, 'font.family': 'stixgeneral', 'mathtext.fontset': 'stix', "font.family":'serif', "font.size": size1, "font.serif": ['Times New Roman'], } ) fontdict = {'weight': 'bold','size':size1,'family':'SimHei'} #这个地方,放你的Excel文件路径 fp = r'E:\data\test.xlsx' #这个地方放你的表格里面sheet名称,默认是‘sheet1’,一般不用修改 df = pd.read_excel(fp,sheet_name='Sheet1',header = 0) #这个函数可选参数为你要使用的相关系数,返回一个含有相关系数的矩阵 df_coor=df.corr() #指定画图的尺寸,详见博客 fig = plt.figure(figsize=(cm2inch(16,12))) #plt.gca( )中完成,gca就是get current axes的意思 #先获取当前轴,便于下一步移动,作出你想要的效果。 ax1 = plt.gca() #构造mask,去除重复数据显示 #返回一个类似形状的元素全为0的矩阵,详见博客 mask = np.zeros_like(df_coor) print('step1') print(mask) #把这个全0元素矩阵的上三角部分赋值为1(也就是true) mask[np.triu_indices_from(mask)] = True #用一个mask2 来接收 这个 上三角元素都为1的矩阵 print('step2') print(mask) mask2 = mask # 从这开始 我也看不懂了 每一步都知道啥意思,但是连起来就不知道了 #但是不影响,每次运行完 我加一个print语句输出这个mask是啥,这样就清晰了 mask = (np.flipud(mask)-1)*(-1) print('step3') print(mask) mask = np.rot90(mask,k = -1) print('step4-------') print(mask) im1 = sns.heatmap(df_coor,annot=True,cmap="RdBu" , mask=mask#构造mask,去除重复数据显示 ,vmax=1,vmin=-1 , fmt='.2f',ax = ax1) ax1.tick_params(axis = 'both', length=0) #此处填写保存文件的路径 plt.savefig(r'E:\data\r_demo.png',dpi=600) plt.show()
运行结果:
step1 [[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]] step2 [[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.] [0. 1. 1. 1. 1. 1. 1. 1. 1. 1.] [0. 0. 1. 1. 1. 1. 1. 1. 1. 1.] [0. 0. 0. 1. 1. 1. 1. 1. 1. 1.] [0. 0. 0. 0. 1. 1. 1. 1. 1. 1.] [0. 0. 0. 0. 0. 1. 1. 1. 1. 1.] [0. 0. 0. 0. 0. 0. 1. 1. 1. 1.] [0. 0. 0. 0. 0. 0. 0. 1. 1. 1.] [0. 0. 0. 0. 0. 0. 0. 0. 1. 1.] [0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]] step3 [[ 1. 1. 1. 1. 1. 1. 1. 1. 1. -0.] [ 1. 1. 1. 1. 1. 1. 1. 1. -0. -0.] [ 1. 1. 1. 1. 1. 1. 1. -0. -0. -0.] [ 1. 1. 1. 1. 1. 1. -0. -0. -0. -0.] [ 1. 1. 1. 1. 1. -0. -0. -0. -0. -0.] [ 1. 1. 1. 1. -0. -0. -0. -0. -0. -0.] [ 1. 1. 1. -0. -0. -0. -0. -0. -0. -0.] [ 1. 1. -0. -0. -0. -0. -0. -0. -0. -0.] [ 1. -0. -0. -0. -0. -0. -0. -0. -0. -0.] [-0. -0. -0. -0. -0. -0. -0. -0. -0. -0.]] step4------- [[-0. 1. 1. 1. 1. 1. 1. 1. 1. 1.] [-0. -0. 1. 1. 1. 1. 1. 1. 1. 1.] [-0. -0. -0. 1. 1. 1. 1. 1. 1. 1.] [-0. -0. -0. -0. 1. 1. 1. 1. 1. 1.] [-0. -0. -0. -0. -0. 1. 1. 1. 1. 1.] [-0. -0. -0. -0. -0. -0. 1. 1. 1. 1.] [-0. -0. -0. -0. -0. -0. -0. 1. 1. 1.] [-0. -0. -0. -0. -0. -0. -0. -0. 1. 1.] [-0. -0. -0. -0. -0. -0. -0. -0. -0. 1.] [-0. -0. -0. -0. -0. -0. -0. -0. -0. -0.]]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。