-1
votes

Quelle est la différence entre x_test, x_train, y_test, y_train dans sklearn?

J'apprends sklearn et je n'ai pas très bien compris la différence et pourquoi utiliser 4 sorties avec la fonction train_test_split.

Dans la documentation, j'ai trouvé quelques exemples mais ce n'était pas suffisant pour mettre fin à mes doutes.

Le code utilise-t-il le x_train pour prédire le x_test ou utilise le x_train pour prédire le y_test?

Quelle est la différence entre train et test? Dois-je utiliser le train pour prédire le test ou quelque chose de similaire?

Je suis très confus à ce sujet. Je laisserai ci-dessous l'exemple fourni dans la documentation.

>>> import numpy as np  
>>> from sklearn.model_selection import train_test_split  
>>> X, y = np.arange(10).reshape((5, 2)), range(5)  
>>> X
array([[0, 1], 
       [2, 3],  
       [4, 5],  
       [6, 7],  
       [8, 9]])  
>>> list(y)  
[0, 1, 2, 3, 4] 
>>> X_train, X_test, y_train, y_test = train_test_split(  
...     X, y, test_size=0.33, random_state=42)  
...  
>>> X_train  
array([[4, 5], 
       [0, 1],  
       [6, 7]])  
>>> y_train  
[2, 0, 3]  
>>> X_test  
array([[2, 3], 
       [8, 9]])  
>>> y_test  
[1, 4]  
>>> train_test_split(y, shuffle=False)  
[[0, 1, 2], [3, 4]]


1 commentaires

La différence entre le train et le test est quelque chose que vous devriez apprendre dans un cours d'apprentissage automatique de base ou dans un livre, c'est un concept que vous devez apprendre avant d'utiliser une bibliothèque ML


3 Réponses :


0
votes

Vous êtes censé entraîner votre classificateur / régresseur à l'aide de votre ensemble d'entraînement et le tester / l'évaluer à l'aide de votre ensemble de test.

Votre classificateur / régresseur utilise x_train pour prédire y_pred et utilise la différence entre y_pred et y_train (via une fonction de perte) pour apprendre. Ensuite, vous l'évaluez en calculant la perte entre les prédictions de x_test (qui pourrait également être nommé y_pred ) et y_test .


0 commentaires

5
votes

Vous trouverez ci-dessous un pandas.DataFrame factice par exemple:

logreg = LogisticRegression()
logreg.fit(X_train, y_train) #This is where the training is taking place
y_pred_logreg = logreg.predict(X_test) #Making predictions to test the model on test data
print('Logistic Regression Train accuracy %s' % logreg.score(X_train, y_train)) #Train accuracy
#Logistic Regression Train accuracy 0.8333333333333334
print('Logistic Regression Test accuracy %s' % accuracy_score(y_pred_logreg, y_test)) #Test accuracy
#Logistic Regression Test accuracy 0.5
print(confusion_matrix(y_test, y_pred_logreg)) #Confusion matrix
print(classification_report(y_test, y_pred_logreg)) #Classification Report

Ici, nous avons 3 colonnes, X1,X2,Y supposons que X1 & X2 sont vos variables indépendantes et 'Y' colonne 'Y' est votre variable dépendante.

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.4,random_state=42) 

X_train, X_test, y_train, y_test

Avec sklearn.model_selection.train_test_split vous créez 4 portions de données qui seront utilisées pour l'ajustement et la prédiction des valeurs.

X = df[['X1','X2']]
y = df['Y']

Maintenant

1). X_train - Cela inclut toutes vos variables indépendantes, celles-ci seront utilisées pour entraîner le modèle, également comme nous avons spécifié le test_size = 0.4 , cela signifie que 60% des observations de vos données complètes seront utilisées pour entraîner / ajuster le modèle et se reposer 40% sera utilisé pour tester le modèle.

2). X_test - Il s'agit de 40% partie restante des variables indépendantes des données qui ne seront pas utilisées dans la phase d'apprentissage et qui seront utilisées pour faire des prédictions pour tester la précision du modèle.

3). y_train - Il s'agit de votre variable dépendante qui doit être prédite par ce modèle, cela inclut les étiquettes de catégorie par rapport à vos variables indépendantes, nous devons spécifier notre variable dépendante lors de l'apprentissage / ajustement du modèle.

4). y_test - Ces données ont des étiquettes de catégorie pour vos données de test, ces étiquettes seront utilisées pour tester la précision entre les catégories réelles et prévues.

Maintenant, vous pouvez ajuster un modèle sur ces données, ajustons sklearn.linear_model.LogisticRegression

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report

df = pd.DataFrame({'X1':[100,120,140,200,230,400,500,540,600,625],
                       'X2':[14,15,22,24,23,31,33,35,40,40],
                       'Y':[0,0,0,0,1,1,1,1,1,1]})

Vous pouvez en savoir plus sur les métriques ici

En savoir plus sur la répartition des données ici

J'espère que cela t'aides:)


0 commentaires

0
votes

Considérez X comme 1000 points de données et Y comme étiquette de classe entière (à quelle classe appartient chaque point de données)

Par exemple:
X = [1,24 2,36 3,24 ... (1000 termes)
Y = [1,0,0,1 ..... (1000 termes)]

Nous divisons dans un rapport 600: 400

X_train => aura 600 points de données

Y_train => aura 400 points de données

X_test => aura des étiquettes de classe correspondant à 600 points de données

Y_test => aura des étiquettes de classe correspondant à 400 points de données


0 commentaires