어떻게 보장-분리 데이터 및 테스트 세트 등을 임의로 입체 커버로 덮여있다.

I have a 대형 데이터세트를 분할하려면 알고 있으며 이를 교육 (50%), 테스트 세트 (50%).

나는 한 가지 예를 들어, 각 줄에는 말하도다 100 참조용이므로 저장됩니까 입력 파일. 트레이닝 셋 (training set) 로 50 선을 선택할 수 있고 50 데릭쉐퍼드와 흐름선 테스트 설정되었습니다.

내 아이디어는 무순서 길이 100 list 를 먼저 생성 (값의 범위는 100 대 1) 한 후, 첫 번째 50 대로 요소를 사용할 줄 번호 50 대한 교육 등으로 부르기도 한다. 테스트 설정되었습니다 마찬가지였다.

Matlab 에서 이 쉽게 구현할 수 있습니다

fid=fopen(datafile);
C = textscan(fid, '%s','delimiter', '\n');
plist=randperm(100);
for i=1:50
    trainstring = C{plist(i)};
    fprintf(train_file,trainstring);
end
for i=51:100
    teststring = C{plist(i)};
    fprintf(test_file,teststring);
end

하지만 내가 어떻게 이 기능을 수행하는 파이썬? # 39 m, t, 파이썬, 그리고 새로운 i& don& # 39 배열로 특정 행을 선택할 것인지 알 수 있고, 내가 전체 파일을 읽을 수 있었다.

해결책

만약 이 수행할 수 있다 (단, 전체 목록은 셔플 제자리에) 사용 목록.

import random

with open("datafile.txt", "rb") as f:
    data = f.read().split('\n')

random.shuffle(data)

train_data = data[:50]
test_data = data[50:]
해설 (3)
from sklearn.model_selection import train_test_split
import numpy

with open("datafile.txt", "rb") as f:
   data = f.read().split('\n')
   data = numpy.array(data)  #convert array to numpy type array

   x_train ,x_test = train_test_split(data,test_size=0.5)       #test_size=0.5(whole_data)
해설 (2)

누마피 사용할 수도 있습니다. 데이터가 저장되는 경우 누마피. 드라이:

import numpy as np
from random import sample
l = 100 #length of data 
f = 50  #number of elements you need
indices = sample(range(l),f)

train_data = data[indices]
test_data = np.delete(data,indices)
해설 (0)

'sklearn.cross_validation' 는 사용되지 않고, '아래' 으로 0.18 버전 이후 콩지름에 sklearn.model_selection 표시

from sklearn.model_selection import train_test_split
import numpy

with open("datafile.txt", "rb") as f:
   data = f.read().split('\n')
   data = numpy.array(data)  #convert array to numpy type array

   x_train ,x_test = train_test_split(data,test_size=0.5)       #test_size=0.5(whole_data)
해설 (0)

제가 이 질문에 대한 해답을 @desmond.carros 수정되었음 다음과 같이

 import random
 file=open("datafile.txt","r")
 data=list()
 for line in file:
    data.append(line.split(#your preferred delimiter))
 file.close()
 random.shuffle(data)
 train_data = data[:int((len(data)+1)*.80)] #Remaining 80% to training set
 test_data = data[int(len(data)*.80+1):] #Splits 20% data to test set

코드 분할합니다 80 %20%, 전체 데이터세트를 트레이닝하려면 테스트 데이터를

해설 (0)

이 방법을 시도해 볼 수 있습니다

import pandas
import sklearn
csv = pandas.read_csv('data.csv')
train, test = sklearn.cross_validation.train_test_split(csv, train_size = 0.5)
해설 (0)

더 일반적인 ᄀ씨 배 교차 유효성 검사 분할됩니다 다음 생산한다. 네 50-50 분햘 약간만이라도 달성됩니다 k = 2 로 만들어 '아래' 는 두 개 중 하나를 선택할 수 있는 모든 것과 파티션당 만들어졌다. 참고: 내가 haven& # 39 m, t 테스트하였습니다 암호라고 I& # 39, 예쁜 있는지 노력해야 합니다.

import random, math

def k_fold(myfile, myseed=11109, k=3):
    # Load data
    data = open(myfile).readlines()

    # Shuffle input
    random.seed=myseed
    random.shuffle(data)

    # Compute partition size given input k
    len_part=int(math.ceil(len(data)/float(k)))

    # Create one partition per fold
    train={}
    test={}
    for ii in range(k):
        test[ii]  = data[ii*len_part:ii*len_part+len_part]
        train[ii] = [jj for jj in data if jj not in test[ii]]

    return train, test      
해설 (0)

빠른 노트를 답을 @subin 자야마

 import random
 file=open("datafile.txt","r")
 data=list()
 for line in file:
    data.append(line.split(#your preferred delimiter))
 file.close()
 random.shuffle(data)
 train_data = data[:int((len(data)+1)*.80)] #Remaining 80% to training set
 test_data = data[int(len(data)*.80+1):] #Splits 20% data to test set

크기는 목록 번호, 심지어 경우 추가 1 위 아래 코드는 안 됩니다. 대신 다음 목록의 크기에 따라 먼저 확인해야 합니다 추가해야 할 경우 1. &gt, test_data = 데이터 [int (len (데이터) *.80+1):]

해설 (0)

우선, 그런 거 잘 there& # 39 로, arrays&quot &quot 게 전혀 없다. 의 파이썬, 파이썬, 그리고 그 변화를 만들 때 사용하는 누마피 나 열거합니다 높여줍니까 /dev/raw/raw1 제안하세요 원하는거요 꽤 좋은 library for 파이썬 및 it 자도으로 같은 matlab 많이 줍니다. 여기에서 누마피 Matlab 사용자를 위한 시작할 수 있습니다.

해설 (1)