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

时间:2019-04-09 22:28:37

标签: python python-3.x random-forest one-hot-encoding

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

我正在研究肽与靶标之间的相互作用:我使用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的外观。 This is to explain how the df and test are

0 个答案:

没有答案