Это потому, что fit_transform не возвращает преобразователь соответствия, он возвращает преобразованные данные.
trained_tf_idf_transformer = tfidf_vectorizer.fit_transform(tf_train_data)
attack_data['tf_idf_payload'] = trained_tf_idf_transformer.transform(attack_data['payload'])
неверно и должно быть:
tf_train_data_transformed = tfidf_vectorizer.fit_transform(tf_train_data)
attack_data['tf_idf_payload'] = tfidf_vectorizer.transform(attack_data['payload'])
Обратите внимание, что вы можете использовать тот же объект tfidf_vectorizer для преобразования других ваших данных (они были обновлены, когда вы обучили их).
Я не могу использовать ваш пример, так как он не воспроизводим, и мне немного лень разбираться во всех шагах, но посмотрите на этот:
import pandas as pd
from sklearn.preprocessing import StandardScaler
df_train = pd.DataFrame({'data': [1,2,3]})
df_validation = pd.DataFrame({'data': [1,2,3]})
scaler = StandardScaler()
scaler_trained = scaler.fit_transform(df)
df_validation_transformed = scaler_trained.transform(df_validation)
вызывает ту же ошибку.
Этот код работает:
import pandas as pd
from sklearn.preprocessing import StandardScaler
df_train = pd.DataFrame({'data': [1,2,3]})
df_validation = pd.DataFrame({'data': [1,2,3]})
scaler = StandardScaler()
df_train_transformed = scaler.fit_transform(df)
df_validation_transformed = scaler.transform(df_validation)
Вам просто нужно следовать той же логике.