Ich habe eine Datei mit dem Namen string_constants
, die wie folgt aussehen -Python- verkürzen Code
class ModelEntityKeys:
MODEL_ENTITY_DATA = 'model_entity_data'
NETWORK_NAME = 'network_name'
MODEL_FACTORS= 'model_factors'
CLASSES= 'classes'
COEF = 'coef_'
INTERCEPT = 'intercept_'
N_ITER = 'n_iter_'
VARIABLES = 'variables'
CATG_VARIABLES = "catg_variables"
CONT_VARIABLES = "cont_variables"
LABEL_NAME = "label_name"
TEST_COST = "test_cost"
TEST_ACCURACY = "test_accuracy"
TEST_TIME_ELAPSED = "test_time_elapsed"
EPOCH_TIME_ELAPSED = "epoch_time_elapsed"
EPOCH_ACCURACY = "epoch_accuracy"
EPOCH_COST = "epoch_cost"
GRAPH_SAVE_PATH = "graph_save_path"
DATA_SAVE_PATH = "data_save_path"
ML_SAVE_PATH = "ml_save_path"
DL_SAVE_PATH = "dl_save_path"
MODEL_NAME = "model_name"
TIMESTAMP = "timestamp"
COST = "cost"
Es gibt nur wenige andere solche Klassen. Ich importieren diese Strings sie als Schlüssel zu einem Wörterbuch passieren und das ist, was ich habe -
from xai.string_constants import ModelEntityKeys
# omitting some code
# ...
self.intercept = self.data_all_entity_dict[ModelEntityKeys.MODEL_ENTITY_DATA][ModelEntityKeys.MODEL_FACTORS][ModelEntityKeys.INTERCEPT]
Das Wörterbuch self.data_all_entity_dict
ist eine verschachtelte Wörterbuch, das so etwas wie this-
{
"model_entity_data": {
"network_name": "sample_2_logistic_network",
"model_name": "sample_2_logistic_model",
"timestamp": "20171129_142512",
"cost": "mse",
"path": {
"dl_save_path": "/saves/dl/",
"ml_save_path": "/saves/ml/",
"data_save_path": "/data/",
"graph_save_path": "/graphs/tf/"
},
"train_meta": {
"epoch_cost": 0.10952380952380952,
"epoch_accuracy": 0.8904761904761904,
"epoch_time_elapsed": "0:00:00.002164"
},
"test_meta": {
"test_cost": 0.13333333333333333,
"test_accuracy": 0.8666666666666667,
"test_time_elapsed": "0:00:00.000675"
},
"model_factors": {
"classes_": [
0.0,
1.0
],
"coef_": [
[
0.007875385355666441,
8.192464586946051e-06,
0.006161374233310335,
-0.051444957788776335,
0.00043294254544011014,
0.00017207830816790075,
-0.00020155122167492249
]
],
"intercept_": [
0.0004034696319330871
],
"n_iter_": [
10
],
"variables": [
"age",
"income",
"edu_yrs",
"yrs_since_exercise",
"security_label_<prefix>_A",
"security_label_<prefix>_B",
"security_label_<prefix>_C"
],
"catg_variables": [
"security_label"
],
"cont_variables": [
"age",
"income",
"edu_yrs",
"yrs_since_exercise"
],
"label_name": "prob"
}
}
}
Das Problem aussieht, ist das mit
self.intercept = self.data_all_entity_dict[ModelEntityKeys.MODEL_ENTITY_DATA][ModelEntityKeys.MODEL_FACTORS][ModelEntityKeys.INTERCEPT]
wird zu lang und tötet die Lesbarkeit. Gibt es eine Möglichkeit, diese Linie zu verkürzen?
Sie können ohne Schrägstriche oder andere hässliche zusätzliche Dekorationen Zeilenumbrüche in Klammern haben. 'dict [' (newline) 'ModelEntityKeys.MODEL_ENTITY_DATA' (newline) usw. – tripleee
Gibt es eine Möglichkeit, das zu verkürzen. Ich verstehe, was Sie vorschlagen. Ich möchte nur weniger Zeichen verwenden. Kann ich etwas in der 'string_constants' Datei oder im Import ändern? –
'ModelEntityKeys.MODEL_ENTITY_DATA.MODEL_FACTORS' stimmt nicht mit Ihrer' ModelEntityKeys' Definition überein - sollte 'ModelEntityKeys.MODEL_FACTOR' lauten ... –