В чем разница между x_test, x_train, y_test, y_train в sklearn? - PullRequest
0 голосов
/ 11 марта 2020

Я изучаю sklearn, и я не очень хорошо понял разницу и зачем использовать 4 выхода с функцией train_test_split.

В документации я нашел несколько примеров, но этого было недостаточно, чтобы закончить мои сомнения.

Использует ли код x_train для прогнозирования x_test или использует x_train для прогнозирования y_test?

В чем разница между поездом и тестом? Я использую поезд, чтобы предсказать тест или что-то подобное?

Я очень смущен этим. Ниже приведу пример, приведенный в документации.

>>> 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]]

Ответы [ 2 ]

1 голос
/ 11 марта 2020

Ниже приводится пустышка pandas.DataFrame, например:

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]})

Здесь у нас есть 3 столбца, X1,X2,Y предположим, X1 & X2 - ваши независимые переменные, а столбец 'Y' - ваша зависимая переменная.

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

С помощью sklearn.model_selection.train_test_split вы создаете 4 порции данных, которые будут использоваться для подгонки и прогнозирования значений.

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

Сейчас

1) , X_train - Это включает все ваши независимые переменные, они будут использоваться для обучения модели, также как мы указали test_size = 0.4, это означает, что 60% наблюдений из ваших полных данных будет использоваться для обучения / подгонки Модель и отдых 40% будут использоваться для тестирования модели.

2). X_test - это оставшаяся 40% часть независимых переменных из данных, которые не будут использоваться на этапе обучения и будут использоваться для составления прогнозов для проверки точности модели.

3). y_train - это ваша зависимая переменная, которую нужно прогнозировать с помощью этой модели, она включает в себя метки категорий относительно ваших независимых переменных, нам необходимо указать нашу зависимую переменную при обучении / подборе модели.

4). y_test - эти данные имеют метки категорий для ваших тестовых данных, эти метки будут использоваться для проверки точности между фактическими и прогнозируемыми категориями.

Теперь вы можете подогнать модель по этим данным, давайте подгоним sklearn.linear_model.LogisticRegression

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

Подробнее о показателях можно прочитать здесь

Подробнее о разбивке данных здесь

Надеюсь, это поможет :)

0 голосов
/ 11 марта 2020

Вы должны тренировать свой классификатор / регрессор, используя свой тренировочный набор, и тестировать / оценивать его, используя свой набор для тестирования.

Ваш классификатор / регрессор использует x_train для прогнозирования y_pred и использует разницу между y_pred и y_train (через функцию потерь) для обучения. Затем вы оцениваете его, вычисляя потери между предсказаниями x_test (который также может называться y_pred) и y_test.

...