Repository navigation
Expand file tree
/
Copy pathknowladge_base_py.py
More file actions
136 lines (121 loc) · 10.4 KB
/
Copy pathknowladge_base_py.py
File metadata and controls
136 lines (121 loc) · 10.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
import csv
sequences = [
['возраст=25_или_меньше', 'пол=ж', 'основная_продолжительность=72'],
['возраст=25_или_меньше', 'пол=м', 'основная_продолжительность=67'],
['возраст=25-55', 'пол=ж', 'основная_продолжительность=67'],
['возраст=25-55', 'пол=м', 'основная_продолжительность=62'],
['возраст=55_или_больше', 'пол=ж', 'основная_продолжительность=64'],
['возраст=55_или_больше', 'пол=м', 'основная_продолжительность=60'],
['вес=55_или_меньше', 'сложение=мелкое', 'пол=ж', 'относительный_вес=нормальный'],
['вес=85_или_больше', 'сложение=мелкое', 'пол=ж', 'относительный_вес=излишний'],
['вес=55-85', 'сложение=мелкое', 'пол=ж', 'относительный_вес=излишний'],
['вес=55-85', 'сложение=крупное', 'пол=ж', 'относительный_вес=нормальный'],
['вес=55-85', 'сложение=мелкое', 'пол=м', 'относительный_вес=нормальный'],
['вес=55-85', 'сложение=крупное', 'пол=м', 'относительный_вес=недостаточный'],
['вес=85_или_больше', 'пол=ж', 'относительный_вес=излишний'],
['вес=85_или_больше', 'пол=м', 'сложение=мелкое', 'относительный_вес=излишний'],
['вес=85_или_больше', 'пол=м', 'сложение=крупное', 'относительный_вес=нормальный'],
['холестерин=низкий', 'жиры=излишек', 'коронарный_риск=ниже_среднего'],
['холестерин=низкий', 'жиры=норма', 'коронарный_риск=средний'],
['холестерин=излишек', 'коронарный_риск=выше_среднего'],
['холестерин=норма', 'коронарный_риск=средний'],
['соль=излишек', 'кровяное_давление=выше_среднего'],
['соль=норма', 'кровяное_давление=среднее'],
['кальций=излишек', 'риск_остеопороза=ниже_среднего'],
['кальций=норма', 'риск_остеопороза=средний'],
['кальций=низкий', 'риск_остеопороза=выше_среднего'],
['относительный_вес=излишний', 'коронарный_риск=выше_среднего', 'кровяное_давление=выше_среднего', 'курение=да', 'перспектива=унылая'],
['относительный_вес=излишний', 'коронарный_риск=выше_среднего', 'кровяное_давление=выше_среднего', 'курение=нет', 'перспектива=плохая'],
['относительный_вес=излишний', 'коронарный_риск=выше_среднего', 'кровяное_давление=среднее', 'курение=нет', 'перспектива=хорошая'],
['относительный_вес=излишний', 'сердзаб=низкий', 'кровяное_давление=среднее', 'курение=нет', 'перспектива=хорошая'],
['зн=да', 'сердзаб=низкий', 'кровяное_давление=среднее', 'курение=нет', 'перспектива=отличная'],
['зн=да', 'коронарный_риск=выше_среднего', 'кровяное_давление=среднее', 'курение=да', 'перспектива=посредственная'],
['зн=да', 'сердзаб=низкий', 'кровяное_давление=среднее', 'курение=да', 'перспектива=посредственная'],
['зн=да', 'сердзаб=низкий', 'кровяное_давление=среднее', 'курение=нет', 'перспектива=хорошая'],
['старт=да', 'перспектива=неизвестна'],
['раса=негроидная', 'происхождение=средиземноморское', 'риск=высокий'],
['характер=агрессивный', 'тип_личности=тип_a'],
['характер=мягкий', 'тип_личности=тип_b'],
['тип_личности=тип_a', 'риск=высокий'],
['старт=да', 'риск=неизвестен'],
['потребление_алкоголя=умеренное', 'дополн=посредственно'],
['потребление_алкоголя=не_употребляет', 'дополн=хорошо'],
['потребление_алкоголя=чрезмерное', 'дополн=плохо'],
['перспектива=унылая', 'риск=высокий', 'дополн=плохо', 'фактор=минус_12'],
['перспектива=отличная', 'риск=неизвестен', 'дополн=посредственно', 'фактор=плюс_12'],
['перспектива=отличная', 'риск=высокий', 'дополн=посредственно', 'фактор=ноль'],
['перспектива=хорошая', 'риск=высокий', 'дополн=посредственно', 'фактор=ноль'],
['перспектива=хорошая', 'риск=высокий', 'фактор=минус_12'],
['перспектива=посредственная', 'риск=высокий', 'фактор=минус_12'],
['перспектива=отличная', 'риск=неизвестен', 'дополн=хорошо', 'фактор=плюс_12'],
['перспектива=отличная', 'риск=неизвестен', 'дополн=плохо', 'фактор=плюс_12'],
['перспектива=посредственная', 'риск=неизвестен', 'фактор=плюс_12'],
['перспектива=хорошая', 'риск=неизвестен', 'фактор=ноль'],
['перспектива=унылая', 'риск=неизвестен', 'фактор=ноль'],
['старт=да', 'фактор=неизвестен'],
['старт=выход', 'фактор=выход'],
['основная_продолжительность=72', 'фактор=ноль', 'продолжительность=72'],
['основная_продолжительность=67', 'фактор=ноль', 'продолжительность=67'],
['основная_продолжительность=64', 'фактор=ноль', 'продолжительность=64'],
['основная_продолжительность=62', 'фактор=ноль', 'продолжительность=62'],
['основная_продолжительность=60', 'фактор=ноль', 'продолжительность=60'],
['основная_продолжительность=72', 'фактор=плюс_12', 'продолжительность=84'],
['основная_продолжительность=67', 'фактор=плюс_12', 'продолжительность=79'],
['основная_продолжительность=64', 'фактор=плюс_12', 'продолжительность=76'],
['основная_продолжительность=62', 'фактор=плюс_12', 'продолжительность=74'],
['основная_продолжительность=60', 'фактор=плюс_12', 'продолжительность=72'],
['основная_продолжительность=72', 'фактор=минус_12', 'продолжительность=60'],
['основная_продолжительность=67', 'фактор=минус_12', 'продолжительность=55'],
['основная_продолжительность=64', 'фактор=минус_12', 'продолжительность=52'],
['основная_продолжительность=62', 'фактор=минус_12', 'продолжительность=50'],
['основная_продолжительность=60', 'фактор=минус_12', 'продолжительность=48']
]
import pickle
import os
def save_knowledge_base_to_binary(sequences, output_file="knowledge_base.bin"):
"""
Saves the knowledge base sequences to a binary file using pickle serialization.
Args:
sequences (list): List of sequence lists containing knowledge base rules
output_file (str): Path to the output binary file
Returns:
bool: True if successful, False otherwise
"""
try:
with open(output_file, 'wb') as f:
pickle.dump(sequences, f)
file_size = os.path.getsize(output_file)
print(f"Knowledge base successfully saved to {output_file}")
print(f"File size: {file_size} bytes")
return True
except Exception as e:
print(f"Error saving knowledge base: {e}")
return False
def load_knowledge_base_from_binary(input_file="knowledge_base.bin"):
"""
Loads the knowledge base sequences from a binary file.
Args:
input_file (str): Path to the binary file
Returns:
list: The loaded sequences or None if an error occurred
"""
try:
with open(input_file, 'rb') as f:
sequences = pickle.load(f)
print(f"Knowledge base successfully loaded from {input_file}")
return sequences
except Exception as e:
print(f"Error loading knowledge base: {e}")
return None
# Import the sequences from the original file
from knowladge_base_py import sequences
# Save the sequences to a binary file
if __name__ == "__main__":
save_knowledge_base_to_binary(sequences)
# Verify by loading the data back
loaded_sequences = load_knowledge_base_from_binary()
# Check if the loaded data matches the original
if loaded_sequences == sequences:
print("Verification successful: Loaded data matches original data")
else:
print("Verification failed: Loaded data does not match original data")