import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.dummy import DummyClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC
from sklearn.ensemble import RandomForestClassifier
from xgboost import XGBClassifier
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_iris
# Wczytanie danych Iris
iris = load_iris()
X = iris.data
y = iris.target
# Podział danych na zbiory treningowe i testowe
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# Lista klasyfikatorów do porównania
classifiers = [
DummyClassifier(strategy='most_frequent'),
LogisticRegression(random_state=42),
DecisionTreeClassifier(random_state=42),
KNeighborsClassifier(),
GaussianNB(),
SVC(random_state=42),
RandomForestClassifier(random_state=42),
XGBClassifier(use_label_encoder=False, eval_metric='mlogloss', random_state=42)
]
# Słownik do przechowywania wyników
results = {}
# Trenowanie klasyfikatorów i obliczanie dokładności
for clf in classifiers:
clf_name = clf.__class__.__name__
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
results[clf_name] = accuracy
# Wyświetlanie wyników
for classifier_name, accuracy in results.items():
print(f"{classifier_name}: {accuracy:.2f}")
# Wyznaczanie najlepszego klasyfikatora
best_classifier_name = max(results, key=results.get)
best_accuracy = results[best_classifier_name]
print(f"\nNajlepszy klasyfikator: {best_classifier_name} z dokładnością {best_accuracy:.2f}")