如何在没有目标值作为单独数据帧的情况下进行训练和测试拆分?

2024-04-27 04:34:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我只能将scikit学习函数train_test_split应用于具有训练数据和目标数据的两个数据帧。但如何将包括目标值的数据帧按0.75的比例拆分为训练数据帧和测试数据帧?我不想只选择前n行,它们占所有行的75%,我希望有像train_test_split中那样的随机选择,但在训练和测试数据中不应该有相同的行


Tags: 数据函数test目标trainscikit比例split
2条回答

train_test_split的第一个参数是数组序列,该序列可以只有一个长度

from sklearn.model_selection import train_test_split
from sklearn import datasets

iris = datasets.load_iris()
cols = [f.replace(' (cm)', '').replace(' ','_') for f in iris.feature_names] + ['target']
df = pd.DataFrame(np.c_[iris['data'], iris['target']], columns=cols)

df_train, df_test = train_test_split(df, train_size=0.75)

print(len(df_train) / len(iris.data))

如果传递了多个数据帧/数组,则它们必须具有相同的长度,并且每个数据帧/数组都以相同的方式拆分,因此可以灵活地通过数据帧或每个列/功能的多个数组/列表来实现这一点。这通常用于将标签保存在单独的容器中

这应该将您的数据帧分割成您指定的比例进行训练和测试

import pandas as pd
from sklearn.model_selection import train_test_split
        
df = pd.DataFrame({'numbers': [1, 2, 3, 4, 5], 'colors': ['red', 'white', 
                           'blue', 'green', 'black']}, 
                          columns=['numbers', 'colors'])
        
training_dataset, test_dataset = train_test_split(df, train_size=0.75)

相关问题 更多 >