Untitled

 avatar
unknown
plain_text
a year ago
3.3 kB
4
Indexable
import numpy as np

# Wczytanie danych z pliku txt (załóżmy, że dane są w formacie CSV)
def load_data(file_path):
    with open(file_path, 'r') as file:
        data = [line.strip().split(',') for line in file]
    return data

# a) Wypisanie istniejących w systemie symboli klas decyzyjnych
def find_decision_classes(data):
    decision_classes = set([row[-1] for row in data])
    return decision_classes

# b) Wielkości klas decyzyjnych
def size_of_decision_classes(data):
    decision_classes_count = {}
    for row in data:
        decision_class = row[-1]
        decision_classes_count[decision_class] = decision_classes_count.get(decision_class, 0) + 1
    return decision_classes_count

# c) Minimalne i maksymalne wartości poszczególnych atrybutów numerycznych
def min_max_values_numeric_attributes(data):
    numeric_attributes = [[float(val) for val in row[:-1]] for row in data if all(val.replace('.', '').isdigit() for val in row[:-1])]
    min_values = np.min(numeric_attributes, axis=0)
    max_values = np.max(numeric_attributes, axis=0)
    return min_values, max_values

# d) Liczba różnych dostępnych wartości dla każdego atrybutu
def count_different_values(data):
    num_attributes = len(data[0]) - 1
    unique_values_count = [len(set([row[i] for row in data])) for i in range(num_attributes)]
    return unique_values_count

# e) Lista wszystkich różnych dostępnych wartości dla każdego atrybutu
def list_different_values(data):
    num_attributes = len(data[0]) - 1
    unique_values = [list(set([row[i] for row in data])) for i in range(num_attributes)]
    return unique_values

# f) Obliczenie odchylenia standardowego dla poszczególnych atrybutów
def compute_standard_deviation(data):
    numeric_attributes = [[float(val) for val in row[:-1]] for row in data if all(val.replace('.', '').isdigit() for val in row[:-1])]
    std_deviation_system = np.std(numeric_attributes, axis=0)
    
    decision_classes = find_decision_classes(data)
    std_deviation_classes = {}
    for decision_class in decision_classes:
        class_data = [[float(val) for val in row[:-1]] for row in data if row[-1] == decision_class]
        std_deviation_classes[decision_class] = np.std(class_data, axis=0)
    
    return std_deviation_system, std_deviation_classes

# Przykładowe użycie funkcji
file_path = 'dane.txt'
data = load_data(file_path)

print("a) Istniejące w systemie symbole klas decyzyjnych:", find_decision_classes(data))
print("b) Wielkości klas decyzyjnych:", size_of_decision_classes(data))
min_values, max_values = min_max_values_numeric_attributes(data)
print("c) Minimalne wartości atrybutów numerycznych:", min_values)
print("   Maksymalne wartości atrybutów numerycznych:", max_values)
print("d) Liczba różnych dostępnych wartości dla każdego atrybutu:", count_different_values(data))
print("e) Lista różnych dostępnych wartości dla każdego atrybutu:", list_different_values(data))
std_dev_system, std_dev_classes = compute_standard_deviation(data)
print("f) Odchylenie standardowe dla atrybutów w całym systemie:", std_dev_system)
print("   Odchylenie standardowe dla atrybutów w poszczególnych klasach decyzyjnych:", std_dev_classes)
Editor is loading...
Leave a Comment