【发布时间】:2021-05-21 17:57:25
【问题描述】:
对于特定的基因评分系统,我想建立一个基本图,以便输入的新样本值根据多个基因测量值立即被吸引到图中的健康或不健康组。假设我们有 5 个人,每个人测量 6 个基因。
Import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
df = pd.DataFrame(np.array([[A, 1, 1.2, 1.4, 2, 2], [B, 1.5, 1, 1.4, 1.3, 1.2], [C, 1, 1.2, 1.6, 2, 1.4], [D, 1.7, 1.5, 1.5, 1.5, 1.4], [E, 1.6, 1.9, 1.8, 3, 2.5], [F, 2, 2.2, 1.9, 2, 2]]), columns=['Gene', 'Healthy 1', 'Healthy 2', 'Healthy 3', 'Unhealthy 1', 'Unhealthy 2'])
这将创建下表:
| Gene | Healthy 1 | Healthy 2 | Healthy 3 | Unhealthy 1 | Unhealthy 2 |
|---|---|---|---|---|---|
| A | 1.0 | 1.2 | 1.4 | 2.0 | 2.0 |
| B | 1.5 | 1.0 | 1.4 | 1.3 | 1.2 |
| C | 1.0 | 1.2 | 1.6 | 2.0 | 1.4 |
| D | 1.7 | 1.5 | 1.5 | 1.5 | 1.4 |
| E | 1.6 | 1.9 | 1.8 | 3.0 | 2.5 |
| F | 2.0 | 2.2 | 1.9 | 2.0 | 2.0 |
然后将每个样本的 X 和 Y 坐标在乘以它的参数/权重 * 测量值后基于将基因的贡献加在一起来计算。前 4 个基因对 Y 值有贡献,而基因 5 和 6 决定 X 值。 wA - wF 是与其基因 A-F 对应的参数/权重。
wA = .15
wB = .25
wC = .35
wD = .45
wE = .50
wF = .60
n=0
for n in range (5):
y1 = df.iat[0,n]
y2 = df.iat[1,n]
y3 = df.iat[2,n]
y4 = df.iat[3,n]
TrueY = wA*y1+wB*y2+wC*y3+wD*y4
x1 = df.iat[4,n]
x2 = df.iat[5,n]
TrueX = (wE*x1+wF*x2)
result = (TrueX, TrueY)
n += 1
label = f"({TrueX},{TrueY})"
plt.scatter(TrueX, TrueY, alpha=0.5)
plt.annotate(label, (TrueX,TrueY), textcoords="offset points", xytext=(0,10), ha='center')
我们因此计算所有坐标并绘制它们
我现在想做的是找出如何优化 wA-wF 参数/权重,以便将健康样本推向图的原点,比如说 (0.0),而将不健康样本推向图的原点朝着一个合理的相反点,比方说(1,1)。我研究过 K-means/SVM,但作为新手编码器/生物化学家,我完全不知所措,希望能提供任何帮助。
【问题讨论】:
标签: python machine-learning optimization plot mathematical-optimization