Объясните пожалуйста как подставить результаты предсказания в тестовый датасет Титаник с kaggle

Это моя первая задачка, поэтому заранее извиняюсь если такой вопрос уже был, не смог найти ответ.

Вообщем сначала визуализировал данные тренеровочного датасета, затем соединил gender_submission и test (ток если честно сам не совсем понял зачем, просто сам себе это аргументировал тем, что зачем то же этот gender_submission нам дан в задании), потом предобрботал test(заполнил пустые ячейки Age медианным значением по возрасту, пустые ячейки Embarked значением моды, дропнул ненужные колонки, преобразовал колонки с категориальными признаками), объявил значения X_train, y. Затем обучил модель методом Random Forest Classifier, сделал предсказание. попытался вывести результат предсказания на экран print("Accuracy:", metrics.accuracy_score(y, prediction)), и сначала это сработало но потом стало выдавать ошибку

ValueError: Found input variables with inconsistent 
numbers of samples: [1309, 418]

При попытке создать итоговый датафрейм получил ошибку

IndexError: only integers, slices (`:`), ellipsis (`...`), 
numpy.newaxis (`None`) and integer or boolean arrays are valid
indices

и

ValueError: array length 891 does not match index length 418

Я правильно понимаю что мне не удается создать этот датафрейм потому что то, что у меня получилось это не массив?
а написание кода нормальное?
просто у меня вообще нет такого опыта, это мое первое задание.

import pandas as pd
import numpy as np
from sklearn import tree
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
import warnings
import seaborn as sns
warnings.filterwarnings('ignore')
import numpy as np
from sklearn.ensemble import RandomForestClassifier

data_train = pd.read_csv('https://raw.githubusercontent.com/Roy331989/Kaggle/main/train.csv')` 
data_test = pd.read_csv('https://raw.githubusercontent.com/Roy331989/Kaggle/main/test.csv')
data_gender_submission = pd.read_csv('https://raw.githubusercontent.com/Roy331989/Kaggle/main/gender_submission.csv')

sns.heatmap(data_train.isnull(), cbar = False).set_title("Missing values heatmap")
sns.catplot(data = data_train,y='Survived',x='Sex',col='Pclass',
            kind='bar', saturation=0.5)
sns.catplot(data = data_train,hue = 'Survived', x = 'Sex',
            kind='count', saturation=0.5)
sns.catplot(data = data_train,hue = 'Survived', x = 'Pclass',
            kind='count', saturation=0.5)

data_test = data_test.merge(data_gender_submission,on='PassengerId', how = 'right')

data_train.isnull().sum()
data_train.isna().sum()
median_age = data_train['Age'].median()
data_train['Age'].fillna(median_age, inplace = True)
data_train.Embarked.fillna(data_train.Embarked.mode()[0], inplace = True)

data_test.isnull().sum()
data_test.isna().sum()
median_age = data_test['Age'].median()
data_test['Age'].fillna(median_age, inplace = True)
data_test.Embarked.fillna(data_test.Embarked.mode()[0], inplace = True)

data_test.isna().sum()
data_test.isnull().sum()
data_train.isnull().sum()
data_train.isna().sum()

X_train = data_train.drop(['PassengerId', 'Fare', 'Survived', 'Name', 'Ticket', 'Cabin'], axis=1)
y = data_train.Survived
X_test = data_test.drop(['PassengerId', 'Fare', 'Survived', 'Name', 'Ticket', 'Cabin'], axis=1)

X_train = pd.get_dummies(X_train, columns=['Embarked', 'Sex'])
X_train = X_train.astype({'Age':'int'},errors='ignore')
X_test = pd.get_dummies(X_test, columns=['Embarked', 'Sex'])
X_test = X_test.astype({'Age':'int'},errors='ignore')

from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier(n_estimators=100, max_depth=5, random_state=1)
model.fit(X_train, y)  # обучаем модель
prediction = model.predict(X_test)  # делаем предсказание
from sklearn import metrics
print("Accuracy:", metrics.accuracy_score(y, prediction))

output = pd.DataFrame({'PassengerId':data_test.PassengerId, 'Survived':prediction})
output.to_csv('my_submission.csv', index=False)

Ответы (0 шт):