我有一本字典,它包含从一个文件中读取的所有数据。字典有三个键:
这些键中的每一个都对应于一个列表,因此我有一个列表字典,例如:
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。我会很感激你的见解。
发布于 2020-05-26 06:55:12
from sklearn.model_selection import train_test_split
train_test_split(list(dictionary.values()),train_size = 0.8)不过,如果你用熊猫代替清单,那就太好了。
import pandas as pd
df = pd.DataFrame(dictionary)
train_test_split(df,train_size = 0.8)发布于 2020-05-26 06:51:13
你可以试试这个
# 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()}我希望这能帮到你。
https://stackoverflow.com/questions/62015467
复制相似问题