Могут ли данные словаря разделяться на тестовые и обучающие наборы случайно? - PullRequest
1 голос
/ 30 марта 2020

Я хочу понять, есть ли у меня набор словарных данных в JSON, как, например, в приведенном ниже примере:

data = {'a':'120120121',
'b':'12301101',
'c':'120120121',
'd':'12301101',
'e':'120120121',
'f':'12301101',
'g':'120120121',
'h':'12301101',
'i':'120120121',
'j':'12301101'}

Можно ли случайно разбить словарь на 70:30, используя Python?

Вывод должен быть таким:

training_data = {'a':'120120121',
    'b':'12301101',
    'c':'120120121',
    'e':'120120121',
    'g':'120120121',
    'i':'120120121',
    'j':'12301101'}

test_data = {'d':'12301101',
    'f':'12301101',
    'h':'12301101'}

1 Ответ

3 голосов
/ 30 марта 2020

Самый простой способ - это просто использовать sklearn.model_selection.train_test_split здесь и вернуться к словарю, если вы хотите такую ​​структуру:

from sklearn.model_selection import train_test_split

s = pd.Series(data)
training_data , test_data  = [i.to_dict() for i in train_test_split(s, train_size=0.7)]

print(training_data)
# {'b': '12301101', 'j': '12301101', 'a': '120120121', 'f': '12301101', 
# 'e': '120120121', 'c': '120120121', 'h': '12301101'}

print(test_data)
# {'i': '120120121', 'd': '12301101', 'g': '120120121'}
...