Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Machine learning 具有字符/字符串特征的二进制分类_Machine Learning_Classification_Feature Extraction_Feature Selection_Feature Engineering - Fatal编程技术网

Machine learning 具有字符/字符串特征的二进制分类

Machine learning 具有字符/字符串特征的二进制分类,machine-learning,classification,feature-extraction,feature-selection,feature-engineering,Machine Learning,Classification,Feature Extraction,Feature Selection,Feature Engineering,我目前正在研究蛋白质的二元分类问题。目的是弄清楚突变是否会将蛋白质功能从活性变为非活性。 突变可能发生在构成蛋白质的氨基酸链中的4个不同但固定的位置。因此,我的特征向量由一个长度为4的字符代码组成,其中每个字符代表发生突变的4个位置之一的氨基酸。总共有21种可能的氨基酸 我的问题是如何将这个由4个字符组成的字符串转换成数字来进行分类。 到目前为止,我尝试将每个cahr转换为ASCII十进制,表示该字符的大写字母(例如A->65),但这只能得到一般的结果 我发现了一个热编码,但我不知道如何使用它,

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

我的问题是如何将这个由4个字符组成的字符串转换成数字来进行分类。 到目前为止,我尝试将每个cahr转换为ASCII十进制,表示该字符的大写字母(例如A->65),但这只能得到一般的结果

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

这是培训数据的一个示例:

我的特征向量由长度为4的字符代码组成。。 .. 在我的案例中,它们发生的位置很重要

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

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

我如何将这个由4个字符组成的字符串转换成数字来进行分类呢

只需将一个热编码应用于这些单字符特征中的每一个。假设您在Scikit学习环境中工作,您可以使用
sklearn\u pandas.DataFrameMapper
sklearn.compose.ColumnTransformer
执行此映射:

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

谢谢,这在不调整超参数的情况下已经非常好了。如果您想调查站点之间的交互,那么您可以将原始的四个字符串拆分为多个两个字符串(例如“S12”、“S13”、“S14”、“S23”等)。或者,一旦您对Scikit Learn感到更满意,您可以使用
多项式特征
转换器自动执行此过程。
多项式特征
转换器能否处理非数字数据,例如我的情况下的字符?如果不是,我需要将一个热编码的特征传递给转换器,那么使用多项式特征不是有点毫无意义吗?因为所有的特征值都是0或1,因为一个热编码,所以所有的高阶多项式都是0或1。在可以应用之前,您需要对字符串进行一个热编码
多项式特征
。但是,如果在“稀疏结果模式”中执行一次热编码,那么大量的零不应该成为(内存)问题。也许您可以尝试在其中的某个地方插入一个特性选择器(仅测试重要突变之间的交互)。