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 배열로 특정 행을 선택할 것인지 알 수 있고, 내가 전체 파일을 읽을 수 있었다.
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)
'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)
제가 이 질문에 대한 해답을 @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%, 전체 데이터세트를 트레이닝하려면 테스트 데이터를
더 일반적인 ᄀ씨 배 교차 유효성 검사 분할됩니다 다음 생산한다. 네 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
빠른 노트를 답을 @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. >, test_data = 데이터 [int (len (데이터) *.80+1):]
우선, 그런 거 잘 there& # 39 로, arrays" " 게 전혀 없다. 의 파이썬, 파이썬, 그리고 그 변화를 만들 때 사용하는 누마피 나 열거합니다 높여줍니까 /dev/raw/raw1 제안하세요 원하는거요 꽤 좋은 library for 파이썬 및 it 자도으로 같은 matlab 많이 줍니다. 여기에서 누마피 Matlab 사용자를 위한 시작할 수 있습니다.