二进制分类与charstring特征

问题描述 投票:0回答:1

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

我的问题是,我如何将这串4个chars转化为我的分类所需的数值.到目前为止,我尝试的是将每个char转化为代表该char的大写字母的ASCII十进制(如A->65),但这只给了我平庸的结果。

我发现了一些关于一个热编码的东西,但我不知道如何使用它,因为除了关于总共21个氨基酸中的4个发生在突变中的信息外,它们发生的位置在我的案例中也很重要。

这是一个训练数据的样本。

enter image description here

machine-learning classification feature-extraction feature-selection feature-engineering
1个回答
1
投票

我的特征向量由一个长度为4的char码组成......在我的案例中,它们出现的位置很重要。

将你的四字符字符串扩展为四个单字符字符串。这样每个位点将有一个特征(让我们称它们为 "S1"、"S2"、"S3 "和 "S4")。

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

我如何将这一串4个chars变成数字的东西来进行分类。

只需将一热编码应用到每一个单字符特征中。假设你是在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)
© www.soinside.com 2019 - 2024. All rights reserved.