模型的特征数量必须与输入匹配。Python错误

模型的特征数量必须与输入匹配。Python错误,python,python-3.x,random-forest,one-hot-encoding,Python,Python 3.x,Random Forest,One Hot Encoding,这是我用来在生物学领域做预测的脚本 我正在研究一个肽和一个靶点之间的相互作用:我使用OneHotEncoding对每个氨基酸序列进行编码(它们是肽的块,用字母表示),并且我对每个序列都有一个称为“Ki”的标签(识别与靶点的亲和力有多好) 我得到的错误总是相同的: 模型的特征数量必须与输入匹配。模型n_特征为133,输入n_特征为131 当用户试图预测数据集中不存在的新序列的“Ki”时,就会发生这种情况。有什么想法吗?先谢谢你 我认为这是OHE的问题,但似乎有效。我不知道问题是否出在输入部分 加载

这是我用来在生物学领域做预测的脚本

我正在研究一个肽和一个靶点之间的相互作用:我使用OneHotEncoding对每个氨基酸序列进行编码(它们是肽的块,用字母表示),并且我对每个序列都有一个称为“Ki”的标签(识别与靶点的亲和力有多好)

我得到的错误总是相同的:

模型的特征数量必须与输入匹配。模型n_特征为133,输入n_特征为131

当用户试图预测数据集中不存在的新序列的“Ki”时,就会发生这种情况。有什么想法吗?先谢谢你

我认为这是OHE的问题,但似乎有效。我不知道问题是否出在输入部分

加载数据帧

df = pd.read_csv('sequences.csv', sep=';', header=None) 
df = df.iloc[1:]
编码部分(仅序列)

列车测试拆分、RF回归、评估。。。加载新序列

test = pd.read_csv('test.csv', sep=';', header=None) 
test_ = test.iloc[1:, :]
encoder = LabelEncoder() 
cat = test_ cat_encoded = cat.apply(encoder.fit_transform)

encoder = OneHotEncoder(categories='auto', sparse=False) 
cat_1hot = encoder.fit_transform(cat_encoded.values) test_ohe = cat_1hot #shape (X, 131) X = number of sequences I choose
编码新序列

test = pd.read_csv('test.csv', sep=';', header=None) 
test_ = test.iloc[1:, :]
encoder = LabelEncoder() 
cat = test_ cat_encoded = cat.apply(encoder.fit_transform)

encoder = OneHotEncoder(categories='auto', sparse=False) 
cat_1hot = encoder.fit_transform(cat_encoded.values) test_ohe = cat_1hot #shape (X, 131) X = number of sequences I choose
测试

results = np.round(rf_reg.predict(test_ohe), decimals= 3)
最后一部分不起作用:(

这就是df的外观。

您是否与和中的其他类似问题进行了比较?此问答似乎最有帮助,也最相关。Hi davedwards。似乎不是我的情况,仍然不起作用:(使用重塑功能,我将单个向量特征与更多标签进行比较,这在我的情况下是错误的。不知道我是否清楚。嗨,Nicola,错误消息可能表明,在一次热编码后,您是否有不同数量的训练和测试特征?不,相同数量的特征。无论如何,在这种情况下,我使用自定义OHE解决了问题。但在未来我想使用Sci工具包…你还有其他想法吗?非常感谢你抽出时间。