字典数据可以随机分成测试集和训练集吗?

Fra*_*n04 1 python dictionary

我想了解我是否有一组 JSON 格式的字典数据,如下例所示:

data = {'a':'120120121',
'b':'12301101',
'c':'120120121',
'd':'12301101',
'e':'120120121',
'f':'12301101',
'g':'120120121',
'h':'12301101',
'i':'120120121',
'j':'12301101'}
Run Code Online (Sandbox Code Playgroud)

是否可以使用 Python 将字典随机拆分为 70:30?

输出应该是这样的:

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

test_data = {'d':'12301101',
    'f':'12301101',
    'h':'12301101'}
Run Code Online (Sandbox Code Playgroud)

yat*_*atu 5

最简单的方法是在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)]
Run Code Online (Sandbox Code Playgroud)
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'}
Run Code Online (Sandbox Code Playgroud)