Это сценарий, который я использую для прогнозирования в области биологии.
Я изучаю взаимодействия между пептидом и мишенью: я использовал OneHotEncoding для кодирования каждой последовательности аминокислот (они являются блоками пептида, и они представлены буквами), и у меня есть метка длякаждая последовательность, которая называется 'Ki' (определяет, насколько хорошо сродство к цели).
Ошибка, которую я получаю, всегда одинакова:
Количество признаковМодель должна соответствовать входу.Модель n_features равна 133, а входное значение n_features равно 131.
Это происходит при попытке предсказать 'Ki' новых последовательностей, которых нет в наборе данных.Любая идея?Заранее спасибо.
Я думал, что это проблема ОХЭ, но, похоже, работает.Я не знаю, если проблема во входной части.
Загрузить 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, )
Разделение теста поезда, РЧ-регрессия, оценка ... Загрузка новых последовательностей
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.