【发布时间】:2020-07-21 10:04:00
【问题描述】:
我有兴趣使用 KNN 回归模型预测我的蛋白质的稳定性,但是我想使用作为我的蛋白质嵌入计算的 levenshtein 距离而不是序列本身,作为我的模型的输入变量。我希望根据每个序列的 levenshtein 距离,使用 k 个最近邻的训练误差来衡量每个实例的不一致性。
如果可能的话,我不希望对它们进行热编码。
我的输入表如下所示:
new_host sequence expression
FALSE AQVPYGVS- 0.039267878
FALSE ASVPYGVSI 0.039267878
FALSE STNL-GSGR 0.261456561
FALSE NLYGSGL-R 0.265188519
FALSE SLGP-NLYG 0.419680588
FALSE A-SLGTTNG 0.145710993
对于我的输出,我不确定我是否真的可以得到每个特定的距离,以及这是否会用于我的 KNN 回归模型的输入。
我计算 levenshtein 距离的函数:
def levenshtein(seq1, seq2):
size_x = len(seq1) + 1
size_y = len(seq2) + 1
matrix = np.zeros ((size_x, size_y))
for x in range(size_x):
matrix [x, 0] = x
for y in range(size_y):
matrix [0, y] = y
for x in range(1, size_x):
for y in range(1, size_y):
if seq1[x-1] == seq2[y-1]:
matrix [x,y] = min(
matrix[x-1, y] + 1,
matrix[x-1, y-1],
matrix[x, y-1] + 1
)
else:
matrix [x,y] = min(
matrix[x-1,y] + 1,
matrix[x-1,y-1] + 1,
matrix[x,y-1] + 1
)
print (matrix)
return (matrix[size_x - 1, size_y - 1])
我的函数来计算每个实例的不合格:
def nonconformity(self, z, Z):
"""Return k-Nearest Neighbours (kNN) nonconformity measure.
Parameters
----------
z : array-like, shape (n_features,)
Test vector, where n_features is the number of features.
Z : array-like, shape (n_samples, n_features)
Training vectors, where n_samples is the number of samples,
n_features is the number of features.
Returns
-------
r : float
kNN nonconformity measure on z with respect to Z.
"""
# Take the k smallest distances between z rows and zn and sum them.
dist = cdist(Z, [z])[:,0]
r = np.sort(dist)[:self.k].sum()
return r
期望的输出(不确定这是否可能)
new_host sequence expression Levenshtein Distance
FALSE AQVPYGVS- 0.039267878 0
FALSE ASVPYGVSI 0.039267878 0.1
FALSE STNL-GSGR 0.261456561 0.2
FALSE NLYGSGL-R 0.265188519 0.2
FALSE SLGP-NLYG 0.419680588 0.4
FALSE A-SLGTTNG 0.145710993 0.5
【问题讨论】:
-
@Pierre 正如我从上一个论坛中删除的那样,我认为这不会是一个问题,因为我认为它们是完全不同的两个论坛。
标签: python machine-learning regression bioinformatics levenshtein-distance