具有 char/string 个特征的二元分类

Binary Classification with char/string features

我目前正在研究蛋白质的二元分类问题。目标是弄清楚突变是否会将蛋白质功能从活性变为非活性。 突变可以发生在构成蛋白质的氨基酸链中的 4 个不同但固定的位置。所以我的特征向量由一个长度为 4 的字符代码组成,其中每个字符代表发生突变的 4 个位置之一的氨基酸。总共有 21 种可能的氨基酸。

我的问题是如何将这个由 4 个字符组成的字符串转换为用于我的分类的数字。 到目前为止,我尝试的是将每个 cahr 转换为代表该字符大写字母的 ASCII 十进制数(例如 A->65),但这只给了我平庸的结果。

我发现了一些关于一种热编码的信息,但我不知道如何使用它,因为除了突变中出现的总共 21 个氨基酸中的 4 个的信息外,它们出现的位置对我来说也很重要.

这是训练数据的样本:

my feature vector consists of a char code of length 4.. .. the position at which they occur is important in my case

将您的四字符字符串扩展为四个单字符字符串。这样每个站点将有一个功能(我们称它们为 "S1"、"S2"、"S3" 和 "S4")。

这样每个蛋白质位点都将独立于其他位点。

how would I turn this string of 4 chars into something numerical for my classification.

只需对这些单字符特征中的每一个应用单热编码。假设您在 Scikit-Learn 环境中工作,您可以使用 sklearn_pandas.DataFrameMappersklearn.compose.ColumnTransformer 来执行此映射:

mapper = DataFrameMapper([
  (["S1", "S2", "S3", "S4"], OneHotEncoder())
])
classifier = LogisticRegression()
pipeline = Pipeline([
  ("mapper", mapper),
  ("classifier", classifier)
])
pipeline.fit(X, y)