Граница принятия решения для регуляризованной логистической регрессии в Python - PullRequest
0 голосов
/ 02 декабря 2018

Я только что реализовал модель для Регуляризованной Логистической Регрессии, но мне трудно построить границу решения.Я использую пакет под названием 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()

Набор данных: Набор тестовых данных для микрочипов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...