print(X_train.columns)
это производит:
Index(['StudentId', 'Age', 'Gender_FeMale', 'Gender_Male'], dtype='object')
print(sample_testDF_encoded.columns)
это производит:
Index(['StudentId', 'Age', 'Gender_FeMale'], dtype='object')
Итак, проблема в том, что ваш горячий кодировщик создает два столбца для пола в основных данных, где значение полаэто либо Male, либо FeMale (он кодирует Gender_FeMale в 1, если ваши данные содержат самку, он кодирует Gender_Male в 1, если ваши данные содержат самца) Но ваш sample_testDF содержит только одно значение, которое является FeMale.Таким образом, один горячий кодер не создает 2 столбца на этот раз для пола.Итак, это совпадение мисс
Итак, ваши тестовые данные должны выглядеть следующим образом:
sample_testdata=[[4001, 10,1, 0]]
# Create the pandas DataFrame
sample_testDF= pd.DataFrame(sample_testdata, columns = ['StudentId', 'Age','Gender_FeMale', 'Gender_Male'])
Изменение этих буксировочных линий устранит ошибку и даст вам результат прогноза
Как выВ приведенном в комментарии примере данные вводятся пользователем, поэтому вы должны преобразовать их, как я ответил в этом комментарии.Вы можете создать преобразованный список данных, чем создать Dataframe с этим преобразованным списком:
sample_testdata= [[4001, 10,'FeMale']]
convertedDataList = []
for data in sample_testdata:
if data[2] == 'FeMale':
data[2] = 1
data.append(0)
else:
data[2] = 0
data.append(1)
convertedDataList.append(data)
# Create the pandas DataFrame using convertedDataList
sample_testDF= pd.DataFrame(convertedDataList, columns = ['StudentId', 'Age','Gender_FeMale', 'Gender_Male'])