Я только что реализовал модель для Регуляризованной Логистической Регрессии, но мне трудно построить границу решения.Я использую пакет под названием mlxtend , который должен быть простым способом реализации границы принятия решения, но я потратил целый день, пытаясь заставить это работать.
ПожалуйстаНаправьте меня в правильном направлении, как построить Границу Решения.Бесконечно благодарен!
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from mlxtend.plotting import plot_decision_regions
dataset = pd.read_csv("Microchip Test Dataset.txt", names=["Test 1", "Test 2", "Accepted"])
print(dataset.head())
#Visualizing Dataset
positive = dataset[dataset["Accepted"] == 1]
negative = dataset[dataset["Accepted"] == 0]
plt.scatter(positive["Test 1"], positive["Test 2"], color="blue", marker="o", label="Accepted")
plt.scatter(negative["Test 1"], negative["Test 2"], color="red", marker="x", label="Rejected")
plt.title("Microchip Test")
plt.xlabel("Test 1")
plt.ylabel("Test 2")
plt.legend()
plt.show()
#Preprocessing Data
col = len(dataset.columns)
x = dataset.iloc[:,0:col-1].values
y = dataset.iloc[:,col-1:col].values
#Adding Polynomial Features
poly = PolynomialFeatures(6)
x = poly.fit_transform(x)
print(f"\nX Shape : {x.shape} Y Shape : {y.shape}")
x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=1306)
#Training Model
reg = LogisticRegression()
reg.fit(x_train, y_train)
probs = reg.predict(x_test)
accuracy_score = reg.score(x_test,y_test) * 100
coeff =reg.coef_
intercept = reg.intercept_
print(f"Accuracy : {accuracy_score:.2f}%")
print(f"Coefficients = {coeff}")
print(f"Intercept Coefficient = {intercept}")
value=1.5
width=0.75
e = {}
f = {}
for i in range(2,28):
e[i] = value
for j in range(2,28):
f[j] = width
#Visualizing Output
plot_decision_regions(x, y.flatten(), clf=reg,
filler_feature_values=e,
filler_feature_ranges=f,
)
plt.xlabel("Test 1")
plt.ylabel("Test 2")
plt.legend()
plt.show()
Набор данных: Набор тестовых данных для микрочипов