Untitled
unknown
plain_text
8 months ago
2.4 kB
3
Indexable
Never
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")
Leave a Comment