首先先倒入一个pandas包,用于读取数据集,并转化为一个dataframe类型的对象,其中datafram对象是最常用的pandas数据格式,类似于excel表格或sql表。它由行和列组成,并且每个列可以具有不同的数据类型。
import pandas as pd
df = pd.read_csv('B005放电数据集.csv')
print(df)
数据显示如下:
假如我们以SOH为标签属性,需要计算SOH与其他特征的相关性,我们可以使用 pandas 中dataframe的 corr()
方法计算已加载到数据框中的相关系数矩阵,并将结果存储在名为 corr_matrix
的新数据框中。这里计算的是每一个属性与其他属性的相关性。并保存在corr_matrix对象中。代码如下:
corr_matrix = df.corr()
corr_matrix 的样式如下:
我们可以单独把SOH列与其他特征的的相关性输出出来,代码如下:
print(corr_matrix['SOH'])
输入结果如下:
如果我想要更加形象的观看不同属性的相关性,我们可以把corr_matrix画出来。
import seaborn as sns
import matplotlib.pyplot as plt
sns.set(font_scale=1.0)
sns.heatmap(corr_matrix, cmap="Blues", annot=True, xticklabels=corr_matrix.columns, yticklabels=corr_matrix.columns)
plt.show()
结果显示如下:
需要注意的是,由于数据集并不是一一对应的数据集,例如一个Cycle可能对应若干个Time,使用这个热力图可能不是很好的展现其相关性这里只是以这个数据集举例。
在这里:sns.set(font_scale=1.0)
:设置字体大小为1
sns.heatmap()用来画热力图,有以下参数:
corr_matrix
是一个二维数组或dataframe,表示待展示数据的相关系数矩阵。cmap
参数指定了颜色地图的名称,这里使用了内置的"blues",当然我们也可以使用“red”。annot
参数指定是否在每个单元格中显示其值。xticklabels
和yticklabels
参数分别指定横纵坐标的刻度标签。
plt.show()
:展示热力图。
以上的方法可以计算一个数据集的所有属性之间的相关性,当然数据集最好是一一对应的数据集。
如果有路过的同行看到我的博客,欢迎你批评指正!