1.简介
上次我们简单说了seaborn.heatmap函数,这一次我们将介绍在机器学习中的显示不同特征之间相关性的热力图和Pyheatmap.heatmap用法。在机器学习中我们在筛选有用特征的时候,常常计算一下不同特征的相关性,便于我们去掉相关性强的特征,我们此次用的数据集为sklearn中的breast_cancer数据集。
2.特征之间相关性的热力图
(1)首先我们导入数据和作图的包
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt # 导入作图包
import seaborn as sns # 导入作图包
from sklearn.datasets import load_breast_cancer # 从sklearn导入数据
(2)查看数据
cancer = load_breast_cancer()
print(cancer.data) #输出数据的内容
print(cancer.target) #输出数据的标签
(3)查看数据的列名
col_names = list(cancer.feature_names) #查看数据的列名
print(col_names)
col_names.append('target')
df = pd.DataFrame(np.c_[cancer.data, cancer.target], columns=col_names) #合并数据和标签并存储成DataFrame在df中
df.head() #展示数据的前五条
(4)查看数据的基本统计学信息
df.describe()
(5)查看数据每列信息
df.info()
(6)生成不同特征之间的相关热力图,可以根据颜色筛选出相关性小的特征组合
plt.figure(figsize=(20,10))
sns.heatmap(df.corr(), annot=True) #根据特征相关性绘制热力图
plt.show()
其中看一下df.corr()方法:
DataFrame.corr(method='pearson', min_periods=1)
参数说明:
method:可选值为{‘pearson’, ‘kendall’, ‘spearman’}
df.corr() # 默认是pearson相关系数
df.corr('kendall') # Kendall Tau相关系数
df.corr('spearman') # spearman秩相关
关于相关系数的数学计算公式这里就不展开写了,以后会慢慢补上。
3. Pyheatmap.heatmap
官方给了两种说明,一是点击图(使用鼠标点点点,然后生成相应的点击图),二是热力图,根据给定x,y数据生成热力图,生成效果如下:
(点击图)
(热力图)
使用方法如下:
(1)安装-这里通过Pip
pip install pyheatmap
(2) 官方代码例子
import urllib
from pyheatmap.heatmap import HeatMap
def main():
# download test data
url = "https://raw.github.com/oldj/pyheatmap/master/examples/test_data.txt"
sdata = urllib.urlopen(url).read().split("\n")
data = []
for ln in sdata:
a = ln.split(",")
if len(a) != 2:
continue
a = [int(i) for i in a]
data.append(a)
# start painting
hm = HeatMap(data)
hm.clickmap(save_as="hit.png")
hm.heatmap(save_as="heat.png")
if __name__ == "__main__":
main()
(3)其他例子
from pyheatmap.heatmap import HeatMap
import numpy as np
x = [10,20,30,50,40,30,70,80,50,30,45,50]
y = [30,40,50,30,40,80,50,34,45,95,26,33]
data = []
for i in range(0,11):
tmp = [int(x[i]), int(y[i]),1]
data.append(tmp)
heat = HeatMap(data)
heat.clickmap(save_as="1.png") #点击图
heat.heatmap(save_as="2.png") #热图
4.总结
这次我们介绍了在机器学习中的显示不同特征之间相关性的热力图和Pyheatmap.heatmap用法,下次我将介绍场景热力图的使用。
5.参考
https://blog.csdn.net/walking_visitor/article/details/85128461
https://blog.csdn.net/sunmingyang1987/article/details/105459104
https://www.kaggle.com/prashant111/lightgbm-classifier-in-python
https://github.com/oldj/pyheatmap
https://blog.csdn.net/weixin_43289135/article/details/104651047