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

2024-04-26 02:58:54 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我用来在生物学领域做预测的脚本。你知道吗

我在研究一个肽和一个靶点之间的相互作用:我用一个热编码编码每个氨基酸序列(它们是肽的块,用字母表示),每个序列都有一个标签,叫做“Ki”(识别与靶点的亲和力有多好)。你知道吗

我得到的错误总是一样的:

Number of features of the model must match the input. Model n_features is 133 and input n_features is 131.

当试图预测数据集中不存在的新序列的“Ki”时,就会发生这种情况。你知道吗?先谢谢你。你知道吗

我认为这是一个问题的OHE,但似乎工作。我不知道问题是否出在输入部分。你知道吗

加载数据帧

df = pd.read_csv('sequences.csv', sep=';', header=None) 
df = df.iloc[1:]

编码部分(仅序列)

from sklearn.preprocessing import LabelEncoder 
from sklearn.preprocessing import OneHotEncoder

encoder = LabelEncoder() cat = df.iloc[:, 1:-1] 
cat_encoded = cat.apply(encoder.fit_transform) 
encoder = OneHotEncoder(categories='auto', sparse=False) cat_1hot =
encoder.fit_transform(cat_encoded.values)

X = cat_1hot #shape (69, 133) 
y = df.values[:, -1:].astype(float) #are number like 0.071, 1.935... shape(69, )

列车试验分割、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

测试

results = np.round(rf_reg.predict(test_ohe), decimals= 3)

最后一部分不起作用:(

这就是df的样子。 This is to explain how the df and test are


Tags: ofcsvtest编码dfencodertransform序列