Untitled
unknown
plain_text
2 years ago
2.4 kB
9
Indexable
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, confusion_matrix
from sklearn.datasets import make_classification
from sklearn.preprocessing import StandardScaler
# Sigmoid function
def sigmoid(z):
return 1 / (1 + np.exp(-z))
# Create synthetic dataset
X, y = make_classification(n_samples=1000, n_features=2, n_informative=2, n_redundant=0, n_clusters_per_class=1, random_state=42)
# Split the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Standardize the features (optional but often recommended for logistic regression)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# Create a logistic regression model
model = LogisticRegression()
# Train the model
model.fit(X_train, y_train)
# Plot sigmoid function
x_values = np.linspace(-7, 7, 300)
y_values = sigmoid(x_values)
plt.plot(x_values, y_values, label='Sigmoid Function')
plt.title('Sigmoid Function')
plt.xlabel('z')
plt.ylabel('sigmoid(z)')
plt.legend()
plt.show()
# Plot decision boundary on the test set along with sigmoid function
def plot_decision_boundary_with_sigmoid(X, y, model, title="Decision Boundary"):
h = .02 # step size in the mesh
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
# Plot the decision boundary
plt.contourf(xx, yy, Z, cmap=plt.cm.coolwarm, alpha=0.8)
# Plot the sigmoid function
plt.plot(x_values, y_values, label='Sigmoid Function', color='black', linestyle='--')
# Plot the test points
plt.scatter(X[:, 0], X[:, 1], c=y, edgecolors='k', cmap=plt.cm.coolwarm)
plt.title(title)
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.legend()
plt.show()
# Plot decision boundary and sigmoid function on the test set
plot_decision_boundary_with_sigmoid(X_test, y_test, model, title="Decision Boundary with Sigmoid Function on Test Set")
Editor is loading...
Leave a Comment