用pandas计算有样本编号的八行数据两两之间的余弦相似度,且利用颜色饱和度可视化样本间的余弦相似度
时间: 2024-02-20 16:00:09 浏览: 23
可以按照以下步骤进行操作:
1. 首先导入 pandas、numpy 和 seaborn 库:
```python
import pandas as pd
import numpy as np
import seaborn as sns
```
2. 创建一个包含样本编号和数据的 DataFrame:
```python
data = pd.DataFrame({'SampleID': ['S1', 'S2', 'S3', 'S4', 'S5', 'S6', 'S7', 'S8'],
'Data1': [1, 2, 3, 4, 5, 6, 7, 8],
'Data2': [8, 7, 6, 5, 4, 3, 2, 1]})
```
3. 将 DataFrame 中的数据转换为 numpy 数组并计算余弦相似度:
```python
from sklearn.metrics.pairwise import cosine_similarity
from itertools import combinations
sample_ids = data['SampleID']
data_values = data.drop('SampleID', axis=1).values
combs = combinations(range(len(sample_ids)), 2)
cos_sim = [cosine_similarity([data_values[i]], [data_values[j]])[0][0] for i, j in combs]
cos_sim_df = pd.DataFrame({'SampleID1': [sample_ids[i] for i, _ in combs],
'SampleID2': [sample_ids[j] for _, j in combs],
'CosineSimilarity': cos_sim})
```
4. 使用 seaborn 库绘制颜色饱和度可视化图:
```python
cos_sim_matrix = cos_sim_df.pivot(index='SampleID1', columns='SampleID2', values='CosineSimilarity')
sns.set(style='white')
cmap = sns.diverging_palette(220, 10, as_cmap=True)
sns.heatmap(cos_sim_matrix, annot=True, cmap=cmap, vmin=-1, vmax=1, center=0, square=True)
```
这样可以绘制出样本间余弦相似度的颜色饱和度可视化图。