# import library import pandas as pd, numpy as np, matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from sklearn.neural_network import MLPClassifier from sklearn.metrics import accuracy_score, confusion_matrix, classification_report from sklearn.datasets import make_moons, make_blobs, load_iris, load_wine, load_breast_cancer, load_digits # ========================= # choose one dataset only # ========================= # 1) moons # X,y = make_moons(n_samples=200, noise=.2, random_state=42) # df = pd.DataFrame(X, columns=["x1","x2"]); df["target"] = y # 2) blobs # X,y = make_blobs(n_samples=200, centers=3, random_state=42) # df = pd.DataFrame(X, columns=["x1","x2"]); df["target"] = y # 3) iris d = load_iris() X,y = d.data, d.target df = pd.DataFrame(X, columns=d.feature_names); df["target"] = y # 4) wine # d = load_wine() # X,y = d.data, d.target # df = pd.DataFrame(X, columns=d.feature_names); df["target"] = y # 5) breast cancer # d = load_breast_cancer() # X,y = d.data, d.target # df = pd.DataFrame(X, columns=d.feature_names); df["target"] = y # 6) digits # d = load_digits() # X,y = d.data, d.target # df = pd.DataFrame(X); df["target"] = y # EDA print(df.head()) print(df.info()) print(df.describe()) print(df.isnull().sum()) # missing value treatment for i in df.columns: df[i] = df[i].fillna(df[i].mean()) # normalization f = lambda x: 0.1 + 0.8*(x-x.min())/(x.max()-x.min()) for i in df.columns[:-1]: df[i] = f(df[i]) # input-output X = df.iloc[:,:-1] y = df.iloc[:,-1] # split seed = 210412 # replace by your exam roll x1,x2,y1,y2 = train_test_split(X,y,test_size=.2,random_state=seed) # model fit m = MLPClassifier(hidden_layer_sizes=(10,10), max_iter=2000, random_state=seed) m.fit(x1,y1) # prediction p1,p2,p = m.predict(x1), m.predict(x2), m.predict(X) # accuracy print("Train Accuracy =", accuracy_score(y1,p1)) print("Test Accuracy =", accuracy_score(y2,p2)) print("All Accuracy =", accuracy_score(y,p)) # confusion matrix print("\nConfusion Matrix (Test Data):") print(confusion_matrix(y2,p2)) # classification report print("\nClassification Report (Test Data):") print(classification_report(y2,p2)) # plots plt.scatter(range(len(y1)), y1, label="Actual Train", s=10) plt.scatter(range(len(p1)), p1, label="Predicted Train", s=10) plt.title("Train: Actual vs Predicted") plt.legend() plt.show() plt.scatter(range(len(y2)), y2, label="Actual Test", s=10) plt.scatter(range(len(p2)), p2, label="Predicted Test", s=10) plt.title("Test: Actual vs Predicted") plt.legend() plt.show() plt.scatter(range(len(y)), y, label="Actual All", s=10) plt.scatter(range(len(p)), p, label="Predicted All", s=10) plt.title("Overall: Actual vs Predicted") plt.legend() plt.show()