机器学习之如何绘制热力图

热力图是一种可视化工具,用于显示数据集中各个项目之间的相对频繁程度或热度。它可以帮助用户更好地理解数据集中的主要趋势和模式。热力图通常以不同的颜色或强度表示不同的数据项,并且可以在不同的维度上进行比较。

在热力图中,每个数据点或者数据项都有一个对应的频率或者热度值。可以使用不同的颜色或强度来区分不同的数据项,并通过热力图的形式来显示数据集中各个项目之间的相对频繁程度或热度。热力图经常用于数据可视化和探索性数据分析中,以帮助人们更好地理解数据并发现其中的规律和趋势。

以鸢尾花数据集为例

先对数据集进行预处理,然后训练逻辑回归模型,最后打印一下预测值。

import pandas as pd
from sklearn.datasets import load_iris
dataset=load_iris()
features = pd.DataFrame(dataset.data,columns=['sepal length (cm)','sepal width (cm)','petal length (cm)','petal width (cm)'])
targets = pd.DataFrame(dataset.target,columns=['target'])
#导入数据拆分方法
from sklearn.model_selection import train_test_split
feature_train,feature_test,target_train,target_test = \
    train_test_split(features,targets,test_size=0.2,random_state=999)#拆分数据集,选20%数据作为测试用,随机系数999
#先打乱,在拆分,覆盖更多情况
from sklearn.linear_model import LogisticRegression
#导入逻辑回归模型
model = LogisticRegression()
#fit(x,y)  x:特征  y:标签
model.fit(feature_train,target_train['target'])
target_predicted = model.predict(feature_test)
print(target_predicted)  #预测结果
print(target_test['target']) #实际结果

绘制热力图

from sklearn.metrics import accuracy_score
from sklearn.metrics import confusion_matrix
import matplotlib.pyplot as plt
import seaborn as sns

#计算准确率
accuracy = accuracy_score(target_test, target_predicted)
print("精确度:", accuracy)
#计算混淆矩阵
conMat = confusion_matrix(target_test, target_predicted)
print("混淆矩阵:", conMat)

# 利用热力图对于结果进行可视化
plt.figure(figsize=(8, 6))
sns.heatmap(conMat, annot=True, cmap='Blues')
plt.xlabel('Predicted labels')
plt.ylabel('True labels')
plt.show()

运行后结果如下:

 

Python中,我们可以使用matplotlib库来绘制数据集的热力,例如鸢尾花(Iris)数据集。这个数据集通常包含花瓣长度、花瓣宽度等特征。首先,我们需要加载数据并计算相关度矩阵,然后才能创建热力。对于带层次聚类的热力,我们将需要使用scikit-learn库进行聚类。 这里是一个简单的示例,展示如何绘制基础的热力: ```python import seaborn as sns from sklearn.datasets import load_iris import numpy as np # 加载鸢尾花数据集 iris = load_iris() X = iris.data y = iris.target # 计算皮尔逊相关系数作为相似度矩阵 corr_matrix = np.corrcoef(X.T) # 绘制热力 sns.heatmap(corr_matrix, annot=True, cmap='coolwarm') plt.title('基础鸢尾花数据集热力') plt.show() ``` 至于带层次聚类的热力,我们先对数据进行聚类,然后再创建热力。假设我们使用了ward链接法(Ward’s method): ```python from scipy.cluster.hierarchy import ward, dendrogram import matplotlib.pyplot as plt # 进行层次聚类 Z = ward(np.array(corr_matrix)) dendrogram(Z, labels=iris.feature_names) plt.title('层次聚类后的鸢尾花数据集热力') plt.xlabel('特征') plt.ylabel('样本') plt.show() # 使用聚类结果更新热力 clustered_corr = corr_matrix[Z[-1].argsort()] sns.heatmap(clustered_corr, annot=True, cmap='coolwarm', yticklabels=False) plt.title('带层次聚类的鸢尾花数据集热力') plt.show() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发光发热小流星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值