sklearn train_test_split 困惑

sklearn train_test_split confusion

我收到一个错误 运行 代码。可能的错误是什么?

X = [['Item_Identifier', 'Item_Weight', 'Item_Fat_Content', 'Item_Visibility',
       'Item_Type', 'Item_MRP', 'Outlet_Identifier',
       'Outlet_Establishment_Year', 'Outlet_Size', 'Outlet_Location_Type',
       'Outlet_Type']]
y = ['Item_Outlet_Sales']
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.80,test_size=0.20)

我遇到的错误:

ValueError: With n_samples=1, test_size=0.2 and train_size=0.8, the resulting train set will be empty. Adjust any of the aforementioned parameters.

您的 X 和 y 数据实际上是什么?他们真的是那些字符串吗?还是您将文本用作占位符?

您有一个列表列表作为 X 数据。这就是为什么代码将其解释为好像只有一个样本。这就是为什么它告诉你 n_sample = 1 并且当你拆分时训练数据将为空。删除 X 中的内部括号,并为 X 设置一个类似于 array/list 的数据结构。然后它应该可以工作。

我相信您正在处理 pandas data frame,并且您的 Xy 如行所示:

X = [['Item_Identifier', 'Item_Weight', 'Item_Fat_Content', 'Item_Visibility', 'Item_Type', 'Item_MRP', 'Outlet_Identifier', 'Outlet_Establishment_Year', 'Outlet_Size', 'Outlet_Location_Type', 'Outlet_Type']]
y = ['Item_Outlet_Sales']

只是列表,它们是真实列名的索引,不包含有效的训练数据。如果您的数据框名称是 df,由行创建,df = Dataframe(your_data),您应该尝试:

X = df[['Item_Identifier', 'Item_Weight', 'Item_Fat_Content', 'Item_Visibility', 'Item_Type', 'Item_MRP', 'Outlet_Identifier', 'Outlet_Establishment_Year', 'Outlet_Size', 'Outlet_Location_Type', 'Outlet_Type']]
y = df[['Item_Outlet_Sales']]

用于提取 Xy 数据。