Male_zoo_Projekt_SI/decision_tree.py

51 lines
1.7 KiB
Python
Raw Normal View History

2024-05-12 16:25:09 +02:00
import pandas as pd
from sklearn.tree import DecisionTreeClassifier, plot_tree, export_graphviz
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
headers = ['adult','active_time','ill','season','guests','hunger','wet_food','dry_food']
# Wczytanie danych
data = pd.read_csv('dane.csv', header=0)
X = data[headers]
2024-05-12 16:25:09 +02:00
Y = data['decision']
X = pd.get_dummies(data=X, columns=['season'])
clf = DecisionTreeClassifier(random_state=0, min_samples_leaf = 4, min_samples_split=2)
clf = clf.fit(X,Y)
#skuteczność drzewa
'''
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, train_size=0.8)
2024-05-12 16:25:09 +02:00
clf = clf.fit(X_train, Y_train)
Y_pred = clf.predict(X_test)
accuracy = accuracy_score(Y_test, Y_pred)
print("Dokładność:", accuracy)
'''
2024-05-12 16:25:09 +02:00
#zapisanie drzewa do pliku
plt.figure(figsize=(50,30))
plot_tree(clf, filled=True, feature_names=X.columns, class_names=['nie karmi', 'karmi mokrą karmą', 'karmi suchą karmą'])
2024-05-12 16:25:09 +02:00
# dane do decyzji
2024-05-12 21:07:31 +02:00
def feed_decision(adult,active_time,ill,season,guests,hunger,dry_food,wet_food):
2024-05-12 16:25:09 +02:00
X_new = pd.DataFrame({
'adult': [adult],
'active_time': [active_time],
'ill': [ill],
'season': [season],
'guests':[guests],
'hunger': [hunger],
'wet_food': [wet_food],
'dry_food': [dry_food]
})
2024-05-12 21:07:31 +02:00
X_new = pd.get_dummies(X_new)
missing_columns = set(X.columns) - set(X_new)
2024-05-12 16:25:09 +02:00
for col in missing_columns:
2024-05-12 21:07:31 +02:00
X_new[col] = False
X_new = X_new.reindex(columns=X.columns, fill_value=0)
2024-05-12 16:25:09 +02:00
print("Atrybuty zwierzęcia:", adult,active_time,ill,season,guests,hunger,wet_food,dry_food)
2024-05-12 21:07:31 +02:00
return (clf.predict(X_new))
2024-05-12 16:25:09 +02:00