Java 如何解决这一热编码错误;所有输入数组必须具有相同的形状;

Java 如何解决这一热编码错误;所有输入数组必须具有相同的形状;,java,c#,php,Java,C#,Php,我得到的错误如下 所有输入数组必须具有相同的形状您不是条带线。正常的DNA序列由A、G、C和T组成。您的输入如下: CCGAGGGCTATGGTTTGGAAGTTAGAACCCTGGGGCTTCTCGCGGACACC\r GAGTTTATATGGCGCGAGCCTAGTGGTTTTTGTACTTGTTTGTCGCGTCG\r ... AATGTCGACCGAACTCCGCACTGCTGGCCCGGGCCTATATCGAGAGTGAC 因此,对于除最后一行之外的行,编码器生成一个形状为(50,5

我得到的错误如下


所有输入数组必须具有相同的形状

您不是条带线。正常的DNA序列由A、G、C和T组成。您的输入如下:

CCGAGGGCTATGGTTTGGAAGTTAGAACCCTGGGGCTTCTCGCGGACACC\r
GAGTTTATATGGCGCGAGCCTAGTGGTTTTTGTACTTGTTTGTCGCGTCG\r
...
AATGTCGACCGAACTCCGCACTGCTGGCCCGGGCCTATATCGAGAGTGAC
因此,对于除最后一行之外的行,编码器生成一个形状为(50,5)的数组,因为该行中有5个不同的字符。对于最后一行,它生成一个形状为(50,4)的数组,然后得到
ValueError:所有输入数组必须具有相同的形状

要解决这个问题,可以在代码中的某个位置剥离序列。例如,这将起作用:

...

for sequence in sequences:
  integer_encoded = integer_encoder.fit_transform(list(sequence.strip()))
...
编辑: 此外,对于不使用A、G、C和T的全部的行,您可以跳过该行:

...
for sequence in sequences:
  sequence_list = list(sequence.strip())
  if len(set(sequence_list)) != 4:
    continue
  integer_encoded = integer_encoder.fit_transform(sequence_list)
...

或者,您可以找到另一种方法来制作所有
one_hot\u编码的
数组的形状(50,4)。

问题主要是因为
input\u features
列表中的一个或多个序列与其他序列的大小不同。当你将它堆叠到一个numpy数组时,它会抛出一个错误谢谢…,哦,我的弟弟错误地编辑了这个…如何恢复更改??据我所知,你不能撤消编辑,但你可以通过用相同的细节更新同一个问题来编辑你的问题。您可以通过单击问题下方的来查看编辑历史记录,也许您可以撤消自己的更改。此外,如果对您有效,请接受答案。此链接也不起作用…@Alperen”“该链接中有一行
atattcaattctatatttatttaaaattatattatatactac
,其中没有G。所以,编码器返回一个形状为(50,3)的数组。您如何找到它@阿尔佩伦