R语言绘制热力图技巧分享

版权申诉
0 下载量 91 浏览量 更新于2024-12-01 收藏 1KB RAR 举报
资源摘要信息: "R语言绘制热力图" R语言是一种用于统计分析、图形表示和报告的编程语言和软件环境。R语言在数据科学和统计分析领域应用广泛,尤其是生物统计、金融分析以及大数据处理等方面。热力图(heatmap)是一种在二维数据表上以颜色变化表示数值大小的图形,能够直观地展示数据矩阵中的数值分布和变化规律,非常适合于高维数据的可视化分析。 在R语言中绘制热力图,通常会使用基础图形功能或第三方包(如`ggplot2`, `pheatmap`, `heatmap.2`等)来完成。热力图的绘制涉及到数据的标准化、颜色映射、聚类分析等多个步骤。以下是对在R语言中绘制热力图所需了解的关键知识点的详细说明: 1. 数据准备 在开始绘制热力图之前,需要准备好一个数据矩阵,该矩阵通常包含数值型数据,其中的行和列分别代表不同的变量或样本。数据矩阵可以是基因表达数据、环境监测数据、金融收益数据等,关键是要能够反映不同变量或样本之间的数值差异。 2. 数据标准化 数据标准化是热力图绘制的一个重要步骤。由于热力图的颜色映射依赖于数据的大小,因此需要对数据进行标准化处理,使得不同变量或样本之间的数据具有可比性。常见的标准化方法包括Z分数标准化(即数据减去均值后除以标准差)、最小-最大标准化(将数据线性缩放到[0,1]区间)等。 3. 颜色映射 颜色映射是热力图中表达数据大小差异的一种方式。通过为不同的数值范围指定不同的颜色,可以让观察者直观地看到数据矩阵中的高值和低值区域。R语言中可以使用`colorRampPalette`函数来创建颜色渐变,常见的颜色方案包括红色-蓝色渐变(红色代表高值,蓝色代表低值)、绿色-红色渐变(绿色代表低值,红色代表高值)等。 4. 聚类分析 聚类分析是热力图中经常使用的统计分析方法,它可以将具有相似特征的行或列聚集在一起,从而揭示数据的内在结构。R语言提供了多种聚类方法,如层次聚类(`hclust`函数)、K-means聚类等。聚类的结果通常通过树状图(dendrogram)的形式展示,以便观察数据之间的相似性。 5. 绘制热力图 使用R语言基础函数或第三方包可以绘制热力图。例如,使用`heatmap`函数可以快速生成基础热力图,而`pheatmap`包提供了更多的自定义选项和美观的输出结果。在绘制热力图时,可以指定行列的聚类方法、颜色映射方案、注释信息等,以达到理想的可视化效果。 6. 结果解释和报告 绘制好的热力图需要进行解释,分析图中颜色分布和聚类结果所代表的数据特征。此外,热力图常常与研究报告或展示材料一起使用,因此还需要掌握如何将热力图整合到文档中,并对热力图中的关键发现进行文字说明。 7. 应用实例 在实际应用中,R语言绘制热力图可以帮助科研人员分析基因表达数据、识别样本分组、发现变量之间的相关性等。例如,在生物信息学中,热力图可以用于展示不同肿瘤样本中基因表达的差异,帮助研究者发现可能的生物标志物或研究特定生物学过程。 综上所述,R语言绘制热力图是一门综合性的技术,涉及数据处理、统计分析、图形设计等多个方面。掌握了这一技能,不仅能够提高数据的可视化效果,还能对数据进行更深入的解读和分析。

import pandas as pd import warnings import sklearn.datasets import sklearn.linear_model import matplotlib import matplotlib.font_manager as fm import matplotlib.pyplot as plt import numpy as np import seaborn as sns data = pd.read_excel(r'C:\Users\Lenovo\Desktop\data.xlsx') print(data.info()) fig = plt.figure(figsize=(10, 8)) sns.heatmap(data.corr(), cmap="YlGnBu", annot=True) plt.title('相关性分析热力图') plt.rcParams['axes.unicode_minus'] = False plt.rcParams['font.sans-serif'] = 'SimHei' plt.show() y = data['y'] X = data.drop(['y'], axis=1) print('************************输出新的特征集数据***************************') print(X.head()) from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) def relu(X): output=np.maximum(0, X) return output def relu_back_propagation(derror_wrt_output,X): derror_wrt_dinputs = np.array(derror_wrt_output, copy=True) derror_wrt_dinputs[x <= 0] = 0 return derror_wrt_dinputs def activated(activation_choose,X): if activation_choose == 'relu': return relu(X) def activated_back_propagation(activation_choose, derror_wrt_output, output): if activation_choose == 'relu': return relu_back_propagation(derror_wrt_output, output) class NeuralNetwork: def __init__(self, layers_strcuture, print_cost = False): self.layers_strcuture = layers_strcuture self.layers_num = len(layers_strcuture) self.param_layers_num = self.layers_num - 1 self.learning_rate = 0.0618 self.num_iterations = 2000 self.x = None self.y = None self.w = dict() self.b = dict() self.costs = [] self.print_cost = print_cost self.init_w_and_b()

2023-06-07 上传

import pandas as pd from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import accuracy_score, confusion_matrix,classification_report, roc_curve, auc import seaborn as sns import matplotlib.pyplot as plt # 读取数据 data = pd.read_excel('E:/桌面/预测脆弱性/20230523/预测样本/预测样本.xlsx') # 分割训练集和验证集 train_data = data.sample(frac=0.8, random_state=1) test_data = data.drop(train_data.index) # 定义特征变量和目标变量 features = ['高程', '起伏度', '桥梁长', '道路长', '平均坡度', '平均地温', 'T小于0', '相态'] target = '交通风险' # 训练随机森林模型 rf = RandomForestClassifier(n_estimators=100, random_state=1) rf.fit(train_data[features], train_data[target]) # 在验证集上进行预测并计算精度、召回率和F1值等指标 pred = rf.predict(test_data[features]) accuracy = accuracy_score(test_data[target], pred) confusion_mat = confusion_matrix(test_data[target], pred) classification_rep = classification_report(test_data[target], pred) print('Accuracy:', accuracy) print('Confusion matrix:') print(confusion_mat) print('Classification report:') print(classification_rep) # 输出混淆矩阵图片 sns.heatmap(confusion_mat, annot=True, cmap="Blues") plt.show() # 计算并绘制ROC曲线和AUC值 fpr, tpr, thresholds = roc_curve(test_data[target], pred) roc_auc = auc(fpr, tpr) print('AUC:', roc_auc) plt.figure() lw = 2 plt.plot(fpr, tpr, color='darkorange', lw=lw, label='ROC curve (area = %0.2f)' % roc_auc) plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--') plt.xlim([0.0, 1.0]) plt.ylim([0.0, 1.05]) plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') plt.title('Receiver operating characteristic') plt.legend(loc="lower right") plt.show() # 读取新数据文件并预测结果 new_data = pd.read_excel('E:/桌面/预测脆弱性/20230523/预测样本/预测结果/交通风险预测096.xlsx') new_pred = rf.predict(new_data[features]) new_data['交通风险预测结果'] = new_pred new_data.to_excel('E:/桌面/预测脆弱性/20230523/预测样本/预测结果/交通风险预测096结果.xlsx', index=False)改进代码使用多元roc曲线

2023-05-30 上传