我有一个字典,其中包含从文件中读取的所有数据。字典具有三个键:
这些键中的每个键都对应一个列表,因此我有一个列表字典,例如:
dictionary = {'name':['seq1','seq2','seq3','seq4',...,'seq10000'],
'seq':['actatsts','gfsfsfsg','gstfdh','gsydg',...,'hdbcjshy'],
'seq_len':[8,8,6,5,...,8]}
现在,我想统一拆分此词典,以便最终得到用于培训,验证和测试的词典,其中80%。如何使用字典数据结构实现这一目标?因为我不能在这里使用sklearn train_test_split。见识将不胜感激。
答案 0 :(得分:1)
您可以尝试
# Way 1
df = pd.DataFrame(dictionary)
train_val = df.sample(frac=0.8, random_state=42)
# `how='all'` if there are missing values in your raw data.
test = df[~df.isin(train_val)].dropna(how='all')
# Way 2
np.random.seed(42)
length = len(dictionary['name'])
new_index = np.random.permutation(length)
train_val_index = new_index[:int(length*0.8)]
test_index = list(set(new_index) - set(train_val_index))
train_val = {key: [value[i] for i in train_val_index] for key, value in dictionary.items()}
test = {key: [value[i] for i in test_index] for key, value in dictionary.items()}
希望这会对您有所帮助。
答案 1 :(得分:1)
df_store = []
for i in range(len(namelist)) :
temp_df = df_all[df_all.name==namelist[i]].copy()
df_store.append(temp_df)
尽管使用熊猫代替列表会很好。
from sklearn.model_selection import train_test_split
train_test_split(list(dictionary.values()),train_size = 0.8)