是否可以在sklearn中使用字符串元素作为输入?

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

我正在尝试使用sklearn分析我的数据,看看元素之间是否存在某种相关性。我的数据集是一个短的蛋白质基序,其序列非常多样化。我的输入如下:

  1p 2p 3p 4p 5p               genus
0  T  V  H  F  K  Enterobacteriaceae
1  T  V  M  F  M         Escherichia
2  E  I  H  V  K  Enterobacteriaceae
3  K  L  M  F  K  Enterobacteriaceae

位置1-5有20种不同的字母可能性。

我想使用类似的方法,因为它在sklearn Iris设置中显示,以检查不同位置和细菌属的氨基酸之间的依赖性。换句话说,我想看看字母序列是否属于特定类别,以及单个位置的字母是否与其他位置的字母有某种关联。

问题是,据我所知,只有数字可以用作sklearn的输入。我试着用数字代替字母:每个字母从1e-10到1e10,但我以后遇到数据可视化问题。我希望还有其他更有效的方式来使用这种输入数据。我会非常感谢一些提示。谢谢!

python import scikit-learn data-visualization bioinformatics
1个回答
3
投票

我建议使用LabelEncoder

from sklearn.preprocessing import LabelEncoder

df
  1p 2p 3p 4p 5p               genus
0  T  V  H  F  K  Enterobacteriaceae
1  T  V  M  F  M         Escherichia
2  E  I  H  V  K  Enterobacteriaceae
3  K  L  M  F  K  Enterobacteriaceae
le = LabelEncoder()
le.fit(np.unique(df.drop('genus', axis=1)))
X = np.array([le.transform(samp) for samp in df.drop('genus', axis=1).values])
X
array([[7, 8, 2, 1, 4],
       [7, 8, 6, 1, 6],
       [0, 3, 2, 8, 4],
       [4, 5, 6, 1, 4]])

从那里你应该能够检查相关性。

© www.soinside.com 2019 - 2024. All rights reserved.