Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Trenowanie klasyfikatora One vs Rest dla wszystkich trzech klas
- OvRClassifier = OneVsRestClassifier(LogisticRegression())
- OvRClassifier.fit(iris_train_scaled_data, iris_train_target)
- # Tworzenie wykresu z danymi i granicami decyzyjnymi dla trzech klasyfikatorów
- plt.figure(figsize=(10, 8))
- # Tworzenie siatki do wizualizacji granic decyzyjnych
- x_min, x_max = iris_train_scaled_data[:, 0].min() - 1, iris_train_scaled_data[:, 0].max() + 1
- y_min, y_max = iris_train_scaled_data[:, 1].min() - 1, iris_train_scaled_data[:, 1].max() + 1
- xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02),
- np.arange(y_min, y_max, 0.02))
- # Pobieranie unikalnych klas
- unique_classes = np.unique(iris_train_target)
- class_colors = ['blue', 'orange', 'green']
- # Wyświetlanie punktów danych
- for i, class_idx in enumerate(unique_classes):
- plt.scatter(iris_train_scaled_data[iris_train_target == class_idx][:, 0],
- iris_train_scaled_data[iris_train_target == class_idx][:, 1],
- color=class_colors[i],
- alpha=0.7,
- label=f'{class_idx} - {iris.target_names[class_idx]}')
- # Wykreślanie granic decyzyjnych dla każdego klasyfikatora binarnego w OvR
- for i, (class_idx, estimator) in enumerate(zip(unique_classes, OvRClassifier.estimators_)):
- # Pobieranie współczynników i wyrazu wolnego dla tego klasyfikatora
- coef = estimator.coef_[0]
- intercept = estimator.intercept_[0]
- # Obliczanie granicy decyzyjnej
- x1_vals = np.linspace(x_min, x_max, 100)
- x2_vals = -(coef[0] / coef[1]) * x1_vals - (intercept / coef[1])
- plt.plot(x1_vals, x2_vals,
- linestyle='--',
- color=class_colors[i],
- linewidth=2,
- label=f'Granica dla klasy {class_idx}')
- plt.title('Klasyfikatory One-vs-Rest dla zbioru Iris')
- plt.xlabel('Przeskalowana długość działki kielicha')
- plt.ylabel('Przeskalowana szerokość działki kielicha')
- plt.legend()
- plt.grid(True)
- plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement