Объясните пожалуйста как подставить результаты предсказания в тестовый датасет Титаник с 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)