diff --git a/AI_Part2.ipynb b/AI_Part2.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..5f74031713ed1731922df50df645eccd080f4fc1
--- /dev/null
+++ b/AI_Part2.ipynb
@@ -0,0 +1,281 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "id": "6064e0b1",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "         0            1          2            3           4            5    \\\n",
+      "0  70.399324  127673.0908 -49.572308  127648.0176 -169.578319  127723.2374   \n",
+      "\n",
+      "         6          7          8          9    ...  119  120  121  122  123  \\\n",
+      "0  65.689611  605.91099 -57.003571  626.78553  ...    0    0    0    0    0   \n",
+      "\n",
+      "   124  125  126  127  128  \n",
+      "0    0    0    0    0    0  \n",
+      "\n",
+      "[1 rows x 129 columns]\n"
+     ]
+    }
+   ],
+   "source": [
+    "#Import scikit-learn dataset library\n",
+    "#from sklearn import datasets\n",
+    "from sklearn.model_selection import train_test_split\n",
+    "from sklearn.model_selection import cross_val_score\n",
+    "from sklearn import svm, metrics\n",
+    "from sklearn.ensemble import RandomForestClassifier\n",
+    "from joblib import dump\n",
+    "from sklearn.metrics import confusion_matrix, f1_score\n",
+    "from sklearn.metrics import roc_curve, auc\n",
+    "import matplotlib.pyplot as plt\n",
+    "import seaborn as sns\n",
+    "import pandas as pd\n",
+    "import numpy as np\n",
+    "#Read training datasets\n",
+    "df = pd.read_csv('H:\\AI classification\\TrainingDataMulti.csv', header=None)\n",
+    "\n",
+    "# Print the head of csv document to check\n",
+    "print(df.head(1))\n",
+    "\n",
+    "# The first 128 columns are features\n",
+    "df_feature = df.iloc[:, :128]\n",
+    "\n",
+    "# the 129th column is labels\n",
+    "df_label = df.iloc[:, 128]\n",
+    "\n",
+    "\n",
+    "# Split dataset into training set and test set\n",
+    "X_train, X_test, y_train, y_test = train_test_split(df_feature, df_label, test_size=0.2) # 80% training and 20% test\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "id": "cdc65331",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Accuracy: 0.94\n"
+     ]
+    }
+   ],
+   "source": [
+    "# Create a Randomforest Classifier \n",
+    "clf1 = RandomForestClassifier(n_estimators=200, max_features=78)#\n",
+    "\n",
+    "# Train the model using the training sets\n",
+    "clf1.fit(X_train, y_train)\n",
+    "\n",
+    "# #Predict the response for test dataset\n",
+    "y_pred1 = clf1.predict(X_test)\n",
+    "\n",
+    "print(\"Accuracy:\",metrics.accuracy_score(y_test, y_pred1))\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "id": "ae7d5339",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Scores [0.95       0.93541667 0.93541667 0.93020833 0.93541667]\n",
+      "Mean Scores 0.9372916666666666\n"
+     ]
+    }
+   ],
+   "source": [
+    "# Using Cross-validation to evaluate classifier\n",
+    "scores1 = cross_val_score(clf1, X_train, y_train, cv=5)\n",
+    "\n",
+    "#Print model's Scores\n",
+    "print(\"Scores\", scores1)\n",
+    "print(\"Mean Scores\", np.mean(scores1))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "id": "253d7c20",
+   "metadata": {
+    "scrolled": true
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "['H:/AI classification/RFC_part2.pkl']"
+      ]
+     },
+     "execution_count": 4,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "#Dump the model\n",
+    "dump(clf1, 'H:/AI classification/RFC_part2.pkl')"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "id": "943bcea4",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Load testing dataset\n",
+    "test_data=pd.read_csv('H:\\AI classification\\TestingDataMulti.csv', header=None)\n",
+    "\n",
+    "# Predict Testing dataset\n",
+    "predictions = clf1.predict(test_data)\n",
+    "\n",
+    "# Convert predictions into dataframe format\n",
+    "predictions_df = pd.DataFrame(predictions)\n",
+    "\n",
+    "#Write the predictions to testing dataset\n",
+    "result = pd.concat([test_data,predictions_df], axis=1)\n",
+    "\n",
+    "#Output a csv document\n",
+    "result.to_csv('H:/AI classification/test_pre2.csv', index = False, header = False)\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "id": "8a8a1e04",
+   "metadata": {
+    "scrolled": true
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[2 2 2 2 2 2 1 1 2 2 2 1 1 1 2 2 2 1 1 1 1 1 2 2 2 2 0 2 2 0 0 0 0 1 1 1 1\n",
+      " 1 1 1 1 2 1 2 2 2 2 2 2 1 2 2 2 2 2 2 2 1 1 2 1 1 1 1 1 1 0 0 0 0 0 0 0 0\n",
+      " 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0]\n"
+     ]
+    }
+   ],
+   "source": [
+    "# print precdictions\n",
+    "print(predictions)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "id": "1521abed",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Confusion Matrix:\n",
+      "[[580   2   6]\n",
+      " [ 12 274  20]\n",
+      " [  6  26 274]]\n"
+     ]
+    }
+   ],
+   "source": [
+    "# Create and print confusion matrix\n",
+    "conf_mat = confusion_matrix(y_test, y_pred1)\n",
+    "print(\"Confusion Matrix:\")\n",
+    "print(conf_mat)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "id": "52bac3fa",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "F1 Score: 0.9396875958397739\n"
+     ]
+    }
+   ],
+   "source": [
+    "# Calculating f1 score\n",
+    "f1 = f1_score(y_test, y_pred1, average='weighted')\n",
+    "print(\"F1 Score:\", f1)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "id": "d63a6856",
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 720x504 with 2 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "#Plotting confusion matixs\n",
+    "plt.figure(figsize=(10, 7))\n",
+    "sns.heatmap(conf_mat, annot=True, fmt='d', cmap='YlGnBu')\n",
+    "plt.xlabel('Predicted')\n",
+    "plt.ylabel('Actual')\n",
+    "plt.show()\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "131cc0be",
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.9.12"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}