创建一个相关的矩阵可以使用Python中的pandas和numpy库来处理。下面是具体的步骤:
1. 导入库
使用import关键字导入需要使用的库。
import pandas as pd
import numpy as np
2. 创建随机数据
使用numpy中的random模块生成随机数,创建数据集。
np.random.seed(0)
df = pd.DataFrame(np.random.randn(6, 4), columns=list('ABCD'))
这里生成了一个6行4列的随机数据,并使用columns参数给每列命名为ABCD。
3. 计算相关系数
计算出数据集中各列之间的相关系数。pandas中的corr函数可以直接计算出DataFrame数据集中各列之间的相关系数,此处指定的method参数默认为pearson方法计算相关系数。
corr_matrix = df.corr()
4. 可视化相关矩阵
使用matplotlib和pandas的style模块绘制相关矩阵的可视化图形。
import matplotlib.pyplot as plt
import matplotlib.cm as cm
fig, ax = plt.subplots()
cax = ax.matshow(corr_matrix, cmap=cm.coolwarm)
fig.colorbar(cax)
ticks = np.arange(0,len(corr_matrix.columns),1)
ax.set_xticks(ticks)
plt.xticks(rotation=90)
ax.set_yticks(ticks)
ax.set_xticklabels(corr_matrix.columns)
ax.set_yticklabels(corr_matrix.columns)
plt.show()
示例一
接下来,我们将自定义一个数据集进行相关矩阵的计算和可视化,示例代码如下:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
df = pd.DataFrame({'A': [1, 2, 3, 4], 'B': [2, 2, 3, 5], 'C': [5, 6, 5, 7], 'D': [8, 7, 8, 9]})
corr_matrix = df.corr()
fig, ax = plt.subplots()
cax = ax.matshow(corr_matrix, cmap=cm.coolwarm)
fig.colorbar(cax)
ticks = np.arange(0,len(corr_matrix.columns),1)
ax.set_xticks(ticks)
plt.xticks(rotation=90)
ax.set_yticks(ticks)
ax.set_xticklabels(corr_matrix.columns)
ax.set_yticklabels(corr_matrix.columns)
plt.show()
运行以上示例代码,将会生成一个可视化的相关矩阵,其中A、B、C、D四列的每两列之间的相关系数都会被计算。
示例二
再来一个稍微复杂一点的示例,需要使用到numpy的多维数组来生成数据集。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
data = {'col_{}'.format(i): np.random.normal(size=100) for i in range(10)}
df = pd.DataFrame(data)
corr_matrix = df.corr()
fig, ax = plt.subplots()
cax = ax.matshow(corr_matrix, cmap=cm.coolwarm)
fig.colorbar(cax)
ticks = np.arange(0,len(corr_matrix.columns),1)
ax.set_xticks(ticks)
plt.xticks(rotation=90)
ax.set_yticks(ticks)
ax.set_xticklabels(corr_matrix.columns)
ax.set_yticklabels(corr_matrix.columns)
plt.show()
运行以上代码后,将会生成一个10列的数据集,然后计算并可视化这个数据集中各列之间的相关系数。