【问题标题】:X argument in train_test_split is whole data without target class or it also contain target class?train_test_split 中的 X 参数是没有目标类的整个数据还是包含目标类?
【发布时间】:2023-04-10 09:43:01
【问题描述】:
X_train, X_test, y_train, y_test = train_test_split(X,y, random_state=42)

(1) y 参数是目标类。 X是什么? X 是具有目标类属性或没有目标类属性的整个数据集。

(2)如果我们有单独的训练和测试数据文件(train.csv、test.csv),我们如何获得 X_train、X_test、y_train、y_test。

【问题讨论】:

  • 如果您已经完成了训练/测试拆分,为什么还要尝试使用train_test_split? (这是你的问题2)
  • 我需要两种方法用于 2 个不同的目的,一个数据集我没有拆分数据,另一个数据集有拆分数据。
  • 这可能应该添加到问题中。只需分别从文件中读取数据

标签: python machine-learning


【解决方案1】:

(1) y 参数是目标类。 X是什么? X 是整个数据集 目标类属性也可以或没有目标类属性。

X 是您的机器学习问题中的特征,因此它没有目标值 y。

使用 cvs.files,您将拥有几列:

Sepal_length Sepal_width  class
0             1           0
1             1           1

那么 X 将是:X=df[['Sepal_length', 'Sepal_width']] 和 y=df[['class']]

2)如果我们有单独的训练和测试数据文件(train.csv、test.csv),我们如何获得 X_train、X_test、y_train、y_test。

您已经有文件:训练和测试,所以不需要拆分它。但是有一个验证集的可能性。

方法是:

训练集:训练您的算法,并更改您的 ML 的参数

验证集:测试你的算法并验证参数,注意不要用它来训练

测试集:保存您的 ML 并将其用于测试集,这些数据也是完全看不见的。

在你的情况下:train.csv是你的训练集和验证集 和test.csv可能是你的测试集(它也可以是一个拆分的验证和测试集)

【讨论】:

    【解决方案2】:

    对于刚接触 ML 的人来说,“测试”这个名称有两种不同的含义总是很奇怪,第一个是“有效”,第二个是“真实”测试。 train_test_split 将原始train (X) 拆分为reduced train (X_train) 和valid (X_test),如果拆分前不移除,则目标存在于两部分。 谈到文件 train.csv 和 test.csv,我们谈论的是带有目标的火车和没有目标的“真实”测试 - train_test_split 与它们无关。

    【讨论】:

      【解决方案3】:

      您只需要从单个文件中导入数据。模块 train_test_split 将拆分数据。所以这里所有的数据都在“Salary_Data.csv”里面。

      import numpy as np
      import matplotlib.pyplot as plt
      import pandas as pd
      
      # Importing the dataset
      dataset = pd.read_csv('Salary_Data.csv')
      X = dataset.iloc[:, :-1].values
      y = dataset.iloc[:, 1].values
      
      # Splitting the dataset into the Training set and Test set
      from sklearn.cross_validation import train_test_split
      X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.33, random_state = 0)
      

      【讨论】:

      • 所以你说我们不应该在属性 X 中添加目标类
      • @IrfanUmar 我可以知道你所说的目标类是什么意思吗?
      • 目标类是我们要预测的属性
      • @IrfanUmar 该列已经存在。当你训练它使用这个目标类的数据时,当你测试它时,它会与测试数据集中现有的目标类匹配以检查准确性。
      • dataset = pd.read_csv('Salary_Data.csv') X = dataset .drop(['HasDetections'], axis=1) Y = dataset ['HasDetections'] 那么,这样做对吗?其中 HasDetections 是目标类。
      猜你喜欢
      • 2019-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-30
      • 2021-05-19
      • 2022-11-27
      • 1970-01-01
      相关资源
      最近更新 更多