mirror of
https://github.com/ArthurDanjou/ArtStudies.git
synced 2026-01-26 05:54:14 +01:00
Refactor code for improved readability and consistency across multiple Jupyter notebooks
- Added missing commas in various print statements and function calls for better syntax. - Reformatted code to enhance clarity, including breaking long lines and aligning parameters. - Updated function signatures to use float type for sigma parameters instead of int for better precision. - Cleaned up comments and documentation strings for clarity and consistency. - Ensured consistent formatting in plotting functions and data handling.
This commit is contained in:
@@ -1114,7 +1114,12 @@
|
||||
"R = multivariate_normal([0, 0], np.eye(2))\n",
|
||||
"\n",
|
||||
"surf = ax.plot_surface(\n",
|
||||
" X, Y, R.pdf(np.dstack((X, Y))), cmap=\"coolwarm\", linewidth=0, antialiased=False\n",
|
||||
" X,\n",
|
||||
" Y,\n",
|
||||
" R.pdf(np.dstack((X, Y))),\n",
|
||||
" cmap=\"coolwarm\",\n",
|
||||
" linewidth=0,\n",
|
||||
" antialiased=False,\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"fig.colorbar(surf, shrink=0.5, aspect=5)\n",
|
||||
|
||||
@@ -238,7 +238,10 @@
|
||||
"from sklearn.model_selection import train_test_split\n",
|
||||
"\n",
|
||||
"X_train, X_test, y_train, y_test = train_test_split(\n",
|
||||
" X, y, test_size=0.33, random_state=42\n",
|
||||
" X,\n",
|
||||
" y,\n",
|
||||
" test_size=0.33,\n",
|
||||
" random_state=42,\n",
|
||||
")"
|
||||
]
|
||||
},
|
||||
@@ -702,10 +705,10 @@
|
||||
"predictions2 = [knn_class_2(X_train, y_train, data, 3) for data in X_test]\n",
|
||||
"\n",
|
||||
"print(\n",
|
||||
" f\"The accuracy rate of our classifier is {np.sum(predictions == y_test) / len(predictions) * 100}%\"\n",
|
||||
" f\"The accuracy rate of our classifier is {np.sum(predictions == y_test) / len(predictions) * 100}%\",\n",
|
||||
")\n",
|
||||
"print(\n",
|
||||
" f\"The accuracy rate of our classifier is {np.sum(predictions2 == y_test) / len(predictions2) * 100}%\"\n",
|
||||
" f\"The accuracy rate of our classifier is {np.sum(predictions2 == y_test) / len(predictions2) * 100}%\",\n",
|
||||
")"
|
||||
]
|
||||
},
|
||||
@@ -1278,6 +1281,7 @@
|
||||
"\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import numpy as np\n",
|
||||
"\n",
|
||||
"from sklearn.neighbors import KNeighborsClassifier"
|
||||
]
|
||||
},
|
||||
@@ -2094,7 +2098,10 @@
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"X_train, X_test, y_train, y_test = train_test_split(\n",
|
||||
" X, y, test_size=0.33, random_state=42\n",
|
||||
" X,\n",
|
||||
" y,\n",
|
||||
" test_size=0.33,\n",
|
||||
" random_state=42,\n",
|
||||
")"
|
||||
]
|
||||
},
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import pandas as pd\n",
|
||||
"\n",
|
||||
"from sklearn import datasets\n",
|
||||
"\n",
|
||||
"iris = datasets.load_iris(as_frame=True)"
|
||||
@@ -402,7 +403,10 @@
|
||||
"from sklearn.neighbors import KNeighborsClassifier\n",
|
||||
"\n",
|
||||
"X_train, X_test, y_train, y_test = train_test_split(\n",
|
||||
" X, y, test_size=0.33, random_state=42\n",
|
||||
" X,\n",
|
||||
" y,\n",
|
||||
" test_size=0.33,\n",
|
||||
" random_state=42,\n",
|
||||
")\n",
|
||||
"knn_clf = KNeighborsClassifier(n_neighbors=5)\n",
|
||||
"knn_clf.fit(X_train, y_train)\n",
|
||||
@@ -583,7 +587,11 @@
|
||||
],
|
||||
"source": [
|
||||
"X_train_strat, X_test_strat, y_train_strat, y_test_strat = train_test_split(\n",
|
||||
" X, y, test_size=0.33, random_state=42, stratify=y\n",
|
||||
" X,\n",
|
||||
" y,\n",
|
||||
" test_size=0.33,\n",
|
||||
" random_state=42,\n",
|
||||
" stratify=y,\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"y_test_strat.value_counts()"
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
"source": [
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import numpy as np\n",
|
||||
"\n",
|
||||
"from sklearn.linear_model import LogisticRegression"
|
||||
]
|
||||
},
|
||||
@@ -192,7 +193,10 @@
|
||||
"plt.figure(figsize=(8, 8))\n",
|
||||
"\n",
|
||||
"plt.scatter(\n",
|
||||
" X[:, 0], X[:, 1], alpha=0.3, cmap=mcolors.ListedColormap([\"steelblue\", \"tomato\"])\n",
|
||||
" X[:, 0],\n",
|
||||
" X[:, 1],\n",
|
||||
" alpha=0.3,\n",
|
||||
" cmap=mcolors.ListedColormap([\"steelblue\", \"tomato\"]),\n",
|
||||
")"
|
||||
]
|
||||
},
|
||||
@@ -708,20 +712,22 @@
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def mini_batch_SGD(X, y, learning_rate, batch_size, epochs):\n",
|
||||
" \"\"\"\n",
|
||||
" Mini-batch stochastic gradient descent for logistic regression.\n",
|
||||
" \"\"\"Mini-batch stochastic gradient descent for logistic regression.\n",
|
||||
"\n",
|
||||
" Parameters:\n",
|
||||
" Parameters\n",
|
||||
" ----------\n",
|
||||
" X (numpy.ndarray): Input data of shape (n, d), where n is the number of samples and d is the number of features.\n",
|
||||
" y (numpy.ndarray): Labels of shape (n,), where n is the sample size.\n",
|
||||
" learning_rate (float): Learning rate for gradient descent.\n",
|
||||
" batch_size (int): Size of each mini-batch.\n",
|
||||
" epochs (int): Number of epochs to train.\n",
|
||||
"\n",
|
||||
" Returns:\n",
|
||||
" Returns\n",
|
||||
" -------\n",
|
||||
" w (numpy.ndarray): Final weight vector of shape (d,).\n",
|
||||
" b (float): Final bias term.\n",
|
||||
" costs_SGD (list): Cost function values at each step.\n",
|
||||
"\n",
|
||||
" \"\"\"\n",
|
||||
" # Initialization\n",
|
||||
" n, d = X.shape\n",
|
||||
@@ -40783,7 +40789,11 @@
|
||||
],
|
||||
"source": [
|
||||
"w_SGD, b_SGD, cost_SGD = mini_batch_SGD(\n",
|
||||
" X, y, learning_rate=5e-5, batch_size=50, epochs=1000\n",
|
||||
" X,\n",
|
||||
" y,\n",
|
||||
" learning_rate=5e-5,\n",
|
||||
" batch_size=50,\n",
|
||||
" epochs=1000,\n",
|
||||
")"
|
||||
]
|
||||
},
|
||||
@@ -40950,7 +40960,11 @@
|
||||
],
|
||||
"source": [
|
||||
"w_SGD, b_SGD, costs_SGD = mini_batch_SGD(\n",
|
||||
" X, y, learning_rate=5e-4, batch_size=1000, epochs=30\n",
|
||||
" X,\n",
|
||||
" y,\n",
|
||||
" learning_rate=5e-4,\n",
|
||||
" batch_size=1000,\n",
|
||||
" epochs=30,\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"print(\"The parameters computed by stochastic gradient descent are: \", w_SGD, b_SGD)"
|
||||
@@ -41041,7 +41055,10 @@
|
||||
"\n",
|
||||
"X, y = iris.data, iris.target\n",
|
||||
"X_train, X_test, y_train, y_test = train_test_split(\n",
|
||||
" X, y, test_size=0.33, random_state=5\n",
|
||||
" X,\n",
|
||||
" y,\n",
|
||||
" test_size=0.33,\n",
|
||||
" random_state=5,\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"log_reg = LogisticRegression(fit_intercept=True)\n",
|
||||
@@ -41194,7 +41211,7 @@
|
||||
"model.add(tf.keras.layers.Input(shape=[28, 28])) # we specify the input shape\n",
|
||||
"model.add(tf.keras.layers.Flatten()) # we flatten the data\n",
|
||||
"model.add(\n",
|
||||
" tf.keras.layers.Dense(10, activation=\"softmax\")\n",
|
||||
" tf.keras.layers.Dense(10, activation=\"softmax\"),\n",
|
||||
") # 10 labels (figures from 0 to 9)\n",
|
||||
"# activation=\"softmax\" as it is a multiclass problem"
|
||||
]
|
||||
@@ -41237,7 +41254,9 @@
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"model.compile(\n",
|
||||
" loss=\"sparse_categorical_crossentropy\", optimizer=\"sgd\", metrics=[\"accuracy\"]\n",
|
||||
" loss=\"sparse_categorical_crossentropy\",\n",
|
||||
" optimizer=\"sgd\",\n",
|
||||
" metrics=[\"accuracy\"],\n",
|
||||
")"
|
||||
]
|
||||
},
|
||||
|
||||
@@ -898,9 +898,9 @@
|
||||
"ex = pd.DataFrame(\n",
|
||||
" {\n",
|
||||
" \"nom\": [\"Alice\", \"Nicolas\", \"Jean\"],\n",
|
||||
" \"age\": [19, np.NaN, np.NaN],\n",
|
||||
" \"exam\": [15, 14, np.NaN],\n",
|
||||
" }\n",
|
||||
" \"age\": [19, np.nan, np.nan],\n",
|
||||
" \"exam\": [15, 14, np.nan],\n",
|
||||
" },\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"print(\"data : \\n\", ex)\n",
|
||||
@@ -2299,7 +2299,8 @@
|
||||
"\n",
|
||||
"linReg = LinearRegression()\n",
|
||||
"linReg.fit(\n",
|
||||
" Xtrain, Ytrain\n",
|
||||
" Xtrain,\n",
|
||||
" Ytrain,\n",
|
||||
") # no need to scale for OLS if you just want to predict (unless the solver works best with scaled data)\n",
|
||||
"# the predictions should not be different with or without standardization (could differ only owing to numerical problems)\n",
|
||||
"hatY_LinReg = linReg.predict(Xtest)\n",
|
||||
|
||||
@@ -1246,14 +1246,15 @@
|
||||
"# 2. Displaying the vectors :\n",
|
||||
"\n",
|
||||
"print(\n",
|
||||
" \"2. The vectors corresponding to the sms are : \\n\", X.toarray()\n",
|
||||
" \"2. The vectors corresponding to the sms are : \\n\",\n",
|
||||
" X.toarray(),\n",
|
||||
") # X.toarray because\n",
|
||||
"# X is a \"sparse\" matrix.\n",
|
||||
"\n",
|
||||
"# 3. For a new data x_0=\"iphone gratuit\",\n",
|
||||
"# you must also transform x_0 into a numerical vector before predicting.\n",
|
||||
"\n",
|
||||
"vec_x_0 = vec.transform([\"iphone gratuit\"]).toarray() #\n",
|
||||
"vec_x_0 = vec.transform([\"iphone gratuit\"]).toarray()\n",
|
||||
"print(\"3. The numerical vector corresponding to (x_0=iphone gratuit) is \\n\", vec_x_0)"
|
||||
]
|
||||
},
|
||||
@@ -1410,7 +1411,10 @@
|
||||
"from sklearn.model_selection import train_test_split\n",
|
||||
"\n",
|
||||
"X_train, X_test, y_train, y_test = train_test_split(\n",
|
||||
" X, y, test_size=0.30, random_state=50\n",
|
||||
" X,\n",
|
||||
" y,\n",
|
||||
" test_size=0.30,\n",
|
||||
" random_state=50,\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"print(\"size of the training set: \", X_train.shape[0])\n",
|
||||
@@ -1986,7 +1990,7 @@
|
||||
" \"Iphone 15 is now free\",\n",
|
||||
" \"I want coffee\",\n",
|
||||
" \"I want to buy a new iphone\",\n",
|
||||
" ]\n",
|
||||
" ],\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"pred_my_sms = sms_bayes.predict(my_sms)\n",
|
||||
@@ -2055,7 +2059,10 @@
|
||||
"X_copy = (X.copy() >= 127).astype(int)\n",
|
||||
"\n",
|
||||
"X_train, X_test, y_train, y_test = train_test_split(\n",
|
||||
" X_copy, y, test_size=0.25, random_state=42\n",
|
||||
" X_copy,\n",
|
||||
" y,\n",
|
||||
" test_size=0.25,\n",
|
||||
" random_state=42,\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"ber_bayes = BernoulliNB()\n",
|
||||
|
||||
@@ -92,6 +92,7 @@
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import numpy as np\n",
|
||||
"\n",
|
||||
"import tensorflow as tf\n",
|
||||
"\n",
|
||||
"tf.keras.utils.set_random_seed(42)\n",
|
||||
@@ -346,7 +347,7 @@
|
||||
" tf.keras.layers.Dense(300, activation=\"relu\", kernel_initializer=\"he_normal\"),\n",
|
||||
" tf.keras.layers.Dense(100, activation=\"relu\", kernel_initializer=\"he_normal\"),\n",
|
||||
" tf.keras.layers.Dense(10, activation=\"softmax\"),\n",
|
||||
" ]\n",
|
||||
" ],\n",
|
||||
")"
|
||||
]
|
||||
},
|
||||
@@ -691,7 +692,9 @@
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"model.compile(\n",
|
||||
" loss=\"sparse_categorical_crossentropy\", optimizer=\"adam\", metrics=[\"accuracy\"]\n",
|
||||
" loss=\"sparse_categorical_crossentropy\",\n",
|
||||
" optimizer=\"adam\",\n",
|
||||
" metrics=[\"accuracy\"],\n",
|
||||
")"
|
||||
]
|
||||
},
|
||||
@@ -1101,11 +1104,13 @@
|
||||
" tf.keras.layers.Dense(300, activation=\"relu\", kernel_initializer=\"he_normal\"),\n",
|
||||
" tf.keras.layers.Dense(100, activation=\"relu\", kernel_initializer=\"he_normal\"),\n",
|
||||
" tf.keras.layers.Dense(10, activation=\"softmax\"),\n",
|
||||
" ]\n",
|
||||
" ],\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"model_10.compile(\n",
|
||||
" loss=\"sparse_categorical_crossentropy\", optimizer=\"adam\", metrics=[\"accuracy\"]\n",
|
||||
" loss=\"sparse_categorical_crossentropy\",\n",
|
||||
" optimizer=\"adam\",\n",
|
||||
" metrics=[\"accuracy\"],\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"model_10.fit(X_train01, y_train, epochs=10, validation_data=(X_val01, y_val))"
|
||||
@@ -1270,7 +1275,8 @@
|
||||
],
|
||||
"source": [
|
||||
"early_stopping_cb = tf.keras.callbacks.EarlyStopping(\n",
|
||||
" patience=5, restore_best_weights=True\n",
|
||||
" patience=5,\n",
|
||||
" restore_best_weights=True,\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"model = tf.keras.Sequential(\n",
|
||||
@@ -1280,11 +1286,13 @@
|
||||
" tf.keras.layers.Dense(300, activation=\"relu\", kernel_initializer=\"he_normal\"),\n",
|
||||
" tf.keras.layers.Dense(100, activation=\"relu\", kernel_initializer=\"he_normal\"),\n",
|
||||
" tf.keras.layers.Dense(10, activation=\"softmax\"),\n",
|
||||
" ]\n",
|
||||
" ],\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"model.compile(\n",
|
||||
" loss=\"sparse_categorical_crossentropy\", optimizer=\"adam\", metrics=[\"accuracy\"]\n",
|
||||
" loss=\"sparse_categorical_crossentropy\",\n",
|
||||
" optimizer=\"adam\",\n",
|
||||
" metrics=[\"accuracy\"],\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"history2 = model.fit(\n",
|
||||
@@ -1598,10 +1606,12 @@
|
||||
" tf.keras.layers.Input(shape=[28, 28]),\n",
|
||||
" tf.keras.layers.Flatten(),\n",
|
||||
" tf.keras.layers.Dense(10, activation=\"softmax\"),\n",
|
||||
" ]\n",
|
||||
" ],\n",
|
||||
")\n",
|
||||
"reg_log.compile(\n",
|
||||
" loss=\"sparse_categorical_crossentropy\", optimizer=\"adam\", metrics=[\"accuracy\"]\n",
|
||||
" loss=\"sparse_categorical_crossentropy\",\n",
|
||||
" optimizer=\"adam\",\n",
|
||||
" metrics=[\"accuracy\"],\n",
|
||||
")\n",
|
||||
"reg_log.fit(X_train01, y_train, epochs=90, validation_data=(X_val01, y_val))"
|
||||
]
|
||||
@@ -1709,10 +1719,12 @@
|
||||
" tf.keras.layers.Dense(300, activation=\"relu\", kernel_initializer=\"he_normal\"),\n",
|
||||
" tf.keras.layers.Dense(100, activation=\"relu\", kernel_initializer=\"he_normal\"),\n",
|
||||
" tf.keras.layers.Dense(10, activation=\"softmax\"),\n",
|
||||
" ]\n",
|
||||
" ],\n",
|
||||
")\n",
|
||||
"model_ter.compile(\n",
|
||||
" loss=\"sparse_categorical_crossentropy\", optimizer=\"adam\", metrics=[\"accuracy\"]\n",
|
||||
" loss=\"sparse_categorical_crossentropy\",\n",
|
||||
" optimizer=\"adam\",\n",
|
||||
" metrics=[\"accuracy\"],\n",
|
||||
")\n",
|
||||
"model_ter.fit(X_train, y_train, epochs=30, validation_data=(X_val, y_val))"
|
||||
]
|
||||
@@ -1820,10 +1832,12 @@
|
||||
" tf.keras.layers.Dense(300, activation=\"relu\", kernel_initializer=\"he_normal\"),\n",
|
||||
" tf.keras.layers.Dense(100, activation=\"relu\", kernel_initializer=\"he_normal\"),\n",
|
||||
" tf.keras.layers.Dense(10, activation=\"softmax\"),\n",
|
||||
" ]\n",
|
||||
" ],\n",
|
||||
")\n",
|
||||
"model_5.compile(\n",
|
||||
" loss=\"sparse_categorical_crossentropy\", optimizer=\"adam\", metrics=[\"accuracy\"]\n",
|
||||
" loss=\"sparse_categorical_crossentropy\",\n",
|
||||
" optimizer=\"adam\",\n",
|
||||
" metrics=[\"accuracy\"],\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"X_train_far_too_small, X_val_far_too_small = X_train / 25500.0, X_val / 25500.0\n",
|
||||
@@ -1938,16 +1952,22 @@
|
||||
" tf.keras.layers.Input(shape=[28, 28]),\n",
|
||||
" tf.keras.layers.Flatten(),\n",
|
||||
" tf.keras.layers.Dense(\n",
|
||||
" 300, activation=\"sigmoid\", kernel_initializer=\"he_normal\"\n",
|
||||
" 300,\n",
|
||||
" activation=\"sigmoid\",\n",
|
||||
" kernel_initializer=\"he_normal\",\n",
|
||||
" ),\n",
|
||||
" tf.keras.layers.Dense(\n",
|
||||
" 100, activation=\"sigmoid\", kernel_initializer=\"he_normal\"\n",
|
||||
" 100,\n",
|
||||
" activation=\"sigmoid\",\n",
|
||||
" kernel_initializer=\"he_normal\",\n",
|
||||
" ),\n",
|
||||
" tf.keras.layers.Dense(10, activation=\"softmax\"),\n",
|
||||
" ]\n",
|
||||
" ],\n",
|
||||
")\n",
|
||||
"model_sig_norm.compile(\n",
|
||||
" loss=\"sparse_categorical_crossentropy\", optimizer=\"adam\", metrics=[\"accuracy\"]\n",
|
||||
" loss=\"sparse_categorical_crossentropy\",\n",
|
||||
" optimizer=\"adam\",\n",
|
||||
" metrics=[\"accuracy\"],\n",
|
||||
")\n",
|
||||
"model_sig_norm.fit(X_train01, y_train, epochs=30, validation_data=(X_val, y_val))"
|
||||
]
|
||||
@@ -2043,16 +2063,22 @@
|
||||
" tf.keras.layers.Input(shape=[28, 28]),\n",
|
||||
" tf.keras.layers.Flatten(),\n",
|
||||
" tf.keras.layers.Dense(\n",
|
||||
" 300, activation=\"sigmoid\", kernel_initializer=\"he_normal\"\n",
|
||||
" 300,\n",
|
||||
" activation=\"sigmoid\",\n",
|
||||
" kernel_initializer=\"he_normal\",\n",
|
||||
" ),\n",
|
||||
" tf.keras.layers.Dense(\n",
|
||||
" 100, activation=\"sigmoid\", kernel_initializer=\"he_normal\"\n",
|
||||
" 100,\n",
|
||||
" activation=\"sigmoid\",\n",
|
||||
" kernel_initializer=\"he_normal\",\n",
|
||||
" ),\n",
|
||||
" tf.keras.layers.Dense(10, activation=\"softmax\"),\n",
|
||||
" ]\n",
|
||||
" ],\n",
|
||||
")\n",
|
||||
"model_sig_un_norm.compile(\n",
|
||||
" loss=\"sparse_categorical_crossentropy\", optimizer=\"adam\", metrics=[\"accuracy\"]\n",
|
||||
" loss=\"sparse_categorical_crossentropy\",\n",
|
||||
" optimizer=\"adam\",\n",
|
||||
" metrics=[\"accuracy\"],\n",
|
||||
")\n",
|
||||
"model_sig_un_norm.fit(X_train, y_train, epochs=30, validation_data=(X_val, y_val))"
|
||||
]
|
||||
@@ -2220,17 +2246,19 @@
|
||||
" tf.keras.layers.Dense(300, activation=\"relu\"),\n",
|
||||
" tf.keras.layers.Dense(100, activation=\"relu\"),\n",
|
||||
" tf.keras.layers.Dense(10, activation=\"softmax\"),\n",
|
||||
" ]\n",
|
||||
" ],\n",
|
||||
")\n",
|
||||
"model_high_variance.layers[1].set_weights(\n",
|
||||
" [200 * np.random.randn(28 * 28, 300) / 100, np.zeros(300)]\n",
|
||||
" [200 * np.random.randn(28 * 28, 300) / 100, np.zeros(300)],\n",
|
||||
")\n",
|
||||
"model_high_variance.layers[2].set_weights(\n",
|
||||
" [200 * np.random.randn(300, 100) / 100, np.zeros(100)]\n",
|
||||
" [200 * np.random.randn(300, 100) / 100, np.zeros(100)],\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"model_high_variance.compile(\n",
|
||||
" loss=\"sparse_categorical_crossentropy\", optimizer=\"adam\", metrics=[\"accuracy\"]\n",
|
||||
" loss=\"sparse_categorical_crossentropy\",\n",
|
||||
" optimizer=\"adam\",\n",
|
||||
" metrics=[\"accuracy\"],\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"model_high_variance.fit(X_train01, y_train, epochs=60, validation_data=(X_val01, y_val))"
|
||||
|
||||
@@ -543,7 +543,12 @@
|
||||
"plt.plot(X[:, 0], X[:, 1], \".b\", alpha=0.2)\n",
|
||||
"for center in kmeans1.cluster_centers_:\n",
|
||||
" plt.plot(\n",
|
||||
" center[0], center[1], \".\", color=\"red\", markersize=10, label=\"Cluster center\"\n",
|
||||
" center[0],\n",
|
||||
" center[1],\n",
|
||||
" \".\",\n",
|
||||
" color=\"red\",\n",
|
||||
" markersize=10,\n",
|
||||
" label=\"Cluster center\",\n",
|
||||
" )\n",
|
||||
"plt.legend()\n",
|
||||
"plt.show()"
|
||||
@@ -623,7 +628,12 @@
|
||||
"\n",
|
||||
"for center in kmeans1.cluster_centers_:\n",
|
||||
" plt.plot(\n",
|
||||
" center[0], center[1], \".\", color=\"red\", markersize=10, label=\"Cluster center\"\n",
|
||||
" center[0],\n",
|
||||
" center[1],\n",
|
||||
" \".\",\n",
|
||||
" color=\"red\",\n",
|
||||
" markersize=10,\n",
|
||||
" label=\"Cluster center\",\n",
|
||||
" )\n",
|
||||
"plt.legend()\n",
|
||||
"plt.show()"
|
||||
@@ -1529,9 +1539,10 @@
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import tensorflow as tf\n",
|
||||
"from scipy.stats import mode\n",
|
||||
"\n",
|
||||
"import tensorflow as tf\n",
|
||||
"\n",
|
||||
"mnist = tf.keras.datasets.mnist\n",
|
||||
"(X_train, y_train), (X_test, y_test) = mnist.load_data()\n",
|
||||
"\n",
|
||||
@@ -1543,7 +1554,7 @@
|
||||
"\n",
|
||||
"def map_clusters_to_labels(clusters, true_labels):\n",
|
||||
" return np.array(\n",
|
||||
" [mode(true_labels[clusters == i], keepdims=True).mode[0] for i in range(10)]\n",
|
||||
" [mode(true_labels[clusters == i], keepdims=True).mode[0] for i in range(10)],\n",
|
||||
" )\n",
|
||||
"\n",
|
||||
"\n",
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import numpy as np\n",
|
||||
"import pandas as pd\n",
|
||||
"\n",
|
||||
"import tensorflow as tf"
|
||||
]
|
||||
},
|
||||
@@ -187,10 +188,12 @@
|
||||
" kernel_regularizer=tf.keras.regularizers.l2(0.01),\n",
|
||||
" ),\n",
|
||||
" tf.keras.layers.Dense(\n",
|
||||
" 8, activation=\"relu\", kernel_regularizer=tf.keras.regularizers.l2(0.01)\n",
|
||||
" 8,\n",
|
||||
" activation=\"relu\",\n",
|
||||
" kernel_regularizer=tf.keras.regularizers.l2(0.01),\n",
|
||||
" ),\n",
|
||||
" tf.keras.layers.Dense(1, activation=\"sigmoid\"),\n",
|
||||
" ]\n",
|
||||
" ],\n",
|
||||
" )\n",
|
||||
" model.compile(optimizer=\"adam\", loss=\"binary_crossentropy\", metrics=[\"accuracy\"])\n",
|
||||
" return model"
|
||||
@@ -296,7 +299,10 @@
|
||||
"histories = []\n",
|
||||
"\n",
|
||||
"early_stopping = EarlyStopping(\n",
|
||||
" monitor=\"val_loss\", patience=10, restore_best_weights=True, verbose=1\n",
|
||||
" monitor=\"val_loss\",\n",
|
||||
" patience=10,\n",
|
||||
" restore_best_weights=True,\n",
|
||||
" verbose=1,\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"for fold, (train_idx, val_idx) in enumerate(skf.split(X, y), 1):\n",
|
||||
@@ -314,7 +320,9 @@
|
||||
"\n",
|
||||
" # EarlyStopping\n",
|
||||
" callback = tf.keras.callbacks.EarlyStopping(\n",
|
||||
" monitor=\"val_loss\", patience=10, restore_best_weights=True\n",
|
||||
" monitor=\"val_loss\",\n",
|
||||
" patience=10,\n",
|
||||
" restore_best_weights=True,\n",
|
||||
" )\n",
|
||||
"\n",
|
||||
" # Entraînement\n",
|
||||
@@ -433,13 +441,18 @@
|
||||
],
|
||||
"source": [
|
||||
"import numpy as np\n",
|
||||
"\n",
|
||||
"import tensorflow as tf\n",
|
||||
"from sklearn.metrics import classification_report, f1_score\n",
|
||||
"from sklearn.model_selection import train_test_split\n",
|
||||
"from sklearn.preprocessing import StandardScaler\n",
|
||||
"\n",
|
||||
"X_train, X_test, y_train, y_test = train_test_split(\n",
|
||||
" X, y, test_size=0.2, random_state=42, stratify=y\n",
|
||||
" X,\n",
|
||||
" y,\n",
|
||||
" test_size=0.2,\n",
|
||||
" random_state=42,\n",
|
||||
" stratify=y,\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"scaler = StandardScaler()\n",
|
||||
@@ -451,7 +464,9 @@
|
||||
"model.compile(optimizer=\"adam\", loss=\"binary_crossentropy\")\n",
|
||||
"\n",
|
||||
"callback = tf.keras.callbacks.EarlyStopping(\n",
|
||||
" monitor=\"val_loss\", patience=10, restore_best_weights=True\n",
|
||||
" monitor=\"val_loss\",\n",
|
||||
" patience=10,\n",
|
||||
" restore_best_weights=True,\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"history = model.fit(\n",
|
||||
|
||||
Reference in New Issue
Block a user