我正在使用Python,我需要将我的.csv导入数据分为两部分:训练和测试集,E.G 70%训练和30%测试。
我不断收到各种错误,例如'list' object is not callable
等。
有没有简单的方法可以做到这一点?
由于
编辑:
代码是基本的,我只是想分割数据集。
from csv import reader
with open('C:/Dataset.csv', 'r') as f:
data = list(reader(f)) #Imports the CSV
data[0:1] ( data )
TypeError: 'list' object is not callable
答案 0 :(得分:12)
您可以使用pandas
:
import pandas as pd
import numpy as np
df = pd.read_csv('C:/Dataset.csv')
df['split'] = np.random.randn(df.shape[0], 1)
msk = np.random.rand(len(df)) <= 0.7
train = df[msk]
test = df[~msk]
答案 1 :(得分:2)
您应该使用pandas模块中的true
功能。它会将您的所有数据直接读入数据框,您可以进一步将数据分解为训练和测试。同样,您可以使用scikit-learn模块中的read_csv ()
函数。
答案 2 :(得分:2)
更好的练习,也许更随机的是使用df.sample
:
from numpy.random import RandomState
import pandas as pd
df = pd.read_csv('C:/Dataset.csv')
rng = RandomState()
train = df.sample(frac=0.7, random_state=rng)
test = df.loc[~df.index.isin(train.index)]