这是我用来在生物学领域做出预测的脚本。
我正在研究肽与靶标之间的相互作用:我使用OneHotEncoding编码氨基酸的每个序列(它们是肽的嵌段,它们由字母表示),并且每个序列都有一个标记,被称为“ Ki”(表示与目标的亲和力有多好)。
我得到的错误总是相同的:
模型的特征数量必须与输入匹配。型号n_features为133,输入n_features为131。
当尝试预测数据集中不存在的新序列的“ Ki”时会发生这种情况。任何想法?预先谢谢你。
我认为这是OHE的问题,但似乎可行。我不知道问题是否出在输入部分。
加载DataFrame
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的外观。