from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
# Load dataset
iris = load_iris()
X = iris.data
y = iris.target
# Split data
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42, stratify=y
)
# Multiclass Logistic Regression
model = LogisticRegression(
    multi_class="multinomial",
    max_iter=200
)
# Train
model.fit(X_train, y_train)
# Prediction
y_pred = model.predict(X_test)
# Evaluation
print("Accuracy:", accuracy_score(y_test, y_pred))
print("\nClassification Report:")
print(classification_report(y_test, y_pred))
print("\nConfusion Matrix:")
print(confusion_matrix(y_test, y_pred))
import statsmodels.api as sm
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, classification_report
import pandas as pd
# Load Iris dataset
iris = load_iris()
X = pd.DataFrame(iris.data, columns=iris.feature_names)
y = pd.Series(iris.target, name="target")
# Add constant
X = sm.add_constant(X)
# Split data
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42, stratify=y
)
# Multinomial Logistic Regression
model = sm.MNLogit(y_train, X_train)
# Fit model
result = model.fit()
# Model summary
print(result.summary())
# Prediction
pred_prob = result.predict(X_test)
# Convert probabilities to class labels
y_pred = pred_prob.idxmax(axis=1)
# Evaluation
print("\nAccuracy:", accuracy_score(y_test, y_pred))
print("\nClassification Report:")
print(classification_report(y_test, y_pred))
import statsmodels.formula.api as smf
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, classification_report
import pandas as pd
# Load dataset
iris = load_iris()
df = pd.DataFrame(
    iris.data,
    columns=["sepal_length", "sepal_width",
             "petal_length", "petal_width"]
)
df["target"] = iris.target
# Split dataset
train, test = train_test_split(
    df,
    test_size=0.2,
    random_state=42,
    stratify=df["target"]
)
# Multinomial Logistic Regression
model = smf.mnlogit(
    "target ~ sepal_length + sepal_width + petal_length + petal_width",
    data=train
)
# Fit model
result = model.fit()
# Display summary
print(result.summary())
# Prediction
pred_prob = result.predict(test)
# Convert probabilities to class
y_pred = pred_prob.idxmax(axis=1)
# Actual values
y_test = test["target"]
# Evaluation
print("\nAccuracy:", accuracy_score(y_test, y_pred))
print("\nClassification Report:")
print(classification_report(y_test, y_pred))
