diff --git a/.Rhistory b/.Rhistory deleted file mode 100644 index e69de29..0000000 diff --git a/.ipynb_checkpoints/Fezile Dlamini-checkpoint.ipynb b/.ipynb_checkpoints/Fezile Dlamini-checkpoint.ipynb deleted file mode 100644 index 2dd9fe7..0000000 --- a/.ipynb_checkpoints/Fezile Dlamini-checkpoint.ipynb +++ /dev/null @@ -1,778 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "_cell_guid": "b1076dfc-b9ad-4769-8c92-a6c4dae69d19", - "_uuid": "8f2839f25d086af736a60e9eeb907d3b93b6e0e5" - }, - "outputs": [], - "source": [ - "# This Python 3 environment comes with many helpful analytics libraries installed\n", - "# It is defined by the kaggle/python docker image: https://github.com/kaggle/docker-python\n", - "# For example, here's several helpful packages to load in \n", - "\n", - "import numpy as np # linear algebra\n", - "import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n", - "\n", - "# Input data files are available in the \"../input/\" directory.\n", - "# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n", - "\n", - "import os\n", - "for dirname, _, filenames in os.walk('/kaggle/input'):\n", - " for filename in filenames:\n", - " print(os.path.join(dirname, filename))\n", - "\n", - "# Any results you write to the current directory are saved as output." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Importing Libraries" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "_cell_guid": "79c7e3d0-c299-4dcb-8224-4455121ee9b0", - "_uuid": "d629ff2d2480ee46fbb7e2d37f6b5fab8052498a" - }, - "outputs": [], - "source": [ - "###Importing libraries\n", - "import pandas\n", - "import scipy\n", - "import numpy\n", - "import matplotlib\n", - "import sklearn\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Loading some libraries\n", - "### These are some of the libraries I think I will need" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from pandas import read_csv\n", - "from pandas.plotting import scatter_matrix\n", - "from matplotlib import pyplot\n", - "from sklearn.model_selection import train_test_split\n", - "from sklearn.model_selection import cross_val_score\n", - "from sklearn.model_selection import StratifiedKFold\n", - "from sklearn.metrics import classification_report\n", - "from sklearn.metrics import confusion_matrix\n", - "from sklearn.metrics import accuracy_score\n", - "from sklearn.linear_model import LogisticRegression\n", - "from sklearn.tree import DecisionTreeClassifier\n", - "from sklearn.neighbors import KNeighborsClassifier\n", - "from sklearn.discriminant_analysis import LinearDiscriminantAnalysis\n", - "from sklearn.naive_bayes import GaussianNB\n", - "from sklearn.svm import SVC" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import warnings\n", - "warnings.filterwarnings('ignore')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Loading My Dataset\n", - "\n", - "##### I am going to first use my training dataset, then the test dataset last." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "train = pandas.read_csv('/kaggle/input/ace-class-assignment/AMP_TrainSet.csv')\n", - "train\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "test= pandas.read_csv('/kaggle/input/ace-class-assignment/Test.csv')\n", - "test" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Inspecting my train dataset" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "train.shape" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "train.isnull().sum() ###this will show the number of null values in my data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "train.count() #returns number of non-null values in my data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### It seems i have no missing values in my data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "train.describe() #returns summary of the whole data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "train.info() #It returns range, column, number of non-null objects of each column, datatype and memory usage" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### This shows that my dataset has 3038 rows (instances) and 12 columns (attributes)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### I will also take a look at how many instances i have for each class" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "train.groupby('CLASS').size()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "train.groupby('CLASS').size().plot(kind='bar')\n", - "pyplot.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### I have two groups of classes, each with 1519 instances" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# DATA VISUALISATION" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### I will start with univariate plots to see each indiviadual variable" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "train.hist(figsize=(16,16))\n", - "pyplot.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "train.corr(method='pearson')['CLASS'] #Here I tried to see the correlation of all attributes with the class" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Multivariate " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "correlations = train.corr()\n", - "# plot correlation matrix\n", - "fig = pyplot.figure()\n", - "ax = fig.add_subplot(111)\n", - "cax = ax.matshow(correlations, vmin=-1, vmax=1)\n", - "fig.colorbar(cax)\n", - "ticks = np.arange(0,9,1)\n", - "ax.set_xticks(ticks)\n", - "ax.set_yticks(ticks)\n", - "ax.set_xticklabels(train.columns)\n", - "ax.set_yticklabels(train.columns)\n", - "pyplot.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### i did this plot in order to see which features are highly correlated as this can be a problem in soome models if some features are used together whereas they are highly correlated." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# EVALUATING ALGORITHMS\n", - "#### I will now evaluate some algorithms and estimate their accuracy on unseen data." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Building models" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "array = train.values\n", - "X = array[:,0:11]\n", - "Y = array[:,11]\n", - "test_size = 0.32\n", - "seed = 3\n", - "X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=test_size,\n", - "random_state=seed)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "len(X_test)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "\n", - "models = []\n", - "models.append(('LR', LogisticRegression(solver='liblinear', multi_class='ovr')))\n", - "models.append(('LDA', LinearDiscriminantAnalysis()))\n", - "models.append(('KNN', KNeighborsClassifier()))\n", - "models.append(('CART', DecisionTreeClassifier()))\n", - "models.append(('NB', GaussianNB()))\n", - "models.append(('SVM', SVC(gamma='auto')))\n", - "# evaluate each model in turn\n", - "results = []\n", - "names = []\n", - "for name, model in models:\n", - " kfold = StratifiedKFold(n_splits=10)\n", - " cv_results = cross_val_score(model, X_train, Y_train, cv=kfold, scoring='accuracy')\n", - " results.append(cv_results)\n", - " names.append(name)\n", - " print('%s: %f (%f)' % (name, cv_results.mean(), cv_results.std()))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Compare Algorithms\n", - "pyplot.boxplot(results, labels=names)\n", - "pyplot.title('Algorithm Comparison')\n", - "pyplot.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### from here, NB is the best performing." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Make predictions on validation dataset\n", - "model = GaussianNB()\n", - "model.fit(X_train, Y_train)\n", - "predictions = model.predict(X_test)\n", - "print(predictions)\n", - "\n", - "#from sklearn.metrics import matthews_corrcoef\n", - "#print('MCC', matthews_corrcoef(model.predict(X_test), Y_test))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#with all features\n", - "from sklearn.model_selection import train_test_split\n", - "from sklearn.naive_bayes import GaussianNB\n", - "\n", - "array = train.values\n", - "X = array[:,0:11]\n", - "Y = array[:,11]\n", - "test_size = 0.32\n", - "seed = 3\n", - "X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=test_size,\n", - "random_state=seed)\n", - "model = GaussianNB()\n", - "model.fit(X_train, Y_train)\n", - "result = model.score(X_test, Y_test)\n", - "print(\"Accuracy: \", (result*100.0))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Evaluate predictions\n", - "print(accuracy_score(Y_test, predictions))\n", - "print(confusion_matrix(Y_test, predictions))\n", - "print(classification_report(Y_test, predictions))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "test" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "Y=train.CLASS\n", - "X=train.drop(\"CLASS\",axis=1)\n", - "OUTPUT=model.fit(X, Y).predict(test.values)\n", - "OUTPUT_1=pd.DataFrame(OUTPUT)\n", - "OUTPUT_1.columns=[\"CLASS\"]\n", - "OUTPUT_1.index.name=\"Index\"\n", - "OUTPUT_1[\"CLASS\"]=OUTPUT_1[\"CLASS\"].map({0.0:False,1.0:True})\n", - "OUTPUT_1.to_csv(\"output\")\n", - "print(OUTPUT_1[\"CLASS\"].unique())\n", - "print(OUTPUT_1[\"CLASS\"].nunique())\n", - "print(OUTPUT_1.groupby(\"CLASS\").size()[0].sum())\n", - "print(OUTPUT_1.groupby(\"CLASS\").size()[1].sum())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#feature selection using feature importance\n", - "X = train.iloc[:,0:11] #independent columns\n", - "y = train.iloc[:,-1] #target column\n", - "from sklearn.ensemble import ExtraTreesClassifier\n", - "import matplotlib.pyplot as plt\n", - "model = ExtraTreesClassifier()\n", - "model.fit(X,y)\n", - "print(model.feature_importances_) #use inbuilt class feature_importances of tree based classifiers\n", - "#plot graph of feature importances for better visualization\n", - "feat_importances = pd.Series(model.feature_importances_, index=X.columns)\n", - "feat_importances.nlargest(10).plot(kind='barh')\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "train.columns" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "newtrain=train.drop([ 'FULL_AURR980107', 'FULL_OOBM850104', 'NT_EFC195', 'AS_DAYM780201', 'AS_FUKS010112', 'CT_RACS820104'], axis=1)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "newtest=test.drop([ 'FULL_AURR980107', 'FULL_OOBM850104', 'NT_EFC195', 'AS_DAYM780201', 'AS_FUKS010112', 'CT_RACS820104'], axis=1)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "newtrain" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "array = newtrain.values\n", - "X = array[:,0:5]\n", - "Y = array[:,-1]\n", - "test_size = 0.32\n", - "seed = 3\n", - "X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=test_size,\n", - "random_state=seed)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "models = []\n", - "models.append(('LR', LogisticRegression(solver='liblinear', multi_class='ovr')))\n", - "models.append(('LDA', LinearDiscriminantAnalysis()))\n", - "models.append(('KNN', KNeighborsClassifier()))\n", - "models.append(('CART', DecisionTreeClassifier()))\n", - "models.append(('NB', GaussianNB()))\n", - "models.append(('SVM', SVC(gamma='auto')))\n", - "# evaluate each model in turn\n", - "results = []\n", - "names = []\n", - "for name, model in models:\n", - " kfold = StratifiedKFold(n_splits=23, shuffle=True)\n", - " cv_results = cross_val_score(model, X_train, Y_train, cv=kfold, scoring='accuracy')\n", - " results.append(cv_results)\n", - " names.append(name)\n", - " print('%s: %f (%f)' % (name, cv_results.mean(), cv_results.std()))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "model = GaussianNB()\n", - "model.fit(X_train, Y_train)\n", - "result = model.score(X_test, Y_test)\n", - "print(\"Accuracy: \", (result*100.0))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Evaluate predictions\n", - "print(accuracy_score(Y_test, predictions))\n", - "print(confusion_matrix(Y_test, predictions))\n", - "print(classification_report(Y_test, predictions))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "Y=newtrain.CLASS\n", - "X=newtrain.drop(\"CLASS\",axis=1)\n", - "OUTPUT=model.fit(X, Y).predict(newtest.values)\n", - "OUTPUT_1=pd.DataFrame(OUTPUT)\n", - "OUTPUT_1.columns=[\"CLASS\"]\n", - "OUTPUT_1.index.name=\"Index\"\n", - "OUTPUT_1[\"CLASS\"]=OUTPUT_1[\"CLASS\"].map({0.0:False,1.0:True})\n", - "OUTPUT_1.to_csv(\"out1\")\n", - "print(OUTPUT_1[\"CLASS\"].unique())\n", - "print(OUTPUT_1[\"CLASS\"].nunique())\n", - "print(OUTPUT_1.groupby(\"CLASS\").size()[0].sum())\n", - "print(OUTPUT_1.groupby(\"CLASS\").size()[1].sum())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#checking accuracy using data with selected features from feature importance\n", - "from sklearn.model_selection import train_test_split\n", - "from sklearn.naive_bayes import GaussianNB\n", - "from sklearn.metrics import matthews_corrcoef\n", - "\n", - "array = train.values\n", - "X = array[:,[0,1,3,5,7]]\n", - "Y = array[:,11]\n", - "test_size = 0.32\n", - "seed = 3\n", - "X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=test_size,\n", - "random_state=seed)\n", - "model = GaussianNB()\n", - "model.fit(X_train, Y_train)\n", - "result = model.score(X_test, Y_test)\n", - "prediction=model.predict(X_test)\n", - "matrix=matthews_corrcoef(Y_test,prediction)\n", - "print(\"Accuracy: \", (result*100.0))\n", - "print(matrix)\n", - "\n", - "# making predictions on the test data\n", - "\n", - "#output=model.predict(test.values)\n", - "#output1=pd.DataFrame(output)\n", - "#output1.columns=['CLASS']\n", - "#output1.index.name='Index'\n", - "#output1['CLASS']=output1['CLASS'].map({0.0:False, 1.0:True})\n", - "\n", - "#print(output1['CLASS'].unique())\n", - "#print(output1['CLASS'].nunique())\n", - "\n", - "#print(output1.groupby('CLASS').size()[0].sum())\n", - "#print(output1.groupby('CLASS').size()[1].sum())\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "array2 = np.array(test)\n", - "X = array2[:,[0,1,3,5,7]]\n", - "x_t=array[:,[0,1,3,5,7]]\n", - "y_t=array[:,11]\n", - "\n", - "#array3 = train.values\n", - "#X_t = array3[:,[0,1,3,5,7]]\n", - "#Y_t=array3[:,10]\n", - "test_size = 0.32\n", - "seed = 3\n", - "#X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=test_size,\n", - "#random_state=seed)\n", - "test=array3[:,[0,1,3,5,7]]\n", - "model = GaussianNB()\n", - "\n", - "#result = model.score(X_t, Y_t)\n", - "model.fit(x_t, y_t)\n", - "prediction=model.predict(X)\n", - "\n", - "#matrix=matthews_corrcoef(Y_t,prediction)\n", - "#print(\"Accuracy: \", (result*100.0))\n", - "#print(matrix)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## FEATURE SELECTION" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#feature selection using Logistic regression\n", - "from sklearn.feature_selection import RFE\n", - "from sklearn.linear_model import LogisticRegression\n", - "\n", - "array_1 = train.values\n", - "X = array_1[:,0:11]\n", - "Y = array_1[:,11]\n", - "# feature extraction\n", - "model = LogisticRegression()\n", - "rfe = RFE(model, 5)\n", - "fit = rfe.fit(X, Y)\n", - "print(\"Num Features: \", fit.n_features_)\n", - "print(\"Selected Features:\", fit.support_)\n", - "print(\"Feature Ranking: \", fit.ranking_)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#checking accuracy using data with selected features from feature importance\n", - "from sklearn.model_selection import train_test_split\n", - "from sklearn.naive_bayes import GaussianNB\n", - "\n", - "array = train.values\n", - "X = array[:,[0,2,3,5,7]]\n", - "Y = array[:,11]\n", - "test_size = 0.32\n", - "seed = 3\n", - "X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=test_size,\n", - "random_state=seed)\n", - "model = GaussianNB()\n", - "model.fit(X_train, Y_train)\n", - "result = model.score(X_test, Y_test)\n", - "print(\"Accuracy: \", (result*100.0))\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#CHECKING ACCURACY WITH ALL FEATURES\n", - "array = train.values\n", - "X = array[:,0:11]\n", - "Y = array[:,11]\n", - "test_size = 0.32\n", - "seed = 3\n", - "X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=test_size,\n", - "random_state=seed)\n", - "model = GaussianNB()\n", - "model.fit(X_train, Y_train)\n", - "result = model.score(X_test, Y_test)\n", - "print(\"Accuracy: \", (result*100.0))\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "train.head(5)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "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.7.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/.ipynb_checkpoints/KAYAGA NASHIM MILVAT-checkpoint.ipynb b/.ipynb_checkpoints/KAYAGA NASHIM MILVAT-checkpoint.ipynb deleted file mode 100644 index 60d7103..0000000 --- a/.ipynb_checkpoints/KAYAGA NASHIM MILVAT-checkpoint.ipynb +++ /dev/null @@ -1,2767 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "_cell_guid": "b1076dfc-b9ad-4769-8c92-a6c4dae69d19", - "_uuid": "8f2839f25d086af736a60e9eeb907d3b93b6e0e5" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "/kaggle/input/ace-class-assignment/Test.csv\n", - "/kaggle/input/ace-class-assignment/AMP_TrainSet.csv\n" - ] - } - ], - "source": [ - "# This Python 3 environment comes with many helpful analytics libraries installed\n", - "# It is defined by the kaggle/python docker image: https://github.com/kaggle/docker-python\n", - "# For example, here's several helpful packages to load in \n", - "\n", - "import numpy as np # linear algebra\n", - "import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns\n", - "# Input data files are available in the \"../input/\" directory.\n", - "# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n", - "\n", - "import os\n", - "for dirname, _, filenames in os.walk('/kaggle/input'):\n", - " for filename in filenames:\n", - " print(os.path.join(dirname, filename))\n", - "\n", - "# Any results you write to the current directory are saved as output." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "_cell_guid": "79c7e3d0-c299-4dcb-8224-4455121ee9b0", - "_uuid": "d629ff2d2480ee46fbb7e2d37f6b5fab8052498a" - }, - "outputs": [], - "source": [ - "import warnings\n", - "warnings.filterwarnings('ignore')" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
FULL_ChargeFULL_AcidicMolPercFULL_AURR980107FULL_DAYM780201FULL_GEOR030101FULL_OOBM850104NT_EFC195AS_MeanAmphiMomentAS_DAYM780201AS_FUKS010112CT_RACS820104
04.03.7040.87373.5190.987-4.83300.38274.5567.2251.234
14.04.4440.89262.4440.931-0.58400.32056.0564.9421.853
22.00.0000.90147.0001.039-5.66400.16447.0005.9691.174
34.50.0000.86969.2220.982-5.42302.01069.2225.4621.138
4-4.021.5911.06171.6820.976-2.00202.75866.0005.5821.453
....................................
753-1.516.0001.10082.8200.991-1.987015.18585.3337.0531.325
754-1.018.1821.08573.4551.027-0.745016.55074.6676.7291.132
755-1.019.0481.10882.1901.033-1.789016.11279.6676.0361.219
756-1.07.1430.95576.7861.0231.141020.63076.7865.6691.111
757-7.017.1431.07884.1861.009-0.066017.16876.6116.6881.305
\n", - "

758 rows × 11 columns

\n", - "
" - ], - "text/plain": [ - " FULL_Charge FULL_AcidicMolPerc FULL_AURR980107 FULL_DAYM780201 \\\n", - "0 4.0 3.704 0.873 73.519 \n", - "1 4.0 4.444 0.892 62.444 \n", - "2 2.0 0.000 0.901 47.000 \n", - "3 4.5 0.000 0.869 69.222 \n", - "4 -4.0 21.591 1.061 71.682 \n", - ".. ... ... ... ... \n", - "753 -1.5 16.000 1.100 82.820 \n", - "754 -1.0 18.182 1.085 73.455 \n", - "755 -1.0 19.048 1.108 82.190 \n", - "756 -1.0 7.143 0.955 76.786 \n", - "757 -7.0 17.143 1.078 84.186 \n", - "\n", - " FULL_GEOR030101 FULL_OOBM850104 NT_EFC195 AS_MeanAmphiMoment \\\n", - "0 0.987 -4.833 0 0.382 \n", - "1 0.931 -0.584 0 0.320 \n", - "2 1.039 -5.664 0 0.164 \n", - "3 0.982 -5.423 0 2.010 \n", - "4 0.976 -2.002 0 2.758 \n", - ".. ... ... ... ... \n", - "753 0.991 -1.987 0 15.185 \n", - "754 1.027 -0.745 0 16.550 \n", - "755 1.033 -1.789 0 16.112 \n", - "756 1.023 1.141 0 20.630 \n", - "757 1.009 -0.066 0 17.168 \n", - "\n", - " AS_DAYM780201 AS_FUKS010112 CT_RACS820104 \n", - "0 74.556 7.225 1.234 \n", - "1 56.056 4.942 1.853 \n", - "2 47.000 5.969 1.174 \n", - "3 69.222 5.462 1.138 \n", - "4 66.000 5.582 1.453 \n", - ".. ... ... ... \n", - "753 85.333 7.053 1.325 \n", - "754 74.667 6.729 1.132 \n", - "755 79.667 6.036 1.219 \n", - "756 76.786 5.669 1.111 \n", - "757 76.611 6.688 1.305 \n", - "\n", - "[758 rows x 11 columns]" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "test = pd.read_csv(\"../input/ace-class-assignment/Test.csv\")\n", - "test" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
FULL_ChargeFULL_AcidicMolPercFULL_AURR980107FULL_DAYM780201FULL_GEOR030101FULL_OOBM850104NT_EFC195AS_MeanAmphiMomentAS_DAYM780201AS_FUKS010112CT_RACS820104CLASS
05.00.0000.95174.8420.975-3.66300.28273.4445.6611.0411
14.05.4050.93171.5950.957-4.01110.60068.2226.5371.4531
25.55.4050.87373.5950.961-2.51200.59369.4444.9341.7221
35.04.1670.89566.2500.999-1.36200.61467.2224.3161.3821
47.58.5370.93264.7200.979-2.09100.61672.9444.5401.5391
\n", - "
" - ], - "text/plain": [ - " FULL_Charge FULL_AcidicMolPerc FULL_AURR980107 FULL_DAYM780201 \\\n", - "0 5.0 0.000 0.951 74.842 \n", - "1 4.0 5.405 0.931 71.595 \n", - "2 5.5 5.405 0.873 73.595 \n", - "3 5.0 4.167 0.895 66.250 \n", - "4 7.5 8.537 0.932 64.720 \n", - "\n", - " FULL_GEOR030101 FULL_OOBM850104 NT_EFC195 AS_MeanAmphiMoment \\\n", - "0 0.975 -3.663 0 0.282 \n", - "1 0.957 -4.011 1 0.600 \n", - "2 0.961 -2.512 0 0.593 \n", - "3 0.999 -1.362 0 0.614 \n", - "4 0.979 -2.091 0 0.616 \n", - "\n", - " AS_DAYM780201 AS_FUKS010112 CT_RACS820104 CLASS \n", - "0 73.444 5.661 1.041 1 \n", - "1 68.222 6.537 1.453 1 \n", - "2 69.444 4.934 1.722 1 \n", - "3 67.222 4.316 1.382 1 \n", - "4 72.944 4.540 1.539 1 " - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#read in the data\n", - "data = pd.read_csv(\"../input/ace-class-assignment/AMP_TrainSet.csv\")\n", - "data.head(5)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(3038, 12)" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#Check the dimensions to the number of rows and columns\n", - "data.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Index(['FULL_Charge', 'FULL_AcidicMolPerc', 'FULL_AURR980107',\n", - " 'FULL_DAYM780201', 'FULL_GEOR030101', 'FULL_OOBM850104', 'NT_EFC195',\n", - " 'AS_MeanAmphiMoment', 'AS_DAYM780201', 'AS_FUKS010112', 'CT_RACS820104',\n", - " 'CLASS'],\n", - " dtype='object')" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data.columns" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "FULL_Charge float64\n", - "FULL_AcidicMolPerc float64\n", - "FULL_AURR980107 float64\n", - "FULL_DAYM780201 float64\n", - "FULL_GEOR030101 float64\n", - "FULL_OOBM850104 float64\n", - "NT_EFC195 int64\n", - "AS_MeanAmphiMoment float64\n", - "AS_DAYM780201 float64\n", - "AS_FUKS010112 float64\n", - "CT_RACS820104 float64\n", - "CLASS int64\n", - "dtype: object" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data.dtypes" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
FULL_ChargeFULL_AcidicMolPercFULL_AURR980107FULL_DAYM780201FULL_GEOR030101FULL_OOBM850104NT_EFC195AS_MeanAmphiMomentAS_DAYM780201AS_FUKS010112CT_RACS820104CLASS
count3038.0000003038.0000003038.0000003038.0000003038.0000003038.0000003038.0000003038.0000003038.0000003038.0000003038.0000003038.000000
mean2.0602378.5215200.97141073.6687600.994007-2.4329270.08854515.68323373.6508285.9113611.2352550.500000
std3.8199297.5866520.1074138.5274890.0313331.7072230.28413311.5756659.1660920.6936890.2100120.500082
min-16.0000000.0000000.68400042.7500000.866000-10.4320000.0000000.04100042.7780003.5330000.7850000.000000
25%0.0000002.5160000.89500068.2940000.974000-3.6060000.0000005.58750067.5560005.4592501.0820000.000000
50%2.0000007.1430000.96300074.0595000.994000-2.2965000.00000014.98850073.6970005.9255001.1840000.500000
75%4.00000013.1580001.04100079.3437501.011000-1.2832500.00000026.80775079.7780006.3820001.3510001.000000
max30.00000046.6670001.451000101.6820001.1960003.5760001.00000051.280000103.1670008.6620002.1920001.000000
\n", - "
" - ], - "text/plain": [ - " FULL_Charge FULL_AcidicMolPerc FULL_AURR980107 FULL_DAYM780201 \\\n", - "count 3038.000000 3038.000000 3038.000000 3038.000000 \n", - "mean 2.060237 8.521520 0.971410 73.668760 \n", - "std 3.819929 7.586652 0.107413 8.527489 \n", - "min -16.000000 0.000000 0.684000 42.750000 \n", - "25% 0.000000 2.516000 0.895000 68.294000 \n", - "50% 2.000000 7.143000 0.963000 74.059500 \n", - "75% 4.000000 13.158000 1.041000 79.343750 \n", - "max 30.000000 46.667000 1.451000 101.682000 \n", - "\n", - " FULL_GEOR030101 FULL_OOBM850104 NT_EFC195 AS_MeanAmphiMoment \\\n", - "count 3038.000000 3038.000000 3038.000000 3038.000000 \n", - "mean 0.994007 -2.432927 0.088545 15.683233 \n", - "std 0.031333 1.707223 0.284133 11.575665 \n", - "min 0.866000 -10.432000 0.000000 0.041000 \n", - "25% 0.974000 -3.606000 0.000000 5.587500 \n", - "50% 0.994000 -2.296500 0.000000 14.988500 \n", - "75% 1.011000 -1.283250 0.000000 26.807750 \n", - "max 1.196000 3.576000 1.000000 51.280000 \n", - "\n", - " AS_DAYM780201 AS_FUKS010112 CT_RACS820104 CLASS \n", - "count 3038.000000 3038.000000 3038.000000 3038.000000 \n", - "mean 73.650828 5.911361 1.235255 0.500000 \n", - "std 9.166092 0.693689 0.210012 0.500082 \n", - "min 42.778000 3.533000 0.785000 0.000000 \n", - "25% 67.556000 5.459250 1.082000 0.000000 \n", - "50% 73.697000 5.925500 1.184000 0.500000 \n", - "75% 79.778000 6.382000 1.351000 1.000000 \n", - "max 103.167000 8.662000 2.192000 1.000000 " - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#Generate descriptive statistics that summarize the central tendency, dispersion, and shape of a dataset’s distribution, excluding NaN values\n", - "data.describe()" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "FULL_Charge 0\n", - "FULL_AcidicMolPerc 0\n", - "FULL_AURR980107 0\n", - "FULL_DAYM780201 0\n", - "FULL_GEOR030101 0\n", - "FULL_OOBM850104 0\n", - "NT_EFC195 0\n", - "AS_MeanAmphiMoment 0\n", - "AS_DAYM780201 0\n", - "AS_FUKS010112 0\n", - "CT_RACS820104 0\n", - "CLASS 0\n", - "dtype: int64" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#number of null values in each column\n", - "data.isnull().sum()\n", - "#since my data has no null values then its good to go" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "#need to know how balanced the class values are\n", - "data.groupby('CLASS').size().plot(kind='bar')" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
FULL_ChargeFULL_AcidicMolPercFULL_AURR980107FULL_DAYM780201FULL_GEOR030101FULL_OOBM850104NT_EFC195AS_MeanAmphiMomentAS_DAYM780201AS_FUKS010112CT_RACS820104CLASS
FULL_Charge1.000000-0.612996-0.490977-0.434603-0.058725-0.2837580.0880680.355477-0.365374-0.0905700.2329290.534602
FULL_AcidicMolPerc-0.6129961.0000000.7947960.5414810.1152010.513344-0.143168-0.4315900.4496210.002334-0.213543-0.598816
FULL_AURR980107-0.4909770.7947961.0000000.5482530.3461390.462712-0.169540-0.4260970.4562600.032958-0.403599-0.584111
FULL_DAYM780201-0.4346030.5414810.5482531.0000000.0101180.334778-0.090058-0.4087930.8941910.055915-0.326792-0.554838
FULL_GEOR030101-0.0587250.1152010.3461390.0101181.0000000.319157-0.230417-0.160269-0.0290850.040480-0.151935-0.260470
FULL_OOBM850104-0.2837580.5133440.4627120.3347780.3191571.000000-0.230561-0.3362970.275640-0.4527690.155304-0.453287
NT_EFC1950.088068-0.143168-0.169540-0.090058-0.230417-0.2305611.0000000.178683-0.0368440.1459240.0808980.260702
AS_MeanAmphiMoment0.355477-0.431590-0.426097-0.408793-0.160269-0.3362970.1786831.000000-0.3223780.0255800.1715240.693552
AS_DAYM780201-0.3653740.4496210.4562600.894191-0.0290850.275640-0.036844-0.3223781.0000000.045562-0.256060-0.437168
AS_FUKS010112-0.0905700.0023340.0329580.0559150.040480-0.4527690.1459240.0255800.0455621.000000-0.4452840.033432
CT_RACS8201040.232929-0.213543-0.403599-0.326792-0.1519350.1553040.0808980.171524-0.256060-0.4452841.0000000.267652
CLASS0.534602-0.598816-0.584111-0.554838-0.260470-0.4532870.2607020.693552-0.4371680.0334320.2676521.000000
\n", - "
" - ], - "text/plain": [ - " FULL_Charge FULL_AcidicMolPerc FULL_AURR980107 \\\n", - "FULL_Charge 1.000000 -0.612996 -0.490977 \n", - "FULL_AcidicMolPerc -0.612996 1.000000 0.794796 \n", - "FULL_AURR980107 -0.490977 0.794796 1.000000 \n", - "FULL_DAYM780201 -0.434603 0.541481 0.548253 \n", - "FULL_GEOR030101 -0.058725 0.115201 0.346139 \n", - "FULL_OOBM850104 -0.283758 0.513344 0.462712 \n", - "NT_EFC195 0.088068 -0.143168 -0.169540 \n", - "AS_MeanAmphiMoment 0.355477 -0.431590 -0.426097 \n", - "AS_DAYM780201 -0.365374 0.449621 0.456260 \n", - "AS_FUKS010112 -0.090570 0.002334 0.032958 \n", - "CT_RACS820104 0.232929 -0.213543 -0.403599 \n", - "CLASS 0.534602 -0.598816 -0.584111 \n", - "\n", - " FULL_DAYM780201 FULL_GEOR030101 FULL_OOBM850104 \\\n", - "FULL_Charge -0.434603 -0.058725 -0.283758 \n", - "FULL_AcidicMolPerc 0.541481 0.115201 0.513344 \n", - "FULL_AURR980107 0.548253 0.346139 0.462712 \n", - "FULL_DAYM780201 1.000000 0.010118 0.334778 \n", - "FULL_GEOR030101 0.010118 1.000000 0.319157 \n", - "FULL_OOBM850104 0.334778 0.319157 1.000000 \n", - "NT_EFC195 -0.090058 -0.230417 -0.230561 \n", - "AS_MeanAmphiMoment -0.408793 -0.160269 -0.336297 \n", - "AS_DAYM780201 0.894191 -0.029085 0.275640 \n", - "AS_FUKS010112 0.055915 0.040480 -0.452769 \n", - "CT_RACS820104 -0.326792 -0.151935 0.155304 \n", - "CLASS -0.554838 -0.260470 -0.453287 \n", - "\n", - " NT_EFC195 AS_MeanAmphiMoment AS_DAYM780201 \\\n", - "FULL_Charge 0.088068 0.355477 -0.365374 \n", - "FULL_AcidicMolPerc -0.143168 -0.431590 0.449621 \n", - "FULL_AURR980107 -0.169540 -0.426097 0.456260 \n", - "FULL_DAYM780201 -0.090058 -0.408793 0.894191 \n", - "FULL_GEOR030101 -0.230417 -0.160269 -0.029085 \n", - "FULL_OOBM850104 -0.230561 -0.336297 0.275640 \n", - "NT_EFC195 1.000000 0.178683 -0.036844 \n", - "AS_MeanAmphiMoment 0.178683 1.000000 -0.322378 \n", - "AS_DAYM780201 -0.036844 -0.322378 1.000000 \n", - "AS_FUKS010112 0.145924 0.025580 0.045562 \n", - "CT_RACS820104 0.080898 0.171524 -0.256060 \n", - "CLASS 0.260702 0.693552 -0.437168 \n", - "\n", - " AS_FUKS010112 CT_RACS820104 CLASS \n", - "FULL_Charge -0.090570 0.232929 0.534602 \n", - "FULL_AcidicMolPerc 0.002334 -0.213543 -0.598816 \n", - "FULL_AURR980107 0.032958 -0.403599 -0.584111 \n", - "FULL_DAYM780201 0.055915 -0.326792 -0.554838 \n", - "FULL_GEOR030101 0.040480 -0.151935 -0.260470 \n", - "FULL_OOBM850104 -0.452769 0.155304 -0.453287 \n", - "NT_EFC195 0.145924 0.080898 0.260702 \n", - "AS_MeanAmphiMoment 0.025580 0.171524 0.693552 \n", - "AS_DAYM780201 0.045562 -0.256060 -0.437168 \n", - "AS_FUKS010112 1.000000 -0.445284 0.033432 \n", - "CT_RACS820104 -0.445284 1.000000 0.267652 \n", - "CLASS 0.033432 0.267652 1.000000 " - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#Its a good idea to review all the pairwise correlations of the attributes in the dataset because some machine learning algorithm like linear and logistic regression can suffer poor performance if there are highly c orrelated attributes in the dataset\n", - "data.corr(method='pearson')" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "#plot a heat map to show the correlation of the data\n", - "plt.figure(figsize=(8,8))\n", - "sns.heatmap(data.corr(method='pearson'))\n" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "FULL_Charge 0.534602\n", - "FULL_AcidicMolPerc -0.598816\n", - "FULL_AURR980107 -0.584111\n", - "FULL_DAYM780201 -0.554838\n", - "FULL_GEOR030101 -0.260470\n", - "FULL_OOBM850104 -0.453287\n", - "NT_EFC195 0.260702\n", - "AS_MeanAmphiMoment 0.693552\n", - "AS_DAYM780201 -0.437168\n", - "AS_FUKS010112 0.033432\n", - "CT_RACS820104 0.267652\n", - "CLASS 1.000000\n", - "Name: CLASS, dtype: float64" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#also checked the corelation in regards to the class since am trying to build a ML agorithm for that class\n", - "data.corr(method='pearson')['CLASS']" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.figure(figsize=(18,18))\n", - "data.hist()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## " - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - " data.skew().plot(kind='bar')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## understanding data with visualization" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Histogram\n", - "### I want to understand each attribute of my dataset independently" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Data pre-processing" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.figure(figsize=(20,20))\n", - "data.hist()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Standardize data" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[ 7.69712416e-01 -1.12341031e+00 -1.90047029e-01 1.37605977e-01\n", - " -6.06718766e-01 -7.20629784e-01 -3.11684110e-01 -1.33070267e+00\n", - " -2.25681314e-02 -3.60971652e-01 -9.25122883e-01]\n", - " [ 5.07884366e-01 -4.10857567e-01 -3.76275096e-01 -2.43225309e-01\n", - " -1.18128598e+00 -9.24503172e-01 3.20837658e+00 -1.30322672e+00\n", - " -5.92370366e-01 9.02050407e-01 1.03699430e+00]\n", - " [ 9.00626442e-01 -4.10857567e-01 -9.16336490e-01 -8.65106417e-03\n", - " -1.05360437e+00 -4.63244125e-02 -3.11684110e-01 -1.30383154e+00\n", - " -4.59030969e-01 -1.40916462e+00 2.31808537e+00]\n", - " [ 7.69712416e-01 -5.74065761e-01 -7.11485617e-01 -8.70124978e-01\n", - " 1.59370848e-01 6.27395116e-01 -3.11684110e-01 -1.30201709e+00\n", - " -7.01486075e-01 -2.30020073e+00 6.98862456e-01]\n", - " [ 1.42428254e+00 2.04070778e-03 -3.66963693e-01 -1.04957427e+00\n", - " -4.79037163e-01 2.00315519e-01 -3.11684110e-01 -1.30184429e+00\n", - " -7.71259861e-02 -1.97723618e+00 1.44656245e+00]]\n" - ] - } - ], - "source": [ - "from sklearn.preprocessing import StandardScaler\n", - "array = data.values\n", - "#separate array into input and output components\n", - "X = array[:,0:11]\n", - "Y = array[:,11]\n", - "scaler = StandardScaler().fit(X)\n", - "rescaledX = scaler.transform(X)\n", - "# summarize transformed data\n", - "#set_printoptions(precision=3)\n", - "print(rescaledX[0:5,:])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Feature selection\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Chose Recursive Feature Elimination because i dont have the library for my data in this case\n" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Num Features: 8\n", - "Selected Features: [ True False True False True True True True False True True]\n", - "Feature Ranking: [1 3 1 2 1 1 1 1 4 1 1]\n" - ] - } - ], - "source": [ - "from sklearn.feature_selection import RFE\n", - "from sklearn.linear_model import LogisticRegression\n", - "\n", - "array1 = data.values\n", - "X = array1[:,0:11]\n", - "Y = array[:,11]\n", - "# feature extraction\n", - "model = LogisticRegression()\n", - "rfe = RFE(model,8)\n", - "fit = rfe.fit(X,Y)\n", - "print(\"Num Features:\", fit.n_features_)\n", - "print(\"Selected Features:\", fit.support_)\n", - "print(\"Feature Ranking:\", fit.ranking_)" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Index(['FULL_Charge', 'FULL_AcidicMolPerc', 'FULL_AURR980107',\n", - " 'FULL_DAYM780201', 'FULL_GEOR030101', 'FULL_OOBM850104', 'NT_EFC195',\n", - " 'AS_MeanAmphiMoment', 'AS_DAYM780201', 'AS_FUKS010112', 'CT_RACS820104',\n", - " 'CLASS'],\n", - " dtype='object')" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data.columns" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
FULL_ChargeFULL_AURR980107FULL_GEOR030101FULL_OOBM850104NT_EFC195AS_MeanAmphiMomentAS_FUKS010112CT_RACS820104CLASS
05.00.9510.975-3.66300.2825.6611.0411
14.00.9310.957-4.01110.6006.5371.4531
25.50.8730.961-2.51200.5934.9341.7221
35.00.8950.999-1.36200.6144.3161.3821
47.50.9320.979-2.09100.6164.5401.5391
..............................
30331.00.9451.006-2.151016.7065.5981.1440
3034-6.51.1331.015-1.675016.8976.1941.6390
3035-1.51.0910.991-0.918016.9185.8891.1310
30362.00.8491.017-2.722017.1316.0551.2700
3037-1.01.0660.998-2.080017.1515.8531.1360
\n", - "

3038 rows × 9 columns

\n", - "
" - ], - "text/plain": [ - " FULL_Charge FULL_AURR980107 FULL_GEOR030101 FULL_OOBM850104 \\\n", - "0 5.0 0.951 0.975 -3.663 \n", - "1 4.0 0.931 0.957 -4.011 \n", - "2 5.5 0.873 0.961 -2.512 \n", - "3 5.0 0.895 0.999 -1.362 \n", - "4 7.5 0.932 0.979 -2.091 \n", - "... ... ... ... ... \n", - "3033 1.0 0.945 1.006 -2.151 \n", - "3034 -6.5 1.133 1.015 -1.675 \n", - "3035 -1.5 1.091 0.991 -0.918 \n", - "3036 2.0 0.849 1.017 -2.722 \n", - "3037 -1.0 1.066 0.998 -2.080 \n", - "\n", - " NT_EFC195 AS_MeanAmphiMoment AS_FUKS010112 CT_RACS820104 CLASS \n", - "0 0 0.282 5.661 1.041 1 \n", - "1 1 0.600 6.537 1.453 1 \n", - "2 0 0.593 4.934 1.722 1 \n", - "3 0 0.614 4.316 1.382 1 \n", - "4 0 0.616 4.540 1.539 1 \n", - "... ... ... ... ... ... \n", - "3033 0 16.706 5.598 1.144 0 \n", - "3034 0 16.897 6.194 1.639 0 \n", - "3035 0 16.918 5.889 1.131 0 \n", - "3036 0 17.131 6.055 1.270 0 \n", - "3037 0 17.151 5.853 1.136 0 \n", - "\n", - "[3038 rows x 9 columns]" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "drop=data.drop(['FULL_AcidicMolPerc', 'FULL_DAYM780201', 'AS_DAYM780201'],axis=1)\n", - "drop\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
FULL_ChargeFULL_AURR980107FULL_GEOR030101FULL_OOBM850104NT_EFC195AS_MeanAmphiMomentAS_FUKS010112CT_RACS820104
04.00.8730.987-4.83300.3827.2251.234
14.00.8920.931-0.58400.3204.9421.853
22.00.9011.039-5.66400.1645.9691.174
34.50.8690.982-5.42302.0105.4621.138
4-4.01.0610.976-2.00202.7585.5821.453
...........................
753-1.51.1000.991-1.987015.1857.0531.325
754-1.01.0851.027-0.745016.5506.7291.132
755-1.01.1081.033-1.789016.1126.0361.219
756-1.00.9551.0231.141020.6305.6691.111
757-7.01.0781.009-0.066017.1686.6881.305
\n", - "

758 rows × 8 columns

\n", - "
" - ], - "text/plain": [ - " FULL_Charge FULL_AURR980107 FULL_GEOR030101 FULL_OOBM850104 \\\n", - "0 4.0 0.873 0.987 -4.833 \n", - "1 4.0 0.892 0.931 -0.584 \n", - "2 2.0 0.901 1.039 -5.664 \n", - "3 4.5 0.869 0.982 -5.423 \n", - "4 -4.0 1.061 0.976 -2.002 \n", - ".. ... ... ... ... \n", - "753 -1.5 1.100 0.991 -1.987 \n", - "754 -1.0 1.085 1.027 -0.745 \n", - "755 -1.0 1.108 1.033 -1.789 \n", - "756 -1.0 0.955 1.023 1.141 \n", - "757 -7.0 1.078 1.009 -0.066 \n", - "\n", - " NT_EFC195 AS_MeanAmphiMoment AS_FUKS010112 CT_RACS820104 \n", - "0 0 0.382 7.225 1.234 \n", - "1 0 0.320 4.942 1.853 \n", - "2 0 0.164 5.969 1.174 \n", - "3 0 2.010 5.462 1.138 \n", - "4 0 2.758 5.582 1.453 \n", - ".. ... ... ... ... \n", - "753 0 15.185 7.053 1.325 \n", - "754 0 16.550 6.729 1.132 \n", - "755 0 16.112 6.036 1.219 \n", - "756 0 20.630 5.669 1.111 \n", - "757 0 17.168 6.688 1.305 \n", - "\n", - "[758 rows x 8 columns]" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "drop_test = test.drop(['FULL_AcidicMolPerc', 'FULL_DAYM780201', 'AS_DAYM780201'],axis=1)\n", - "drop_test" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [], - "source": [ - "seleceted_train = X[:,fit.support_]\n", - "selected_test = test.values[:,fit.support_]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Evaluate the Performance of Machine Learning Algorithms with Resampling¶\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Split into Train and Test Sets" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Accuracy: 91.55701754385966\n" - ] - } - ], - "source": [ - "from sklearn.model_selection import train_test_split\n", - "from sklearn.linear_model import LogisticRegression\n", - "\n", - "array = data.values\n", - "X = array[:,0:11]\n", - "Y = array[:,11]\n", - "test_size = 0.30\n", - "seed = 7\n", - "X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=test_size,\n", - "random_state=seed)\n", - "model = LogisticRegression()\n", - "model.fit(X_train, Y_train)\n", - "result = model.score(X_test, Y_test)\n", - "print(\"Accuracy: \", (result*100.0))\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## K-fold Cross Validation" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Accuracy: (83.5359128018065, 27.08521320979506)\n" - ] - } - ], - "source": [ - "from sklearn.model_selection import KFold\n", - "from sklearn.model_selection import cross_val_score\n", - "\n", - "array = data.values\n", - "X = array[:,0:11]\n", - "Y = array[:,11]\n", - "\n", - "num_folds = 10 #number of folds to use\n", - "seed = 7 #reproducibility\n", - "\n", - "kfold = KFold(n_splits=num_folds, random_state=seed)\n", - "model = LogisticRegression()\n", - "results = cross_val_score(model, X, Y, cv=kfold)\n", - "\n", - "print(f\"Accuracy:\", (results.mean()*100.0, results.std()*100.0))\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Leave One Out Cross Validation" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Accuracy: (91.4417379855168, 27.974673416141517)\n" - ] - } - ], - "source": [ - "from sklearn.model_selection import LeaveOneOut\n", - "from sklearn.model_selection import cross_val_score\n", - "\n", - "array = data.values\n", - "X = array[:,0:11]\n", - "Y = array[:,11]\n", - "num_folds = 10\n", - "loocv = LeaveOneOut()\n", - "model = LogisticRegression()\n", - "results = cross_val_score(model, X, Y, cv=loocv)\n", - "print(\"Accuracy:\", (results.mean()*100.0, results.std()*100.0))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Repeated Random Test-Train Splits" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Accuracy: (91.30482456140349, 0.5803122202806698)\n" - ] - } - ], - "source": [ - "from sklearn.model_selection import ShuffleSplit\n", - "from sklearn.model_selection import cross_val_score\n", - "\n", - "array = data.values\n", - "X = array[:,0:11]\n", - "Y = array[:,11]\n", - "n_splits = 10\n", - "test_size = 0.30\n", - "seed = 7\n", - "kfold = ShuffleSplit(n_splits=n_splits, test_size=test_size, random_state=seed)\n", - "model = LogisticRegression()\n", - "results = cross_val_score(model, X, Y, cv=kfold)\n", - "print(\"Accuracy: \" , (results.mean()*100.0, results.std()*100.0))\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Machine Learning Algorithm Performance Metrics" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Algorithms Overview\n", - "### linear machine learning algorithms:\n", - "\n", - " Logistic Regression.\n", - " Linear Discriminant Analysis.\n", - "### onlinear machine learning algorithms\n", - "\n", - " k-Nearest Neighbors.\n", - " Naive Bayes.\n", - " Classication and Regression Trees.\n", - " Support Vector Machines.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Linear Machine Learning Algorithms" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Logistic Regression" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.835359128018065\n", - "MCC: 0.8342865299822478\n", - "[False True]\n", - "False: 383\n", - "True: 375\n" - ] - } - ], - "source": [ - "# Logistic Regression Classification\n", - "from pandas import read_csv\n", - "from sklearn.model_selection import KFold\n", - "from sklearn.model_selection import cross_val_score\n", - "from sklearn.linear_model import LogisticRegression\n", - "\n", - "array = data.values\n", - "X = array[:,0:11]\n", - "Y = array[:,11]\n", - "num_folds = 10\n", - "kfold = KFold(n_splits=10, random_state=7)\n", - "model = LogisticRegression()\n", - "results = cross_val_score(model, X, Y, cv=kfold)\n", - "print(results.mean())\n", - "\n", - "model.fit(X,Y)\n", - "output = model.predict(test.values)\n", - "\n", - "from sklearn.metrics import matthews_corrcoef\n", - "mcc = matthews_corrcoef(model.predict(X),Y)\n", - "print('MCC:',mcc)\n", - " \n", - "my_report = pd.DataFrame(output)\n", - "my_report.columns = ['CLASS']\n", - "my_report.index.name = \"Index\"\n", - "my_report['CLASS']=my_report['CLASS'].map({0.0:False, 1.0:True})\n", - "my_report.to_csv(\"report_XGB.csv\")\n", - "\n", - "print(my_report['CLASS'].unique())\n", - "print('False: ',my_report.groupby('CLASS').size()[0].sum())\n", - "print('True: ',my_report.groupby('CLASS').size()[1].sum())" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
FULL_ChargeFULL_AURR980107FULL_GEOR030101FULL_OOBM850104NT_EFC195AS_MeanAmphiMomentAS_FUKS010112CT_RACS820104CLASS
05.00.9510.975-3.66300.2825.6611.0411
14.00.9310.957-4.01110.6006.5371.4531
25.50.8730.961-2.51200.5934.9341.7221
35.00.8950.999-1.36200.6144.3161.3821
47.50.9320.979-2.09100.6164.5401.5391
..............................
30331.00.9451.006-2.151016.7065.5981.1440
3034-6.51.1331.015-1.675016.8976.1941.6390
3035-1.51.0910.991-0.918016.9185.8891.1310
30362.00.8491.017-2.722017.1316.0551.2700
3037-1.01.0660.998-2.080017.1515.8531.1360
\n", - "

3038 rows × 9 columns

\n", - "
" - ], - "text/plain": [ - " FULL_Charge FULL_AURR980107 FULL_GEOR030101 FULL_OOBM850104 \\\n", - "0 5.0 0.951 0.975 -3.663 \n", - "1 4.0 0.931 0.957 -4.011 \n", - "2 5.5 0.873 0.961 -2.512 \n", - "3 5.0 0.895 0.999 -1.362 \n", - "4 7.5 0.932 0.979 -2.091 \n", - "... ... ... ... ... \n", - "3033 1.0 0.945 1.006 -2.151 \n", - "3034 -6.5 1.133 1.015 -1.675 \n", - "3035 -1.5 1.091 0.991 -0.918 \n", - "3036 2.0 0.849 1.017 -2.722 \n", - "3037 -1.0 1.066 0.998 -2.080 \n", - "\n", - " NT_EFC195 AS_MeanAmphiMoment AS_FUKS010112 CT_RACS820104 CLASS \n", - "0 0 0.282 5.661 1.041 1 \n", - "1 1 0.600 6.537 1.453 1 \n", - "2 0 0.593 4.934 1.722 1 \n", - "3 0 0.614 4.316 1.382 1 \n", - "4 0 0.616 4.540 1.539 1 \n", - "... ... ... ... ... ... \n", - "3033 0 16.706 5.598 1.144 0 \n", - "3034 0 16.897 6.194 1.639 0 \n", - "3035 0 16.918 5.889 1.131 0 \n", - "3036 0 17.131 6.055 1.270 0 \n", - "3037 0 17.151 5.853 1.136 0 \n", - "\n", - "[3038 rows x 9 columns]" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "drop" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
FULL_ChargeFULL_AURR980107FULL_GEOR030101FULL_OOBM850104NT_EFC195AS_MeanAmphiMomentAS_FUKS010112CT_RACS820104
04.00.8730.987-4.83300.3827.2251.234
14.00.8920.931-0.58400.3204.9421.853
22.00.9011.039-5.66400.1645.9691.174
34.50.8690.982-5.42302.0105.4621.138
4-4.01.0610.976-2.00202.7585.5821.453
...........................
753-1.51.1000.991-1.987015.1857.0531.325
754-1.01.0851.027-0.745016.5506.7291.132
755-1.01.1081.033-1.789016.1126.0361.219
756-1.00.9551.0231.141020.6305.6691.111
757-7.01.0781.009-0.066017.1686.6881.305
\n", - "

758 rows × 8 columns

\n", - "
" - ], - "text/plain": [ - " FULL_Charge FULL_AURR980107 FULL_GEOR030101 FULL_OOBM850104 \\\n", - "0 4.0 0.873 0.987 -4.833 \n", - "1 4.0 0.892 0.931 -0.584 \n", - "2 2.0 0.901 1.039 -5.664 \n", - "3 4.5 0.869 0.982 -5.423 \n", - "4 -4.0 1.061 0.976 -2.002 \n", - ".. ... ... ... ... \n", - "753 -1.5 1.100 0.991 -1.987 \n", - "754 -1.0 1.085 1.027 -0.745 \n", - "755 -1.0 1.108 1.033 -1.789 \n", - "756 -1.0 0.955 1.023 1.141 \n", - "757 -7.0 1.078 1.009 -0.066 \n", - "\n", - " NT_EFC195 AS_MeanAmphiMoment AS_FUKS010112 CT_RACS820104 \n", - "0 0 0.382 7.225 1.234 \n", - "1 0 0.320 4.942 1.853 \n", - "2 0 0.164 5.969 1.174 \n", - "3 0 2.010 5.462 1.138 \n", - "4 0 2.758 5.582 1.453 \n", - ".. ... ... ... ... \n", - "753 0 15.185 7.053 1.325 \n", - "754 0 16.550 6.729 1.132 \n", - "755 0 16.112 6.036 1.219 \n", - "756 0 20.630 5.669 1.111 \n", - "757 0 17.168 6.688 1.305 \n", - "\n", - "[758 rows x 8 columns]" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "drop_test" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Linear Discriminant Analysis¶\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from sklearn.discriminant_analysis import LinearDiscriminantAnalysis\n", - "\n", - "\n", - "array = data.values\n", - "X = array[:,0:11]\n", - "Y = array[:,11]\n", - "num_folds = 10\n", - "kfold = KFold(n_splits=10, random_state=7)\n", - "model = LinearDiscriminantAnalysis()\n", - "results = cross_val_score(model, X, Y, cv=kfold)\n", - "print(results.mean())\n", - "\n", - "\n", - "model.fit(X,Y)\n", - "output = model.predict(test.values)\n", - "\n", - "from sklearn.metrics import matthews_corrcoef\n", - "mcc = matthews_corrcoef(model.predict(X),Y)\n", - "print('MCC:',mcc)\n", - " \n", - "lda_report = pd.DataFrame(output)\n", - "lda_report.columns = ['CLASS']\n", - "lda_report.index.name = \"Index\"\n", - "lda_report['CLASS']=lda_report['CLASS'].map({0.0:False, 1.0:True})\n", - "lda_report.to_csv(\"ldareport.csv\")\n", - "\n", - "print(lda_report['CLASS'].unique())\n", - "print('False: ',lda_report.groupby('CLASS').size()[0].sum())\n", - "print('True: ',lda_report.groupby('CLASS').size()[1].sum())\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Nonlinear Machine Learning Algorithms" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### k-Nearest Neighbors" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.8027933385443807\n", - "MCC: 0.8690586462107053\n", - "[False True]\n", - "False: 402\n", - "True: 356\n" - ] - } - ], - "source": [ - "from sklearn.neighbors import KNeighborsClassifier\n", - "\n", - "array = data.values\n", - "X = array[:,0:11]\n", - "Y = array[:,11]\n", - "num_folds = 10\n", - "kfold = KFold(n_splits=10, random_state=7)\n", - "model = KNeighborsClassifier()\n", - "results = cross_val_score(model, X, Y, cv=kfold)\n", - "print(results.mean())\n", - "\n", - "\n", - "\n", - "model.fit(X,Y)\n", - "output = model.predict(test.values)\n", - "\n", - "from sklearn.metrics import matthews_corrcoef\n", - "mcc = matthews_corrcoef(model.predict(X),Y)\n", - "print('MCC:',mcc)\n", - " \n", - "report_k = pd.DataFrame(output)\n", - "report_k.columns = ['CLASS']\n", - "report_k.index.name = \"Index\"\n", - "report_k['CLASS']=report_k['CLASS'].map({0.0:False, 1.0:True})\n", - "report_k.to_csv(\"report_k.csv\")\n", - "\n", - "\n", - "print(report_k['CLASS'].unique())\n", - "print('False: ',report_k.groupby('CLASS').size()[0].sum())\n", - "print('True: ',report_k.groupby('CLASS').size()[1].sum())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Naive Bayes" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.880815746048289\n", - "MCC: 0.8407203694376205\n", - "[ True False]\n", - "False: 370\n", - "True: 388\n" - ] - } - ], - "source": [ - "from sklearn.naive_bayes import GaussianNB\n", - "array = data.values\n", - "X = array[:,0:11]\n", - "Y = array[:,11]\n", - "kfold = KFold(n_splits=10, random_state=7)\n", - "model = GaussianNB()\n", - "results = cross_val_score(model, X, Y, cv=kfold)\n", - "print(results.mean())\n", - "\n", - "\n", - "model.fit(X,Y)\n", - "output = model.predict(test.values)\n", - "\n", - "from sklearn.metrics import matthews_corrcoef\n", - "mcc = matthews_corrcoef(model.predict(X),Y)\n", - "print('MCC:',mcc)\n", - " \n", - "report_bayes = pd.DataFrame(output)\n", - "report_bayes.columns = ['CLASS']\n", - "report_bayes.index.name = \"Index\"\n", - "report_bayes['CLASS']=report_bayes['CLASS'].map({0.0:False, 1.0:True})\n", - "report_bayes.to_csv(\"report_bayes.csv\")\n", - "\n", - "\n", - "print(report_bayes['CLASS'].unique())\n", - "print('False: ',report_bayes.groupby('CLASS').size()[0].sum())\n", - "print('True: ',report_bayes.groupby('CLASS').size()[1].sum())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Classiffication and Regression Trees" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from sklearn.tree import DecisionTreeClassifier\n", - "array = data.values\n", - "X = array[:,0:11]\n", - "Y = array[:,11]\n", - "kfold = KFold(n_splits=10, random_state=7)\n", - "model = DecisionTreeClassifier()\n", - "results = cross_val_score(model, X, Y, cv=kfold)\n", - "print(results.mean())\n", - "\n", - "\n", - "model.fit(X,Y)\n", - "output = model.predict(test.values)\n", - "\n", - "from sklearn.metrics import matthews_corrcoef\n", - "mcc = matthews_corrcoef(model.predict(X),Y)\n", - "print('MCC:',mcc)\n", - " \n", - "report_tree = pd.DataFrame(output)\n", - "report_tree.columns = ['CLASS']\n", - "report_tree.index.name = \"Index\"\n", - "report_tree['CLASS']=report_tree['CLASS'].map({0.0:False, 1.0:True})\n", - "report_tree.to_csv(\"report_tree.csv\")\n", - "\n", - "\n", - "print(report_tree['CLASS'].unique())\n", - "print('False: ',report_tree.groupby('CLASS').size()[0].sum())\n", - "print('True: ',report_tree.groupby('CLASS').size()[1].sum())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Support Vector Machines " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from sklearn.svm import SVC\n", - "\n", - "array = data.values\n", - "X = array[:,0:11]\n", - "Y = array[:,11]\n", - "kfold = KFold(n_splits=10, random_state=7)\n", - "model = SVC()\n", - "results = cross_val_score(model, X, Y, cv=kfold)\n", - "print(results.mean())\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "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.7.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/Assignment Colab/.ipynb_checkpoints/MARIA MAGDALENE NAMAGANDA-checkpoint.ipynb b/Assignment Colab/.ipynb_checkpoints/MARIA MAGDALENE NAMAGANDA-checkpoint.ipynb deleted file mode 100644 index 8155bd1..0000000 --- a/Assignment Colab/.ipynb_checkpoints/MARIA MAGDALENE NAMAGANDA-checkpoint.ipynb +++ /dev/null @@ -1,1769 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "_cell_guid": "b1076dfc-b9ad-4769-8c92-a6c4dae69d19", - "_uuid": "8f2839f25d086af736a60e9eeb907d3b93b6e0e5" - }, - "source": [ - "# This Python 3 environment comes with many helpful analytics libraries installed\n", - "# It is defined by the kaggle/python docker image: https://github.com/kaggle/docker-python\n", - "# For example, here's several helpful packages to load in \n", - "\n", - "import numpy as np # linear algebra\n", - "import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n", - "\n", - "# Input data files are available in the \"../input/\" directory.\n", - "# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n", - "\n", - "import os\n", - "for dirname, _, filenames in os.walk('/kaggle/input'):\n", - " for filename in filenames:\n", - " print(os.path.join(dirname, filename))\n", - "\n", - "# Any results you write to the current directory are saved as output." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "#import the necessary libraries you are going to use\n", - "import warnings\n", - "warnings.filterwarnings('ignore')\n", - "\n", - "# -----> Put your code here below:\n", - "\n", - "\n", - "import pandas as pd\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Working with AMP_Data_set\n", - "## `Training and testing data in Machine Learning`\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "_cell_guid": "", - "_uuid": "" - }, - "outputs": [], - "source": [ - "#Load the datasets, there are two i.e the Train and Test datasets\n", - "\n", - "Train = pd.read_csv(\"../AMP Data Sets/AMP_TrainSet.csv\")\n", - "Test = pd.read_csv(\"../AMP Data Sets/Test.csv\")\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ">Getting to know more about the data\n", - "\n", - "
(Atwine)\n", - "\n", - "When you run the code below, what did you learn?\n", - "\n", - "Please document those findings.
" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "\n", - "FULL_Charge float64\n", - "FULL_AcidicMolPerc float64\n", - "FULL_AURR980107 float64\n", - "FULL_DAYM780201 float64\n", - "FULL_GEOR030101 float64\n", - "FULL_OOBM850104 float64\n", - "NT_EFC195 int64\n", - "AS_MeanAmphiMoment float64\n", - "AS_DAYM780201 float64\n", - "AS_FUKS010112 float64\n", - "CT_RACS820104 float64\n", - "CLASS int64\n", - "dtype: object\n", - "FULL_Charge float64\n", - "FULL_AcidicMolPerc float64\n", - "FULL_AURR980107 float64\n", - "FULL_DAYM780201 float64\n", - "FULL_GEOR030101 float64\n", - "FULL_OOBM850104 float64\n", - "NT_EFC195 int64\n", - "AS_MeanAmphiMoment float64\n", - "AS_DAYM780201 float64\n", - "AS_FUKS010112 float64\n", - "CT_RACS820104 float64\n", - "dtype: object\n" - ] - } - ], - "source": [ - "#here, am trying to find the kind of data am dealing with.\n", - "print(type(Train))\n", - "print(type(Test))\n", - "print(Train.dtypes)\n", - "print(Test.dtypes)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "((3038, 12), (758, 11))" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# check the dimensions of your data\n", - "# this retuns the number of rows and columns in the data\n", - "\n", - "Train.shape, Test.shape\n", - "\n", - "#this helps to know how big the data is in terms of rows and columns.\n", - "#it also informs one of which data is labeled" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "> The data is pre-prepared so ill just continue to work with it, since the Train dataset is already labeled with a CLASS attribute.\n", - "\n", - "
\n", - " This is a good note\n", - "

Please highlight what you learnt from the describe function below, what does it tell you? \n", - " What did you notice from the data? Is it perfect?\n", - "

\n", - "

Or there are some things that bug you but you are deciding to leave them a lone for some reason?

\n", - "
" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
FULL_ChargeFULL_AcidicMolPercFULL_AURR980107FULL_DAYM780201FULL_GEOR030101FULL_OOBM850104NT_EFC195AS_MeanAmphiMomentAS_DAYM780201AS_FUKS010112CT_RACS820104
count758.000000758.000000758.000000758.000000758.000000758.000000758.000000758.000000758.000000758.000000758.000000
mean2.0738798.9450910.97304673.8218910.994212-2.3979220.08443315.57006773.8442045.9044921.250189
std4.2306157.8144490.1106768.0295240.0323701.5971380.27821911.3625898.9151930.6569110.218102
min-13.0000000.0000000.69900047.0000000.889000-7.8440000.0000000.06000047.0000003.8430000.841000
25%-0.5000002.7217500.89400068.7402500.973000-3.4572500.0000005.70900068.3460005.4712501.096000
50%2.0000007.5000000.96500074.0695000.994000-2.2380000.00000015.05700073.6460005.9355001.188000
75%4.00000014.2302501.05350079.2847501.013000-1.3062500.00000025.29025080.0692506.3752501.378500
max30.00000044.1180001.431000102.9290001.1820002.0170001.00000050.098000102.9290007.5880002.283000
\n", - "
" - ], - "text/plain": [ - " FULL_Charge FULL_AcidicMolPerc FULL_AURR980107 FULL_DAYM780201 \\\n", - "count 758.000000 758.000000 758.000000 758.000000 \n", - "mean 2.073879 8.945091 0.973046 73.821891 \n", - "std 4.230615 7.814449 0.110676 8.029524 \n", - "min -13.000000 0.000000 0.699000 47.000000 \n", - "25% -0.500000 2.721750 0.894000 68.740250 \n", - "50% 2.000000 7.500000 0.965000 74.069500 \n", - "75% 4.000000 14.230250 1.053500 79.284750 \n", - "max 30.000000 44.118000 1.431000 102.929000 \n", - "\n", - " FULL_GEOR030101 FULL_OOBM850104 NT_EFC195 AS_MeanAmphiMoment \\\n", - "count 758.000000 758.000000 758.000000 758.000000 \n", - "mean 0.994212 -2.397922 0.084433 15.570067 \n", - "std 0.032370 1.597138 0.278219 11.362589 \n", - "min 0.889000 -7.844000 0.000000 0.060000 \n", - "25% 0.973000 -3.457250 0.000000 5.709000 \n", - "50% 0.994000 -2.238000 0.000000 15.057000 \n", - "75% 1.013000 -1.306250 0.000000 25.290250 \n", - "max 1.182000 2.017000 1.000000 50.098000 \n", - "\n", - " AS_DAYM780201 AS_FUKS010112 CT_RACS820104 \n", - "count 758.000000 758.000000 758.000000 \n", - "mean 73.844204 5.904492 1.250189 \n", - "std 8.915193 0.656911 0.218102 \n", - "min 47.000000 3.843000 0.841000 \n", - "25% 68.346000 5.471250 1.096000 \n", - "50% 73.646000 5.935500 1.188000 \n", - "75% 80.069250 6.375250 1.378500 \n", - "max 102.929000 7.588000 2.283000 " - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#getting a description of the data\n", - "#Train.describe, Test.describe\n", - "Train.describe()\n", - "Test.describe()\n", - "#description gives a summary of the data." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
FULL_ChargeFULL_AcidicMolPercFULL_AURR980107FULL_DAYM780201FULL_GEOR030101FULL_OOBM850104NT_EFC195AS_MeanAmphiMomentAS_DAYM780201AS_FUKS010112CT_RACS820104
04.03.7040.87373.5190.987-4.83300.38274.5567.2251.234
14.04.4440.89262.4440.931-0.58400.32056.0564.9421.853
22.00.0000.90147.0001.039-5.66400.16447.0005.9691.174
34.50.0000.86969.2220.982-5.42302.01069.2225.4621.138
4-4.021.5911.06171.6820.976-2.00202.75866.0005.5821.453
\n", - "
" - ], - "text/plain": [ - " FULL_Charge FULL_AcidicMolPerc FULL_AURR980107 FULL_DAYM780201 \\\n", - "0 4.0 3.704 0.873 73.519 \n", - "1 4.0 4.444 0.892 62.444 \n", - "2 2.0 0.000 0.901 47.000 \n", - "3 4.5 0.000 0.869 69.222 \n", - "4 -4.0 21.591 1.061 71.682 \n", - "\n", - " FULL_GEOR030101 FULL_OOBM850104 NT_EFC195 AS_MeanAmphiMoment \\\n", - "0 0.987 -4.833 0 0.382 \n", - "1 0.931 -0.584 0 0.320 \n", - "2 1.039 -5.664 0 0.164 \n", - "3 0.982 -5.423 0 2.010 \n", - "4 0.976 -2.002 0 2.758 \n", - "\n", - " AS_DAYM780201 AS_FUKS010112 CT_RACS820104 \n", - "0 74.556 7.225 1.234 \n", - "1 56.056 4.942 1.853 \n", - "2 47.000 5.969 1.174 \n", - "3 69.222 5.462 1.138 \n", - "4 66.000 5.582 1.453 " - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#looking at the first 5 entries of my data\n", - "Train.head()\n", - "Test.head()\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ">Looking at the skewness of the data\n", - "\n", - "
\n", - " What did you learn?\n", - "
" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "#knowing data skewness allows one to perform data preparation and improve a model\n", - "Train.skew().plot(kind='bar')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "> Data correlation." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
FULL_ChargeFULL_AcidicMolPercFULL_AURR980107FULL_DAYM780201FULL_GEOR030101FULL_OOBM850104NT_EFC195AS_MeanAmphiMomentAS_DAYM780201AS_FUKS010112CT_RACS820104CLASS
FULL_Charge1.000000-0.612996-0.490977-0.434603-0.058725-0.2837580.0880680.355477-0.365374-0.0905700.2329290.534602
FULL_AcidicMolPerc-0.6129961.0000000.7947960.5414810.1152010.513344-0.143168-0.4315900.4496210.002334-0.213543-0.598816
FULL_AURR980107-0.4909770.7947961.0000000.5482530.3461390.462712-0.169540-0.4260970.4562600.032958-0.403599-0.584111
FULL_DAYM780201-0.4346030.5414810.5482531.0000000.0101180.334778-0.090058-0.4087930.8941910.055915-0.326792-0.554838
FULL_GEOR030101-0.0587250.1152010.3461390.0101181.0000000.319157-0.230417-0.160269-0.0290850.040480-0.151935-0.260470
FULL_OOBM850104-0.2837580.5133440.4627120.3347780.3191571.000000-0.230561-0.3362970.275640-0.4527690.155304-0.453287
NT_EFC1950.088068-0.143168-0.169540-0.090058-0.230417-0.2305611.0000000.178683-0.0368440.1459240.0808980.260702
AS_MeanAmphiMoment0.355477-0.431590-0.426097-0.408793-0.160269-0.3362970.1786831.000000-0.3223780.0255800.1715240.693552
AS_DAYM780201-0.3653740.4496210.4562600.894191-0.0290850.275640-0.036844-0.3223781.0000000.045562-0.256060-0.437168
AS_FUKS010112-0.0905700.0023340.0329580.0559150.040480-0.4527690.1459240.0255800.0455621.000000-0.4452840.033432
CT_RACS8201040.232929-0.213543-0.403599-0.326792-0.1519350.1553040.0808980.171524-0.256060-0.4452841.0000000.267652
CLASS0.534602-0.598816-0.584111-0.554838-0.260470-0.4532870.2607020.693552-0.4371680.0334320.2676521.000000
\n", - "
" - ], - "text/plain": [ - " FULL_Charge FULL_AcidicMolPerc FULL_AURR980107 \\\n", - "FULL_Charge 1.000000 -0.612996 -0.490977 \n", - "FULL_AcidicMolPerc -0.612996 1.000000 0.794796 \n", - "FULL_AURR980107 -0.490977 0.794796 1.000000 \n", - "FULL_DAYM780201 -0.434603 0.541481 0.548253 \n", - "FULL_GEOR030101 -0.058725 0.115201 0.346139 \n", - "FULL_OOBM850104 -0.283758 0.513344 0.462712 \n", - "NT_EFC195 0.088068 -0.143168 -0.169540 \n", - "AS_MeanAmphiMoment 0.355477 -0.431590 -0.426097 \n", - "AS_DAYM780201 -0.365374 0.449621 0.456260 \n", - "AS_FUKS010112 -0.090570 0.002334 0.032958 \n", - "CT_RACS820104 0.232929 -0.213543 -0.403599 \n", - "CLASS 0.534602 -0.598816 -0.584111 \n", - "\n", - " FULL_DAYM780201 FULL_GEOR030101 FULL_OOBM850104 \\\n", - "FULL_Charge -0.434603 -0.058725 -0.283758 \n", - "FULL_AcidicMolPerc 0.541481 0.115201 0.513344 \n", - "FULL_AURR980107 0.548253 0.346139 0.462712 \n", - "FULL_DAYM780201 1.000000 0.010118 0.334778 \n", - "FULL_GEOR030101 0.010118 1.000000 0.319157 \n", - "FULL_OOBM850104 0.334778 0.319157 1.000000 \n", - "NT_EFC195 -0.090058 -0.230417 -0.230561 \n", - "AS_MeanAmphiMoment -0.408793 -0.160269 -0.336297 \n", - "AS_DAYM780201 0.894191 -0.029085 0.275640 \n", - "AS_FUKS010112 0.055915 0.040480 -0.452769 \n", - "CT_RACS820104 -0.326792 -0.151935 0.155304 \n", - "CLASS -0.554838 -0.260470 -0.453287 \n", - "\n", - " NT_EFC195 AS_MeanAmphiMoment AS_DAYM780201 \\\n", - "FULL_Charge 0.088068 0.355477 -0.365374 \n", - "FULL_AcidicMolPerc -0.143168 -0.431590 0.449621 \n", - "FULL_AURR980107 -0.169540 -0.426097 0.456260 \n", - "FULL_DAYM780201 -0.090058 -0.408793 0.894191 \n", - "FULL_GEOR030101 -0.230417 -0.160269 -0.029085 \n", - "FULL_OOBM850104 -0.230561 -0.336297 0.275640 \n", - "NT_EFC195 1.000000 0.178683 -0.036844 \n", - "AS_MeanAmphiMoment 0.178683 1.000000 -0.322378 \n", - "AS_DAYM780201 -0.036844 -0.322378 1.000000 \n", - "AS_FUKS010112 0.145924 0.025580 0.045562 \n", - "CT_RACS820104 0.080898 0.171524 -0.256060 \n", - "CLASS 0.260702 0.693552 -0.437168 \n", - "\n", - " AS_FUKS010112 CT_RACS820104 CLASS \n", - "FULL_Charge -0.090570 0.232929 0.534602 \n", - "FULL_AcidicMolPerc 0.002334 -0.213543 -0.598816 \n", - "FULL_AURR980107 0.032958 -0.403599 -0.584111 \n", - "FULL_DAYM780201 0.055915 -0.326792 -0.554838 \n", - "FULL_GEOR030101 0.040480 -0.151935 -0.260470 \n", - "FULL_OOBM850104 -0.452769 0.155304 -0.453287 \n", - "NT_EFC195 0.145924 0.080898 0.260702 \n", - "AS_MeanAmphiMoment 0.025580 0.171524 0.693552 \n", - "AS_DAYM780201 0.045562 -0.256060 -0.437168 \n", - "AS_FUKS010112 1.000000 -0.445284 0.033432 \n", - "CT_RACS820104 -0.445284 1.000000 0.267652 \n", - "CLASS 0.033432 0.267652 1.000000 " - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#first ill review the pairwise correlation of the attributes.\n", - "Train.corr(method='pearson')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - " What did you learn from the correlation?\n", - " \n", - "

What does correlation server, in this instance? Why are we even doing it?\n", - " \n", - " Please write your report as if you are explaining to someone who has never done Machine learning\n", - "

\n", - " " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - " Please draw better visuals.\n", - "
" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "#Reviewing inter-correlation of attributes using heatmap\n", - "#graphical representation\n", - "plt.figure(figsize=(6,6))\n", - "sns.heatmap(Train.corr(method='pearson'))" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "FULL_Charge 0.534602\n", - "FULL_AcidicMolPerc -0.598816\n", - "FULL_AURR980107 -0.584111\n", - "FULL_DAYM780201 -0.554838\n", - "FULL_GEOR030101 -0.260470\n", - "FULL_OOBM850104 -0.453287\n", - "NT_EFC195 0.260702\n", - "AS_MeanAmphiMoment 0.693552\n", - "AS_DAYM780201 -0.437168\n", - "AS_FUKS010112 0.033432\n", - "CT_RACS820104 0.267652\n", - "CLASS 1.000000\n", - "Name: CLASS, dtype: float64" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#Ill also check the correlation in regards to the 'CLASS' attribute\n", - "Train.corr(method='pearson')['CLASS']" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Train['CLASS'].value_counts" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - " What did you learn?\n", - "
" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "AxesSubplot(0.125,0.125;0.775x0.755)\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX0AAAEDCAYAAADZUdTgAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAQ30lEQVR4nO3dfYxcV33G8e/TmIQCLc7LNgTb6UZgoIFCSVchCLWihCYOIBypgGKh4tJUbtXQ8lZBAn9EAiGBqAhEalO5xOCoyCHlRXFpgFoJCFVtQjaQ9xCyDUlsNy8LCWlLeDP8+scci2Gxvd6d9Wzw+X6k0d77O+fee0YaP3N95s7cVBWSpD78ynIPQJI0Poa+JHXE0Jekjhj6ktQRQ1+SOmLoS1JHViz3AA7kuOOOq8nJyeUehiT9Urnhhhu+XVUT+2p7XIf+5OQk09PTyz0MSfqlkuTe/bU5vSNJHTH0Jakjhr4kdcTQl6SOGPqS1BFDX5I6YuhLUkcMfUnqyOP6y1m/LCbP/9flHsJh5Z73v3K5h3BY8fW5dA6H16Zn+pLUEUNfkjpi6EtSRwx9SeqIoS9JHTH0Jakjhr4kdcTQl6SOGPqS1BFDX5I6YuhLUkcMfUnqyLyhn2RLkoeS3LqPtrcnqSTHtfUkuTjJTJKbk5wy1HdjkrvaY+PSPg1J0sE4mDP9jwPr5haTrAHOAO4bKp8FrG2PTcAlre8xwIXAi4BTgQuTHD3KwCVJCzdv6FfVV4CH99F0EfAOoIZq64HLauBaYGWSE4AzgR1V9XBVPQLsYB9vJJKkQ2tRc/pJ1gO7q+qmOU2rgJ1D67tabX91SdIYLfgmKkmeBLyLwdTOkkuyicHUECeeeOKhOIQkdWsxZ/rPAE4CbkpyD7Aa+FqSpwG7gTVDfVe32v7qv6CqNlfVVFVNTUxMLGJ4kqT9WXDoV9UtVfUbVTVZVZMMpmpOqaoHgO3AG9pVPKcBj1bV/cAXgTOSHN0+wD2j1SRJY3Qwl2xuA/4TeHaSXUnOPUD3q4C7gRngH4G/BKiqh4H3Ate3x3taTZI0RvPO6VfVhnnaJ4eWCzhvP/22AFsWOD5J0hLyG7mS1BFDX5I6YuhLUkcMfUnqiKEvSR0x9CWpI4a+JHXE0Jekjhj6ktQRQ1+SOmLoS1JHDH1J6oihL0kdMfQlqSOGviR1xNCXpI4Y+pLUEUNfkjpyMPfI3ZLkoSS3DtU+mOQbSW5O8tkkK4faLkgyk+TOJGcO1de12kyS85f+qUiS5nMwZ/ofB9bNqe0AnldVzwe+CVwAkORk4BzguW2bv09yRJIjgL8DzgJOBja0vpKkMZo39KvqK8DDc2r/VlV72uq1wOq2vB64vKp+WFXfAmaAU9tjpqrurqofAZe3vpKkMVqKOf0/BT7fllcBO4fadrXa/uqSpDEaKfSTvBvYA3xiaYYDSTYlmU4yPTs7u1S7lSQxQugn+RPgVcDrq6paeTewZqjb6lbbX/0XVNXmqpqqqqmJiYnFDk+StA+LCv0k64B3AK+uqseGmrYD5yQ5KslJwFrgq8D1wNokJyU5ksGHvdtHG7okaaFWzNchyTbgpcBxSXYBFzK4WucoYEcSgGur6i+q6rYkVwC3M5j2Oa+qftL28ybgi8ARwJaquu0QPB9J0gHMG/pVtWEf5UsP0P99wPv2Ub8KuGpBo5MkLSm/kStJHTH0Jakjhr4kdcTQl6SOGPqS1BFDX5I6YuhLUkcMfUnqiKEvSR0x9CWpI4a+JHXE0Jekjhj6ktQRQ1+SOmLoS1JHDH1J6oihL0kdMfQlqSPzhn6SLUkeSnLrUO2YJDuS3NX+Ht3qSXJxkpkkNyc5ZWibja3/XUk2HpqnI0k6kIM50/84sG5O7Xzg6qpaC1zd1gHOAta2xybgEhi8STC4ofqLgFOBC/e+UUiSxmfe0K+qrwAPzymvB7a25a3A2UP1y2rgWmBlkhOAM4EdVfVwVT0C7OAX30gkSYfYYuf0j6+q+9vyA8DxbXkVsHOo365W219dkjRGI3+QW1UF1BKMBYAkm5JMJ5menZ1dqt1Kklh86D/Ypm1ofx9q9d3AmqF+q1ttf/VfUFWbq2qqqqYmJiYWOTxJ0r4sNvS3A3uvwNkIXDlUf0O7iuc04NE2DfRF4IwkR7cPcM9oNUnSGK2Yr0OSbcBLgeOS7GJwFc77gSuSnAvcC7yudb8KeAUwAzwGvBGgqh5O8l7g+tbvPVU198NhSdIhNm/oV9WG/TSdvo++BZy3n/1sAbYsaHSSpCXlN3IlqSOGviR1xNCXpI4Y+pLUEUNfkjpi6EtSRwx9SeqIoS9JHTH0Jakjhr4kdcTQl6SOGPqS1BFDX5I6YuhLUkcMfUnqiKEvSR0x9CWpI4a+JHXE0JekjowU+knemuS2JLcm2ZbkiUlOSnJdkpkkn0xyZOt7VFufae2TS/EEJEkHb9Ghn2QV8NfAVFU9DzgCOAf4AHBRVT0TeAQ4t21yLvBIq1/U+kmSxmjU6Z0VwK8mWQE8CbgfeBnwqda+FTi7La9v67T205NkxONLkhZg0aFfVbuBvwXuYxD2jwI3AN+tqj2t2y5gVVteBexs2+5p/Y+du98km5JMJ5menZ1d7PAkSfswyvTO0QzO3k8Cng48GVg36oCqanNVTVXV1MTExKi7kyQNGWV65+XAt6pqtqp+DHwGeAmwsk33AKwGdrfl3cAagNb+VOA7IxxfkrRAo4T+fcBpSZ7U5uZPB24HvgS8pvXZCFzZlre3dVr7NVVVIxxfkrRAo8zpX8fgA9mvAbe0fW0G3gm8LckMgzn7S9smlwLHtvrbgPNHGLckaRFWzN9l/6rqQuDCOeW7gVP30fcHwGtHOZ4kaTR+I1eSOmLoS1JHDH1J6oihL0kdMfQlqSOGviR1xNCXpI4Y+pLUEUNfkjpi6EtSRwx9SeqIoS9JHTH0Jakjhr4kdcTQl6SOGPqS1BFDX5I6YuhLUkdGCv0kK5N8Ksk3ktyR5MVJjkmyI8ld7e/RrW+SXJxkJsnNSU5ZmqcgSTpYo57pfwT4QlU9B3gBcAeDG55fXVVrgav52Q3QzwLWtscm4JIRjy1JWqBFh36SpwK/D1wKUFU/qqrvAuuBra3bVuDstrweuKwGrgVWJjlh0SOXJC3YKGf6JwGzwMeSfD3JR5M8GTi+qu5vfR4Ajm/Lq4CdQ9vvajVJ0piMEvorgFOAS6rqhcD3+NlUDgBVVUAtZKdJNiWZTjI9Ozs7wvAkSXONEvq7gF1VdV1b/xSDN4EH907btL8PtfbdwJqh7Ve32s+pqs1VNVVVUxMTEyMMT5I016JDv6oeAHYmeXYrnQ7cDmwHNrbaRuDKtrwdeEO7iuc04NGhaSBJ0hisGHH7vwI+keRI4G7gjQzeSK5Ici5wL/C61vcq4BXADPBY6ytJGqORQr+qbgSm9tF0+j76FnDeKMeTJI3Gb+RKUkcMfUnqiKEvSR0x9CWpI4a+JHXE0Jekjhj6ktQRQ1+SOmLoS1JHDH1J6oihL0kdMfQlqSOGviR1xNCXpI4Y+pLUEUNfkjpi6EtSRwx9SerIyKGf5IgkX0/yubZ+UpLrkswk+WS7fy5JjmrrM619ctRjS5IWZinO9N8M3DG0/gHgoqp6JvAIcG6rnws80uoXtX6SpDEaKfSTrAZeCXy0rQd4GfCp1mUrcHZbXt/Wae2nt/6SpDEZ9Uz/w8A7gJ+29WOB71bVnra+C1jVllcBOwFa+6OtvyRpTBYd+kleBTxUVTcs4XhIsinJdJLp2dnZpdy1JHVvlDP9lwCvTnIPcDmDaZ2PACuTrGh9VgO72/JuYA1Aa38q8J25O62qzVU1VVVTExMTIwxPkjTXokO/qi6oqtVVNQmcA1xTVa8HvgS8pnXbCFzZlre3dVr7NVVViz2+JGnhDsV1+u8E3pZkhsGc/aWtfilwbKu/DTj/EBxbknQAK+bvMr+q+jLw5bZ8N3DqPvr8AHjtUhxPkrQ4fiNXkjpi6EtSRwx9SeqIoS9JHTH0Jakjhr4kdcTQl6SOGPqS1BFDX5I6YuhLUkcMfUnqiKEvSR0x9CWpI4a+JHXE0Jekjhj6ktQRQ1+SOmLoS1JHFh36SdYk+VKS25PcluTNrX5Mkh1J7mp/j271JLk4yUySm5OcslRPQpJ0cEY5098DvL2qTgZOA85LcjKDG55fXVVrgav52Q3QzwLWtscm4JIRji1JWoRFh35V3V9VX2vL/wvcAawC1gNbW7etwNlteT1wWQ1cC6xMcsKiRy5JWrAlmdNPMgm8ELgOOL6q7m9NDwDHt+VVwM6hzXa1miRpTEYO/SRPAT4NvKWq/me4raoKqAXub1OS6STTs7Ozow5PkjRkpNBP8gQGgf+JqvpMKz+4d9qm/X2o1XcDa4Y2X91qP6eqNlfVVFVNTUxMjDI8SdIco1y9E+BS4I6q+tBQ03ZgY1veCFw5VH9Du4rnNODRoWkgSdIYrBhh25cAfwzckuTGVnsX8H7giiTnAvcCr2ttVwGvAGaAx4A3jnBsSdIiLDr0q+rfgeyn+fR99C/gvMUeT5I0Or+RK0kdMfQlqSOGviR1xNCXpI4Y+pLUEUNfkjpi6EtSRwx9SeqIoS9JHTH0Jakjhr4kdcTQl6SOGPqS1BFDX5I6YuhLUkcMfUnqiKEvSR0x9CWpI4a+JHVk7KGfZF2SO5PMJDl/3MeXpJ6NNfSTHAH8HXAWcDKwIcnJ4xyDJPVs3Gf6pwIzVXV3Vf0IuBxYP+YxSFK3Voz5eKuAnUPru4AXDXdIsgnY1Fb/L8mdYxpbD44Dvr3cg5hPPrDcI9Ayedy/Pn+JXpu/ub+GcYf+vKpqM7B5ucdxOEoyXVVTyz0OaV98fY7HuKd3dgNrhtZXt5okaQzGHfrXA2uTnJTkSOAcYPuYxyBJ3Rrr9E5V7UnyJuCLwBHAlqq6bZxj6JzTZno88/U5Bqmq5R6DJGlM/EauJHXE0Jekjhj6ktSRx911+lo6SZ7D4BvPq1ppN7C9qu5YvlFJWk6e6R+mkryTwc9cBPhqewTY5g/d6fEsyRuXewyHM6/eOUwl+Sbw3Kr68Zz6kcBtVbV2eUYmHViS+6rqxOUex+HK6Z3D10+BpwP3zqmf0NqkZZPk5v01AcePcyy9MfQPX28Brk5yFz/7kbsTgWcCb1q2UUkDxwNnAo/MqQf4j/EPpx+G/mGqqr6Q5FkMfs56+IPc66vqJ8s3MgmAzwFPqaob5zYk+fL4h9MP5/QlqSNevSNJHTH0Jakjhr66luRpSS5P8l9JbkhyVZJnJbl1P/1XJJlN8v459Vcl+XqSm5LcnuTPW/3ZSb6c5MYkdyTxlyS1rPwgV91KEuCzwNaqOqfVXsCBLxn8Q+CbwGuTXFBVleQJDH4W+NSq2pXkKGCy9b8YuKiqrmz7/+1D82ykg+OZvnr2B8CPq+of9haq6iZ+/j7Oc20APgLcB7y41X6NwQnUd9o+flhVe+/tfAKDe0Hv3f8tSzZ6aREMffXsecANB9s5yROBlwP/Amxj8AZAVT3M4A5w9ybZluT1Sfb+27oIuCbJ55O8NcnKJX0G0gIZ+tLBexXwpar6PvBp4OwkRwBU1Z8BpzP4jaO/Aba0+seA3wL+GXgpcG2b/pGWhaGvnt0G/O4C+m8AXp7kHgb/QzgWeNnexqq6paouYjDv/0dD9f+uqi1VtR7Yw+B/GNKyMPTVs2uAo5Js2ltI8nxgzdyOSX4d+D3gxKqarKpJ4DxgQ5KnJHnpUPffof3mUZJ17YNekjyNwRvF7kPzdKT5+Y1cdS3J04EPMzjj/wFwD4PfLbodeHCo67uBs/Ze5dO2PQa4k8HvGW0DngF8H/ge8Oaqmk7yIeCVbd8AH6yqfzqUz0k6EENfkjri9I4kdcTQl6SOGPqS1BFDX5I6YuhLUkcMfUnqiKEvSR0x9CWpI/8PvfBOVPh4KngAAAAASUVORK5CYII=\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "#I need to know the distribution of the class attribute of my data.\n", - "print(Train.groupby('CLASS').size().plot(kind='bar'))\n", - "#train.CLASS.value_counts().plot(kind='bar')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "### From the above bar graph, the Class distribution is even which means am dealing with balanced data." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Feature selection \n", - "## Using recursive feature elimination\n", - "\n", - "\n", - "
\n", - " What is Feature Selection?\n", - " \n", - " What are you trying to achieve here? Please write your thoughts.\n", - " \n", - " How did you arrive at 4 features?\n", - "
" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Num Features: 4\n", - "Selected Features: [False False True False False True True False False False True]\n", - "Feature Ranking: [3 7 1 6 2 1 1 4 8 5 1]\n" - ] - } - ], - "source": [ - "from sklearn.feature_selection import RFE\n", - "from sklearn.linear_model import LogisticRegression\n", - "\n", - "array = Train.values\n", - "X = array[:,0:11]\n", - "Y = array[:,11]\n", - "# feature extraction\n", - "model = LogisticRegression()\n", - "rfe = RFE(model, 4)\n", - "fit = rfe.fit(X, Y)\n", - "print(\"Num Features: \", fit.n_features_)\n", - "print(\"Selected Features:\", fit.support_)\n", - "print(\"Feature Ranking: \", fit.ranking_)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Index(['FULL_Charge', 'FULL_AcidicMolPerc', 'FULL_AURR980107',\n", - " 'FULL_DAYM780201', 'FULL_GEOR030101', 'FULL_OOBM850104', 'NT_EFC195',\n", - " 'AS_MeanAmphiMoment', 'AS_DAYM780201', 'AS_FUKS010112', 'CT_RACS820104',\n", - " 'CLASS'],\n", - " dtype='object')" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#Calling out the column names so I can know which features am going to drop from RFE\n", - "Train.columns" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Using Feature importance\n", - "\n", - "\n", - "
\n", - " When you see \"???\" just know you haven't sufficiently explained your thoughts.\n", - " \n", - " ## ??\n", - "
" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0.08652491 0.1297364 0.09323019 0.09956668 0.05401905 0.07223362\n", - " 0.03333241 0.30103142 0.05143828 0.03167747 0.04720957]\n" - ] - } - ], - "source": [ - "from sklearn.ensemble import ExtraTreesClassifier\n", - "\n", - "array = Train.values\n", - "X = array[:,0:11]\n", - "Y = array[:,11]\n", - "# feature extraction\n", - "model = ExtraTreesClassifier()\n", - "model.fit(X, Y)\n", - "print(model.feature_importances_)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Am going to use 4 features and drop the rest\n", - "\n", - "
\n", - " ## ??\n", - "
" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "# I will call the new Train data with selected features New_Train.\n", - "Train\n", - "New_Train = Train.drop(['FULL_Charge', 'FULL_AcidicMolPerc', 'FULL_DAYM780201', 'FULL_GEOR030101', 'AS_MeanAmphiMoment', 'AS_DAYM780201', 'AS_FUKS010112'], axis =1)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "#dropping the same features in the test dataset\n", - "New_Test = Test.drop(['FULL_Charge', 'FULL_AcidicMolPerc', 'FULL_DAYM780201', 'FULL_GEOR030101', 'AS_MeanAmphiMoment', 'AS_DAYM780201', 'AS_FUKS010112'], axis =1)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Index(['FULL_AURR980107', 'FULL_OOBM850104', 'NT_EFC195', 'CT_RACS820104',\n", - " 'CLASS'],\n", - " dtype='object')" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#viewing tselected features\n", - "New_Train.columns" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Rescaling data\n", - "\n", - "\n", - "
\n", - " ## ??\n", - "
" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[0.348 0.483 0. 0.182]\n", - " [0.322 0.458 1. 0.475]\n", - " [0.246 0.565 0. 0.666]\n", - " [0.275 0.647 0. 0.424]]\n" - ] - } - ], - "source": [ - "from numpy import set_printoptions\n", - "from sklearn.preprocessing import MinMaxScaler\n", - "array = New_Train.values\n", - "\n", - "#seperating data into onput and output options\n", - "X = array[:,0:4]\n", - "Y = array[:,4]\n", - "scaler = MinMaxScaler(feature_range = (0,1))\n", - "rescaledX = scaler.fit_transform(X)\n", - "\n", - "#summarising transformed data\n", - "set_printoptions(precision = 3)\n", - "print(rescaledX[0:4,:])\n", - " " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Standardising data\n", - "\n", - "\n", - "
\n", - " ## ??\n", - "
" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [], - "source": [ - "from sklearn.preprocessing import StandardScaler\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Comparing models to use\n", - "\n", - "\n", - "
\n", - " ## ??\n", - " You have less than 10 algorithms, why?\n", - "
" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "('LR', 0.798219298245614, 0.04658230982015574)\n", - "('LDA', 0.7955789473684212, 0.045052023551671226)\n", - "('KNN', 0.7985438596491228, 0.05940387146136468)\n", - "('CART', 0.7537807017543859, 0.04398756697084728)\n", - "('NB', 0.7996228070175438, 0.12333496511360942)\n", - "('SVM', 0.8071447368421053, 0.07573362330045245)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "#comparing different models to from which ill choose.\n", - "from matplotlib import pyplot\n", - "from sklearn.model_selection import KFold\n", - "from sklearn.model_selection import cross_val_score\n", - "from sklearn.linear_model import LogisticRegression\n", - "from sklearn.tree import DecisionTreeClassifier\n", - "from sklearn.neighbors import KNeighborsClassifier\n", - "from sklearn.discriminant_analysis import LinearDiscriminantAnalysis\n", - "from sklearn.naive_bayes import GaussianNB\n", - "from sklearn.svm import SVC\n", - "\n", - "\n", - "# load dataset\n", - "\n", - "array = New_Train.values\n", - "\n", - "#split the dataset \n", - "X = array[:,0:4] #X = Train.drop(columns=['CLASS'])\n", - "Y = array[:,4] #Y = Train['CLASS']\n", - "\n", - "# prepare models and add them to a list\n", - "models = []\n", - "models.append(('LR', LogisticRegression()))\n", - "models.append(('LDA', LinearDiscriminantAnalysis()))\n", - "models.append(('KNN', KNeighborsClassifier()))\n", - "models.append(('CART', DecisionTreeClassifier()))\n", - "models.append(('NB', GaussianNB()))\n", - "models.append(('SVM', SVC()))\n", - "\n", - "# evaluate each model in turn\n", - "results = []\n", - "names = []\n", - "\n", - "for name, model in models:\n", - " kfold = KFold(n_splits=40, random_state=10)\n", - " cv_results = cross_val_score(model, X, Y, cv=kfold, scoring='accuracy')\n", - " results.append(cv_results)\n", - " names.append(name)\n", - " msg = (name, cv_results.mean(), cv_results.std())\n", - " print(msg)\n", - "\n", - "# boxplot algorithm comparison\n", - "fig = pyplot.figure()\n", - "fig.suptitle('Algorithm Comparison')\n", - "ax = fig.add_subplot(111)\n", - "pyplot.boxplot(results)\n", - "ax.set_xticklabels(names)\n", - "pyplot.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [], - "source": [ - "#now slitting data\n", - "#array = New_Train.values\n", - "X = New_Train.values[:,0:4]\n", - "Y = New_Train.values[:,4]\n", - "from sklearn.model_selection import train_test_split\n", - "X_Train, X_Test, Y_Train, Y_Test = train_test_split(X, Y, test_size=0.2, random_state=42)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The result is: 62.28 Mathew's Coef\n" - ] - } - ], - "source": [ - "# also train and test the model on Matthews correlation coefficient.\n", - "from sklearn.metrics import matthews_corrcoef\n", - "\n", - "GS = GaussianNB()\n", - "GS.fit(X_Train,Y_Train)\n", - "pred = GS.predict(X_Test)\n", - "\n", - "print(\"The result is: \",np.round(matthews_corrcoef(Y_Test,pred) *100,2),\" Mathew's Coef\")" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "LogisticRegression(C=0.05, class_weight=None, dual=False, fit_intercept=True,\n", - " intercept_scaling=1, l1_ratio=None, max_iter=100,\n", - " multi_class='ovr', n_jobs=None, penalty='l2',\n", - " random_state=30, solver='liblinear', tol=0.0001, verbose=0,\n", - " warm_start=False)" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#now creating a model and training it\n", - "model = LogisticRegression(solver='liblinear', C=0.05, multi_class='ovr', random_state=30)\n", - "model.fit(X_Train, Y_Train)" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - "from sklearn.model_selection import train_test_split\n", - "X_Train, X_Test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2,\n", - "random_state=42)" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The result is: 62.28 Mathew's Coef\n" - ] - } - ], - "source": [ - "from sklearn.metrics import matthews_corrcoef\n", - "\n", - "nv = GaussianNB()\n", - "nv.fit(X_Train,Y_Train)\n", - "pred = nv.predict(X_Test)\n", - "\n", - "print(\"The result is: \",np.round(matthews_corrcoef(Y_Test,pred) *100,2),\" Mathew's Coef\")" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [], - "source": [ - "#model = DecisionTreeClassifier()\n", - "\n", - "#model.fit(X_train, y_train)" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
FULL_ChargeFULL_AcidicMolPercFULL_AURR980107FULL_DAYM780201FULL_GEOR030101FULL_OOBM850104NT_EFC195AS_MeanAmphiMomentAS_DAYM780201AS_FUKS010112CT_RACS820104
04.03.7040.87373.5190.987-4.83300.38274.5567.2251.234
14.04.4440.89262.4440.931-0.58400.32056.0564.9421.853
22.00.0000.90147.0001.039-5.66400.16447.0005.9691.174
34.50.0000.86969.2220.982-5.42302.01069.2225.4621.138
4-4.021.5911.06171.6820.976-2.00202.75866.0005.5821.453
\n", - "
" - ], - "text/plain": [ - " FULL_Charge FULL_AcidicMolPerc FULL_AURR980107 FULL_DAYM780201 \\\n", - "0 4.0 3.704 0.873 73.519 \n", - "1 4.0 4.444 0.892 62.444 \n", - "2 2.0 0.000 0.901 47.000 \n", - "3 4.5 0.000 0.869 69.222 \n", - "4 -4.0 21.591 1.061 71.682 \n", - "\n", - " FULL_GEOR030101 FULL_OOBM850104 NT_EFC195 AS_MeanAmphiMoment \\\n", - "0 0.987 -4.833 0 0.382 \n", - "1 0.931 -0.584 0 0.320 \n", - "2 1.039 -5.664 0 0.164 \n", - "3 0.982 -5.423 0 2.010 \n", - "4 0.976 -2.002 0 2.758 \n", - "\n", - " AS_DAYM780201 AS_FUKS010112 CT_RACS820104 \n", - "0 74.556 7.225 1.234 \n", - "1 56.056 4.942 1.853 \n", - "2 47.000 5.969 1.174 \n", - "3 69.222 5.462 1.138 \n", - "4 66.000 5.582 1.453 " - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Test.head()" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [], - "source": [ - "#we now need to predict on the test dataset\n", - "md = pd.DataFrame((New_Test.index,nv.predict(New_Test))).T\n", - "md = md.rename(columns={0:\"Index\",1:\"CLASS\"}).set_index('Index')\n", - "md.to_csv('maria.csv')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "
\n", - " ## ??\n", - "
" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ls: ../../kaggle/working/: No such file or directory\r\n" - ] - } - ], - "source": [ - "import os\n", - "os.listdir()\n", - "!ls ../../kaggle/working/" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "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.7.4" - }, - "varInspector": { - "cols": { - "lenName": 16, - "lenType": 16, - "lenVar": 40 - }, - "kernels_config": { - "python": { - "delete_cmd_postfix": "", - "delete_cmd_prefix": "del ", - "library": "var_list.py", - "varRefreshCmd": "print(var_dic_list())" - }, - "r": { - "delete_cmd_postfix": ") ", - "delete_cmd_prefix": "rm(", - "library": "var_list.r", - "varRefreshCmd": "cat(var_dic_list()) " - } - }, - "types_to_exclude": [ - "module", - "function", - "builtin_function_or_method", - "instance", - "_Feature" - ], - "window_display": false - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/Assignment Colab/MARIA MAGDALENE NAMAGANDA FINAL.ipynb b/Assignment Colab/MARIA MAGDALENE NAMAGANDA FINAL.ipynb deleted file mode 100644 index 64c2fef..0000000 --- a/Assignment Colab/MARIA MAGDALENE NAMAGANDA FINAL.ipynb +++ /dev/null @@ -1 +0,0 @@ -{"cells":[{"metadata":{},"cell_type":"markdown","source":"# MARIA MAGDALENE NAMAGANDA\n# 2019/HD07/24853U\n# Ace_class Kaggle assignment_1"},{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load in \n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the \"../input/\" directory.\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n for filename in filenames:\n print(os.path.join(dirname, filename))\n\n# Any results you write to the current directory are saved as output.","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Importing some of the needed packages and libraries"},{"metadata":{"trusted":true},"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nfrom matplotlib import pyplot\nimport seaborn as sns\n\nfrom sklearn.model_selection import KFold\nfrom pandas import read_csv\nfrom sklearn.metrics import confusion_matrix\nfrom sklearn.metrics import classification_report\nfrom sklearn.model_selection import cross_val_score\nfrom sklearn.model_selection import train_test_split\n\nfrom sklearn.linear_model import LogisticRegression\nfrom sklearn.tree import DecisionTreeClassifier\nfrom sklearn.neighbors import KNeighborsClassifier\nfrom sklearn.naive_bayes import GaussianNB\nfrom sklearn.discriminant_analysis import LinearDiscriminantAnalysis\nfrom sklearn.svm import SVC\nfrom sklearn.ensemble import AdaBoostClassifier\nfrom sklearn.ensemble import GradientBoostingClassifier\nfrom sklearn.ensemble import ExtraTreesClassifier\nfrom sklearn.ensemble import RandomForestClassifier\nfrom xgboost import XGBClassifier\n\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"> *Now i need to get rid of some unnecessary warnings by ignoring them*"},{"metadata":{"trusted":true},"cell_type":"code","source":"#To avoid unnecessary warnings, I will ignore them in the code below\nimport warnings\nwarnings.filterwarnings('ignore')","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Loading the datasets \n### There are two datasets given; \n1. AMP_TrainSet.csv and \n2. Test.csv "},{"metadata":{"_cell_guid":"","_uuid":"","trusted":true},"cell_type":"code","source":"#Loading the datasets, \n\nTrain = pd.read_csv(\"../input/amp-data-set/AMP_TrainSet.csv\")\nTest = pd.read_csv(\"../input/amp-data-set/Test.csv\")\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### For training the model, I will first use the training set which I will further split into the train and validation set. \n### Then I will test the model on the Test set provided to gauge its performance."},{"metadata":{},"cell_type":"markdown","source":"# Exploring my data\n## Exploring data helps one understand what kind of data is given. That is to say knowing how much data it is, the shape, type, dimensions, missing values, data summary, correlation of attributes among others as am going to do in the following steps."},{"metadata":{"trusted":true},"cell_type":"code","source":"#here, am trying to find the type of data\ntype(Train)\ntype(Test)\nTrain.dtypes, Test.dtypes","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# checking the dimensions of the data\n# this retuns the number of rows and columns in the data\n\nTrain.shape, Test.shape\n\n#this helps to know how big the data is in terms of rows and columns.\n#also from here I can tell which data is labeled","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Data description\n>For now, I will focus more on the train dataset because its what I will use to train the model "},{"metadata":{"trusted":true},"cell_type":"code","source":"#getting a description of the train dataset\n#description gives a summary of the data.\n\nTrain.describe()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"#looking at the first 5 entries of my data\nTrain.head()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Class Distribution\n> From the Train dataset, i see there is an extra 'CLASS' column which will be my validation set.\n### I need to know how this class is distributed to guide me on what to do with it."},{"metadata":{"trusted":true},"cell_type":"code","source":"#to see the class distribution, I will plot a bar graph\nTrain.groupby('CLASS').size().plot(kind='bar')\npyplot.show()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"> I would like to know how many instaces i have for each class"},{"metadata":{"trusted":true},"cell_type":"code","source":"#getting the number of instances in each class\nTrain.groupby('CLASS').size()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### There are 1519 intances for each class which is proof for even distribution.\n### From the above barplot and class instances, I can see that the classes are evenly distributed so no need to use smote."},{"metadata":{},"cell_type":"markdown","source":"# Data Visualisation\n### Data visualization is the technique to present the data in a pictorial or graphical format. It enables one to analyze data visually. The data in a graphical format allows identification of new trends and patterns easily.\n### Visualisation identifies the relationship between data points and variables."},{"metadata":{},"cell_type":"markdown","source":"## Density plots"},{"metadata":{},"cell_type":"markdown","source":"> I chose to use density plots because they are better at determing the distribution shape as they are not affected by the number of bins as is the case with Histograms."},{"metadata":{"trusted":true},"cell_type":"code","source":"#now plotting density subplots\n#setting the figsize to 12 so that my graphs are not congested\nTrain.plot(kind='density', subplots = True, layout=(3,4), sharex= False, sharey= False, figsize=(12,12))\nplt.show()\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"> From the above density subpots, I can see that most of the data follows a Gaussian distribution given some of the characteristics such as bell shaped curves and graphs being symmetrical about the mean."},{"metadata":{},"cell_type":"markdown","source":"## Box and whisker plots\n> A box plot is a type of graph that displays a summary of a large amount of data in terms of the median, upper quartile, lower quartile, minimum and maximum data values.\n\n> It handles large data easily, gives a clear summary and displays outliers."},{"metadata":{"trusted":true},"cell_type":"code","source":"#plotting a box and whisker graph\n#setting the figsize to 10 so that the plots are not congested.\nTrain.plot(kind='box', subplots = True, layout=(3,4), sharex= False, sharey= False, figsize=(10,10))\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Looking at the correlation of the data"},{"metadata":{},"cell_type":"markdown","source":"> Correlation is the relationship between two variables. The commonly used method is Pearson's correlation coefficient. It assumes a normal distribution of the attributes involved.\n\n> -1 shows full negative correlation, \n\n> +1 shows full negative correlation and \n\n> 0 shows no correlation at all."},{"metadata":{"trusted":true},"cell_type":"code","source":"#first I will checkfor the pairwise correlation of the attributes.\nTrain.corr(method='pearson')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"#Then now am reviewing the inter-correlation of attributes using heatmap\n#graphical representation\nplt.figure(figsize=(6,6))\nsns.heatmap(Train.corr(method='pearson'))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"#Ill also check the correlation in regards to the 'CLASS' attribute\nTrain.corr(method='pearson')['CLASS']","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Skewnwess of the data\n> knowing data skewness allows one to perform data preparation and improve a model\n\n> If Skewness value lies above +1 or below -1 then the data is highly skewed. \n\n> If skewness value lies between +0.5 and -0.5 then the data ids moderately skewed.\n\n> If skewness is 0 then data is symmetrical"},{"metadata":{"trusted":true},"cell_type":"code","source":"#Checking out skewness of data\nTrain.skew().plot(kind='bar')","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Comparing Machine Learning Algorithms\n> This helps to choose the best model for the problem at hand.\n\n> Using resampling methods like cross validation, gives an estimate for how accurate each model may be on unseen data.\n\n> It is important to ensure that each algorithm is evaluated in the same way on the same data to avoid bias."},{"metadata":{"trusted":true},"cell_type":"code","source":"#comparing different models to from which ill choose.\n\n\n# load dataset\n\narray = Train.values\n\n#split the dataset \nX = array[:,0:11] #X = Train.drop(columns=['CLASS'])\nY = array[:,11] #Y = Train['CLASS']\n\n# preparing models and adding them to a list\nmodels = []\nmodels.append(('LR', LogisticRegression()))\nmodels.append(('LDA', LinearDiscriminantAnalysis()))\nmodels.append(('KNN', KNeighborsClassifier()))\nmodels.append(('CART', DecisionTreeClassifier()))\nmodels.append(('NB', GaussianNB()))\nmodels.append(('SVM', SVC()))\nmodels.append(('AB', AdaBoostClassifier()))\nmodels.append(('GBC', GradientBoostingClassifier()))\nmodels.append(('EXT', ExtraTreesClassifier()))\nmodels.append(('RTC', RandomForestClassifier()))\n#models.append(('XGB', XGBClassifier)) \n#am commenting out XGB it does not seem to be a scikit-learn estimator as it does not implement a 'get_params' methods.\n\n# evaluating each model in turn\nresults = []\nnames = []\n\nfor name, model in models:\n kfold = KFold(n_splits=50, random_state=42)\n cv_results = cross_val_score(model, X, Y, cv=kfold, scoring='accuracy')\n results.append(cv_results)\n names.append(name)\n msg = (name, cv_results.mean(), cv_results.std())\n print(msg)\n\n# boxplot algorithm comparison\nfig = pyplot.figure()\nfig.suptitle('Algorithm Comparison')\nax = fig.add_subplot(111)\npyplot.boxplot(results)\nax.set_xticklabels(names)\npyplot.show()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"> ## From the above algorithm comparison, I can see that Naive Bayes(NB), ExtraTreesClassifiers(EXT) and RandomForestClassifiers(RTC) are some of the best performing algorithms. \n> ## Am yet to find out the overall best valgorithm after prediction on the Test set"},{"metadata":{},"cell_type":"markdown","source":"# Feature selection \n## Using recursive feature elimination\n> Sometimes, you may asses a dataset and find out that you do not need to use all the given features. This can be because some of them are highly correlates or they are not in any way helpful in developing the model.\n* It is therefore important to get rid of some features where applicable.\n\n> For this data, I will use Recursive Feature Elimination(RFE)"},{"metadata":{"trusted":true},"cell_type":"code","source":"#feature selection using RFE\n#first i will start with choosing 4 features\nfrom sklearn.feature_selection import RFE\nfrom sklearn.linear_model import LogisticRegression\n\narray = Train.values\nX = array[:,0:11]\nY = array[:,11]\n# feature extraction\nmodel = LogisticRegression()\nrfe = RFE(model, 4)\nfit = rfe.fit(X, Y)\nprint(\"Num Features: \", fit.n_features_)\nprint(\"Selected Features:\", fit.support_)\nprint(\"Feature Ranking: \", fit.ranking_)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"#Calling out the column names so I can know which features am going to drop from RFE\nTrain.columns","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Using Feature importance"},{"metadata":{"trusted":true},"cell_type":"code","source":"from sklearn.ensemble import ExtraTreesClassifier\n\narray = Train.values\nX = array[:,0:11]\nY = array[:,11]\n# feature extraction\nmodel = ExtraTreesClassifier()\nmodel.fit(X, Y)\nprint(model.feature_importances_)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## If am to use 4 features and drop the rest\n> I will assign the new dataset a variable 'New_Train4' after choosing the 4 features and dropping the rest."},{"metadata":{"trusted":true},"cell_type":"code","source":"# I will call the new Train data with selected features New_Train4.\nTrain\nNew_Train4 = Train.drop(['FULL_Charge', 'FULL_AcidicMolPerc', 'FULL_DAYM780201', 'FULL_GEOR030101', 'AS_MeanAmphiMoment', 'AS_DAYM780201', 'AS_FUKS010112'], axis =1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"#dropping the same features in the test dataset\nNew_Test4 = Test.drop(['FULL_Charge', 'FULL_AcidicMolPerc', 'FULL_DAYM780201', 'FULL_GEOR030101', 'AS_MeanAmphiMoment', 'AS_DAYM780201', 'AS_FUKS010112'], axis =1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"#viewing the selected features\nNew_Train4.columns","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"#now splitting data\n#array = New_Train.values\nX = New_Train4.values[:,0:4]\nY = New_Train4.values[:,4]\nfrom sklearn.model_selection import train_test_split\nX_Train, X_Test, Y_Train, Y_Test = train_test_split(X, Y, test_size=0.2, random_state=42)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# also train and test the model on Matthews correlation coefficient.\nfrom sklearn.metrics import matthews_corrcoef\n\nGS = GaussianNB()\nGS.fit(X_Train,Y_Train)\npred = GS.predict(X_Test)\n\nprint(\"The result is: \",np.round(matthews_corrcoef(Y_Test,pred) *100,2),\" Mathew's Coef\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Using four features gives me a very low MCC and low overall score.\n## I'll therefore consider using 8 features and see what score I get."},{"metadata":{"trusted":true},"cell_type":"code","source":"from sklearn.feature_selection import RFE\nfrom sklearn.linear_model import LogisticRegression\n\narray = Train.values\nX = array[:,0:11]\nY = array[:,11]\n# feature extraction\nmodel = LogisticRegression()\nrfe = RFE(model, 8)\nfit = rfe.fit(X, Y)\nprint(\"Num Features: \", fit.n_features_)\nprint(\"Selected Features:\", fit.support_)\nprint(\"Feature Ranking: \", fit.ranking_)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# I will call the new Train data with selected features New_Train8.\nTrain\nNew_Train8 = Train.drop(['FULL_AcidicMolPerc', 'FULL_DAYM780201', 'AS_DAYM780201'], axis =1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"#dropping the same features in the test dataset\nNew_Test8 = Test.drop(['FULL_AcidicMolPerc', 'FULL_DAYM780201', 'AS_DAYM780201'], axis =1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"#now splitting data\n#array = New_Train.values\n\n\nX = New_Train8.values[:,0:8]\nY = New_Train8.values[:,8]\nfrom sklearn.model_selection import train_test_split\nX_Train, X_Test, Y_Train, Y_Test = train_test_split(X, Y, test_size=0.2, random_state=42)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"#now creating a model and training it on 8 features\nmodel = LogisticRegression(solver='liblinear', C=0.05, multi_class='ovr', random_state=30)\nmodel.fit(X_Train, Y_Train)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"from sklearn.model_selection import train_test_split\nX_Train, X_Test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2,\nrandom_state=42)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"from sklearn.metrics import matthews_corrcoef\n\nnv = GaussianNB()\nnv.fit(X_Train,Y_Train)\npred = nv.predict(X_Test)\n\nprint(\"The result is: \",np.round(matthews_corrcoef(Y_Test,pred) *100,2),\" Mathew's Coef\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Standardising data\n> This is useful to transform attributes with a Gaussian distribution and it workd better with rescaled data(also known as normalistaion where attributes are scaled into a range between 0 and 1)"},{"metadata":{},"cell_type":"markdown","source":"# Below are some of the algorithms I will be using;"},{"metadata":{},"cell_type":"markdown","source":"# LINEAR ALGORITHMS\n1. Linear Regression\n2. Logistic Regression\n3. Linear Discriminant Analysis"},{"metadata":{},"cell_type":"markdown","source":"# Logistic Regression using 8 features"},{"metadata":{"trusted":true},"cell_type":"code","source":"# here am using a dataset 'New_Train8' with 8 selected features\narray = New_Train8.values\nX = array[:,0:8]\nY = array[:,8]\n\nkfold = KFold(n_splits=10, random_state=42) #spliiting my data into 10 folds and random_state of 42 for reproducibility\nmodel = LogisticRegression() #calling out the prediction algorithm\nresults = cross_val_score(model, X, Y, cv=kfold) #estimating the model on new data and assigning it to results variable\nprint(results.mean()) #getting the mean of the accuracy scores from cross validation scores\n\nmodel.fit(X,Y)\noutput = model.predict(New_Test8.values) #testing the model on the test_set (Test.values)\n\nfrom sklearn.metrics import matthews_corrcoef\nmcc = matthews_corrcoef(model.predict(X),Y)\nprint('MCC:',mcc)\n \nmaria_logistic = pd.DataFrame(output) #here we are converting the array into a pandas dataframe which will give a single column\nmaria_logistic.columns = ['CLASS'] #renaming the output column to 'CLASS'\nmaria_logistic.index.name = \"Index\" #naming the index column as 'Index'\nmaria_logistic['CLASS']=maria_logistic['CLASS'].map({0.0:False, 1.0:True}) #converting '0.0' to' False' and '1.0' to 'True'\nmaria_logistic.to_csv(\"maria_logistic.csv\") #changing my output file as a 'csv' file\n\nprint(maria_logistic['CLASS'].unique()) #checking out the unique instances in the 'CLASS' column\nprint('False: ',maria_logistic.groupby('CLASS').size()[0].sum()) #summing up the '0' instances in the 'CLASS' column\nprint('True: ',maria_logistic.groupby('CLASS').size()[1].sum()) #summing up the '1' instances in the 'CLASS' column","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Applying Linear Dicriminant Analysis (LDA) using all features "},{"metadata":{"trusted":true},"cell_type":"code","source":"array = Train.values\nX = array[:,0:11]\nY = array[:,11]\nnum_folds = 10\nkfold = KFold(n_splits=10, random_state=42) #spliiting my data into 10 folds and random_state of 42 for reproducibility\nmodel = LinearDiscriminantAnalysis() #calling out the prediction algorithm\nresults = cross_val_score(model, X, Y, cv=kfold) #estimating the model on new data and assigning it to results variable\nprint(results.mean()) #getting the mean of the accuracy scores from cross validation scores\n\nmodel.fit(X,Y)\noutput = model.predict(Test.values) #testing the model on the test_set (Test.values)\n\nfrom sklearn.metrics import matthews_corrcoef\nmcc = matthews_corrcoef(model.predict(X),Y)\nprint('MCC:',mcc)\n \nmaria_LDA = pd.DataFrame(output) #here we are converting the array into a pandas dataframe which will give a single column\nmaria_LDA.columns = ['CLASS'] #renaming the output column to 'CLASS'\nmaria_LDA.index.name = \"Index\" #naming the index column as 'Index'\nmaria_LDA['CLASS']=maria_LDA['CLASS'].map({0.0:False, 1.0:True}) #converting '0.0' to' False' and '1.0' to 'True'\nmaria_LDA.to_csv(\"maria_LDA.csv\") #changing my output file as a 'csv' file\n\nprint(maria_LDA['CLASS'].unique()) #checking out the unique instances in the 'CLASS' column\nprint('False: ',maria_LDA.groupby('CLASS').size()[0].sum()) #summing up the '0' instances in the 'CLASS' column\nprint('True: ',maria_LDA.groupby('CLASS').size()[1].sum()) #summing up the '1' instances in the 'CLASS' column","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# NON LINEAR ALGORITHMS\n1. Naive Bayes\n2. Support Vector Machines\n3. K-Nearest Neighbours\n4. Classification and Regression Trees\n5. Learning Vector Quantization"},{"metadata":{},"cell_type":"markdown","source":"# Using Naive Bayes and all the features"},{"metadata":{"trusted":true},"cell_type":"code","source":"array = Train.values\nX = array[:,0:11]\nY = array[:,11]\ntest_size = 0.35 \n\nkfold = KFold(n_splits=10) #spliiting my data into 10 folds \n\nX_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=test_size, random_state=42) #random_state of 42 for reproducibility\n\nmodel = GaussianNB() #calling out the prediction algorithm\nresults = cross_val_score(model, X, Y, cv=kfold) #estimating the model on new data and assigning it to results variable\nprint(results.mean()) #getting the mean of the accuracy scores from cross validation scores\n\n\nmodel.fit(X,Y)\noutput = model.predict(Test.values) #testing the model on the test_set (Test.values)\n\nfrom sklearn.metrics import matthews_corrcoef\nmcc = matthews_corrcoef(model.predict(X),Y)\nprint('MCC:',mcc)\n \nmaria2_bayes = pd.DataFrame(output) #here we are converting the array into a pandas dataframe which will give a single column\nmaria2_bayes.columns = ['CLASS'] #renaming the output column to 'CLASS'\nmaria2_bayes.index.name = \"Index\" #naming the index column as 'Index'\nmaria2_bayes['CLASS']=maria2_bayes['CLASS'].map({0.0:False, 1.0:True}) #converting '0.0' to' False' and '1.0' to 'True'\nmaria2_bayes.to_csv(\"maria2_bayes.csv\") #changing my output file as a 'csv' file\n\n\nprint(maria2_bayes['CLASS'].unique()) #checking out the unique instances in the 'CLASS' column\nprint('False: ',maria2_bayes.groupby('CLASS').size()[0].sum()) #summing up the '0' instances in the 'CLASS' column\nprint('True: ',maria2_bayes.groupby('CLASS').size()[1].sum()) #summing up the '1' instances in the 'CLASS' column","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Support Vector Machines algorithm using all features"},{"metadata":{"trusted":true},"cell_type":"code","source":"array = Train.values\nX = array[:,0:11]\nY = array[:,11]\nkfold = KFold(n_splits=10) #spliiting my data into 10 folds\n\nmodel = SVC() #calling out the prediction algorithm\nscoring = 'acuracy'\nresults = cross_val_score(model, X, Y, cv=kfold) #estimating the model on new data and assigning it to results variable\nprint(results.mean()) #getting the mean of the accuracy scores from cross validation scores\n\nmodel.fit(X, Y)\noutput = model.predict(Test.values) #testing the model on the test_set (Test.values)\n\nmcc = matthews_corrcoef(model.predict(X), Y)\nprint('MCC: ',mcc)\n\nmaria_svc = pd.DataFrame(output) #here we are converting the array into a pandas dataframe which will give a single column\nmaria_svc.columns = ['CLASS'] #renaming the output column to 'CLASS'\nmaria_svc.index.name = 'Index' #naming the index column as 'Index'\nmaria_svc['CLASS'] = maria_svc['CLASS'].map({0.0:False, 1.0:True}) #converting '0.0' to' False' and '1.0' to 'True'\n\nmaria_svc.to_csv('maria_svc.csv') #changing my output file as a 'csv' file\n\nprint(maria_svc['CLASS'].unique()) #checking out the unique instances in the 'CLASS' column\nprint('False: ',maria_svc.groupby('CLASS').size()[0].sum()) #summing up the '0' instances in the 'CLASS' column\nprint('True: ',maria_svc.groupby('CLASS').size()[1].sum()) #summing up the '1' instances in the 'CLASS' column","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Applying Classification and Regression Trees"},{"metadata":{"trusted":true},"cell_type":"code","source":"from sklearn.tree import DecisionTreeClassifier\narray = Train.values\nX = array[:,0:11]\nY = array[:,11]\nkfold = KFold(n_splits=10, random_state=42) #spliiting my data into 10 folds and random_state of 42 for reproducibility\nmodel = DecisionTreeClassifier() #calling out the prediction algorithm\nresults = cross_val_score(model, X, Y, cv=kfold) #estimating the model on new data and assigning it to results variable\nprint(results.mean()) #getting the mean of the accuracy scores from cross validation scores\n\n\nmodel.fit(X,Y)\noutput = model.predict(Test.values) #testing the model on the test_set (Test.values)\n\nfrom sklearn.metrics import matthews_corrcoef\nmcc = matthews_corrcoef(model.predict(X),Y)\nprint('MCC:',mcc)\n \nmaria_tree = pd.DataFrame(output) #here we are converting the array into a pandas dataframe which will give a single column\nmaria_tree.columns = ['CLASS'] #renaming the output column to 'CLASS'\nmaria_tree.index.name = \"Index\" #naming the index column as 'Index'\nmaria_tree['CLASS']=maria_tree['CLASS'].map({0.0:False, 1.0:True}) #converting '0.0' to' False' and '1.0' to 'True'\nmaria_tree.to_csv(\"maria_tree.csv\") #changing my output file as a 'csv' file\n\n\nprint(maria_tree['CLASS'].unique()) #checking out the unique instances in the 'CLASS' column\nprint('False: ',maria_tree.groupby('CLASS').size()[0].sum()) #summing up the '0' instances in the 'CLASS' column\nprint('True: ',maria_tree.groupby('CLASS').size()[1].sum()) #summing up the '1' instances in the 'CLASS' column","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# K-Nearest Neighbours"},{"metadata":{"trusted":true},"cell_type":"code","source":"array = Train.values\nX = array[:,0:11]\nY = array[:,11]\n\nkfold = KFold(n_splits=10, random_state=42) #spliiting my data into 10 folds and random_state of 42 for reproducibility\nmodel = KNeighborsClassifier() #calling out the prediction algorithm\nresults = cross_val_score(model, X, Y, cv=kfold) #estimating the model on new data and assigning it to results variable\nprint(results.mean()) #getting the mean of the accuracy scores from cross validation scores\n\nmodel.fit(X,Y) \noutput = model.predict(Test.values) #testing the model on the test_set (Test.values)\n\nfrom sklearn.metrics import matthews_corrcoef\nmcc = matthews_corrcoef(model.predict(X),Y)\nprint('MCC:',mcc)\n \nmaria_knn = pd.DataFrame(output) #here we are converting the array into a pandas dataframe which will give a single column\nmaria_knn.columns = ['CLASS'] #renaming the output column to 'CLASS' \nmaria_knn.index.name = \"Index\" #naming the index column as 'Index'\nmaria_knn['CLASS']=maria_knn['CLASS'].map({0.0:False, 1.0:True}) #converting '0.0' to' False' and '1.0' to 'True'\nmaria_knn.to_csv(\"maria_knn.csv\") #changing my output file as a 'csv' file\n\n\nprint(maria_knn['CLASS'].unique()) #checking out the unique instances in the 'CLASS' column\nprint('False: ',maria_knn.groupby('CLASS').size()[0].sum()) #summing up the '0' instances in the 'CLASS' column\nprint('True: ',maria_knn.groupby('CLASS').size()[1].sum()) #summing up the '1' instances in the 'CLASS' column","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Esemble Algorithms\n1. Boosting and Adaboost\n2. Bagging and Random forest"},{"metadata":{},"cell_type":"markdown","source":"# Applying Adaboost "},{"metadata":{"trusted":true},"cell_type":"code","source":"array = Train.values\n\nX = array[:,0:11]\nY = array[:,11]\n\nkfold = KFold(n_splits=10, random_state=42)\n\nmodel = AdaBoostClassifier(n_estimators=200, random_state=42) \nresults = cross_val_score(model, X, Y, cv=kfold)\n\nprint(results.mean())\n\n\ntest_set = Test.values\nmodel.fit(X, Y)\noutput = model.predict(test_set)\n\nmcc = matthews_corrcoef(model.predict(X), Y)\nprint('MCC: ',mcc)\n\nmaria_AB= pd.DataFrame(output)\nmaria_AB.columns = ['CLASS']\nmaria_AB.index.name = 'Index'\nmaria_AB['CLASS'] = maria_AB['CLASS'].map({0.0:False, 1.0:True})\n\nmaria_AB.to_csv('maria_AB.csv')\n\nprint(maria_AB['CLASS'].unique())\nprint('False: ',maria_AB.groupby('CLASS').size()[0].sum())\nprint('True: ',maria_AB.groupby('CLASS').size()[1].sum())","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Applying Gradient Boosting Classifier"},{"metadata":{"trusted":true},"cell_type":"code","source":"array = Train.values\n\nX = array[:,0:11]\nY = array[:,11]\n\n#num_trees = 200\n#seed =42\n\nkfold = KFold(n_splits=10, random_state=42)\nmodel = GradientBoostingClassifier(n_estimators=200, random_state=42)\nresults = cross_val_score(model, X, Y, cv=kfold)\nprint(results.mean())\n\nmodel.fit(X,Y) \noutput = model.predict(Test.values) #testing the model on the test_set (Test.values)\n\nfrom sklearn.metrics import matthews_corrcoef\nmcc = matthews_corrcoef(model.predict(X),Y)\nprint('MCC:',mcc)\n \nmaria_GBC = pd.DataFrame(output) #here we are converting the array into a pandas dataframe which will give a single column\nmaria_GBC.columns = ['CLASS'] #renaming the output column to 'CLASS' \nmaria_GBC.index.name = \"Index\" #naming the index column as 'Index'\nmaria_GBC['CLASS']=maria_GBC['CLASS'].map({0.0:False, 1.0:True}) #converting '0.0' to' False' and '1.0' to 'True'\nmaria_GBC.to_csv(\"maria_GBC.csv\") #changing my output file as a 'csv' file\n\n\nprint(maria_GBC['CLASS'].unique()) #checking out the unique instances in the \nprint('False: ',maria_GBC.groupby('CLASS').size()[0].sum()) #summing up the '0' instances in the 'CLASS' column\nprint('True: ',maria_GBC.groupby('CLASS').size()[1].sum()) #summing up the '1' instances in the 'CLASS' column","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Using Stochastic Gradient Boosting Classification"},{"metadata":{"trusted":true},"cell_type":"code","source":"array = Train.values\nX = array[:,0:11]\nY = array[:,11]\n\nkfold = KFold(n_splits=10, random_state=42)\nmodel = XGBClassifier(n_estimators=200, random_state=42)\nresults = cross_val_score(model, X, Y, cv=kfold)\nprint(results.mean())\n\nmodel.fit(X,Y) \noutput = model.predict(Test.values) #testing the model on the test_set (Test.values)\n\nfrom sklearn.metrics import matthews_corrcoef\nmcc = matthews_corrcoef(model.predict(X),Y)\nprint('MCC:',mcc)\n \nmaria_XGB = pd.DataFrame(output) #here we are converting the array into a pandas dataframe which will give a single column\nmaria_XGB.columns = ['CLASS'] #renaming the output column to 'CLASS' \nmaria_XGB.index.name = \"Index\" #naming the index column as 'Index'\nmaria_XGB['CLASS']=maria_XGB['CLASS'].map({0.0:False, 1.0:True}) #converting '0.0' to' False' and '1.0' to 'True'\nmaria_XGB.to_csv(\"maria_XGB.csv\") #changing my output file as a 'csv' file\n\n\nprint(maria_GBC['CLASS'].unique()) #checking out the unique instances in the \nprint('False: ',maria_XGB.groupby('CLASS').size()[0].sum()) #summing up the '0' instances in the 'CLASS' column\nprint('True: ',maria_XGB.groupby('CLASS').size()[1].sum()) #summing up the '1' instances in the 'CLASS' column","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Using Extra Trees Classifier"},{"metadata":{"trusted":true},"cell_type":"code","source":"array = Train.values\n\nX = array[:,0:11]\nY = array[:,11]\n\nkfold = KFold(n_splits=10, random_state=42)\nmodel = ExtraTreesClassifier(n_estimators=200) # (max_features=11)\nresults = cross_val_score(model, X, Y, cv=kfold)\nprint(results.mean())\n \nmodel.fit(X,Y) \noutput = model.predict(Test.values) #testing the model on the test_set (Test.values)\n\nfrom sklearn.metrics import matthews_corrcoef\nmcc = matthews_corrcoef(model.predict(X),Y)\nprint('MCC:',mcc)\n \nmaria_ETX = pd.DataFrame(output) #here we are converting the array into a pandas dataframe which will give a single column\nmaria_ETX.columns = ['CLASS'] #renaming the output column to 'CLASS' \nmaria_ETX.index.name = \"Index\" #naming the index column as 'Index'\nmaria_ETX['CLASS']=maria_ETX['CLASS'].map({0.0:False, 1.0:True}) #converting '0.0' to' False' and '1.0' to 'True'\nmaria_ETX.to_csv(\"maria_ETX.csv\") #changing my output file as a 'csv' file\n\n\nprint(maria_ETX['CLASS'].unique()) #checking out the unique instances in the \nprint('False: ',maria_ETX.groupby('CLASS').size()[0].sum()) #summing up the '0' instances in the 'CLASS' column\nprint('True: ',maria_ETX.groupby('CLASS').size()[1].sum()) #summing up the '1' instances in the 'CLASS' column ","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# CONCLUSION\n## From the algorithm comparisons and my prediction scores, Naive Bayes algorithm performed the best.\n## I think this is because the data was following a Gaussian distribution(normally distributed) as seen earlier from the density subplots."}],"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat":4,"nbformat_minor":4} \ No newline at end of file diff --git a/Assignment Colab/maria.csv b/Assignment Colab/maria.csv deleted file mode 100644 index 07d74e8..0000000 --- a/Assignment Colab/maria.csv +++ /dev/null @@ -1,759 +0,0 @@ -Index,CLASS -0.0,1.0 -1.0,1.0 -2.0,1.0 -3.0,1.0 -4.0,0.0 -5.0,1.0 -6.0,0.0 -7.0,1.0 -8.0,1.0 -9.0,1.0 -10.0,0.0 -11.0,1.0 -12.0,1.0 -13.0,0.0 -14.0,0.0 -15.0,1.0 -16.0,0.0 -17.0,1.0 -18.0,1.0 -19.0,1.0 -20.0,1.0 -21.0,1.0 -22.0,1.0 -23.0,1.0 -24.0,0.0 -25.0,1.0 -26.0,1.0 -27.0,1.0 -28.0,1.0 -29.0,1.0 -30.0,1.0 -31.0,1.0 -32.0,0.0 -33.0,1.0 -34.0,0.0 -35.0,1.0 -36.0,1.0 -37.0,1.0 -38.0,1.0 -39.0,1.0 -40.0,1.0 -41.0,1.0 -42.0,1.0 -43.0,1.0 -44.0,1.0 -45.0,1.0 -46.0,1.0 -47.0,1.0 -48.0,0.0 -49.0,1.0 -50.0,0.0 -51.0,1.0 -52.0,0.0 -53.0,1.0 -54.0,0.0 -55.0,1.0 -56.0,1.0 -57.0,1.0 -58.0,1.0 -59.0,1.0 -60.0,1.0 -61.0,0.0 -62.0,1.0 -63.0,1.0 -64.0,1.0 -65.0,1.0 -66.0,0.0 -67.0,1.0 -68.0,0.0 -69.0,1.0 -70.0,1.0 -71.0,1.0 -72.0,0.0 -73.0,1.0 -74.0,1.0 -75.0,1.0 -76.0,0.0 -77.0,1.0 -78.0,1.0 -79.0,0.0 -80.0,0.0 -81.0,1.0 -82.0,0.0 -83.0,1.0 -84.0,0.0 -85.0,0.0 -86.0,0.0 -87.0,1.0 -88.0,0.0 -89.0,1.0 -90.0,0.0 -91.0,1.0 -92.0,1.0 -93.0,1.0 -94.0,1.0 -95.0,0.0 -96.0,0.0 -97.0,0.0 -98.0,0.0 -99.0,1.0 -100.0,0.0 -101.0,1.0 -102.0,0.0 -103.0,1.0 -104.0,1.0 -105.0,0.0 -106.0,1.0 -107.0,1.0 -108.0,1.0 -109.0,0.0 -110.0,1.0 -111.0,0.0 -112.0,1.0 -113.0,0.0 -114.0,1.0 -115.0,1.0 -116.0,0.0 -117.0,1.0 -118.0,1.0 -119.0,1.0 -120.0,1.0 -121.0,0.0 -122.0,1.0 -123.0,1.0 -124.0,0.0 -125.0,0.0 -126.0,1.0 -127.0,0.0 -128.0,0.0 -129.0,1.0 -130.0,1.0 -131.0,0.0 -132.0,0.0 -133.0,0.0 -134.0,1.0 -135.0,1.0 -136.0,0.0 -137.0,1.0 -138.0,1.0 -139.0,1.0 -140.0,1.0 -141.0,1.0 -142.0,1.0 -143.0,1.0 -144.0,1.0 -145.0,0.0 -146.0,1.0 -147.0,1.0 -148.0,1.0 -149.0,0.0 -150.0,1.0 -151.0,1.0 -152.0,0.0 -153.0,0.0 -154.0,1.0 -155.0,1.0 -156.0,1.0 -157.0,1.0 -158.0,1.0 -159.0,1.0 -160.0,1.0 -161.0,0.0 -162.0,0.0 -163.0,1.0 -164.0,1.0 -165.0,1.0 -166.0,1.0 -167.0,1.0 -168.0,1.0 -169.0,0.0 -170.0,1.0 -171.0,0.0 -172.0,1.0 -173.0,1.0 -174.0,1.0 -175.0,1.0 -176.0,1.0 -177.0,1.0 -178.0,0.0 -179.0,1.0 -180.0,1.0 -181.0,0.0 -182.0,0.0 -183.0,1.0 -184.0,1.0 -185.0,1.0 -186.0,1.0 -187.0,1.0 -188.0,1.0 -189.0,0.0 -190.0,1.0 -191.0,1.0 -192.0,1.0 -193.0,1.0 -194.0,0.0 -195.0,1.0 -196.0,1.0 -197.0,1.0 -198.0,0.0 -199.0,1.0 -200.0,1.0 -201.0,1.0 -202.0,1.0 -203.0,0.0 -204.0,0.0 -205.0,0.0 -206.0,1.0 -207.0,0.0 -208.0,0.0 -209.0,0.0 -210.0,1.0 -211.0,0.0 -212.0,1.0 -213.0,0.0 -214.0,1.0 -215.0,1.0 -216.0,1.0 -217.0,0.0 -218.0,1.0 -219.0,0.0 -220.0,0.0 -221.0,1.0 -222.0,1.0 -223.0,1.0 -224.0,0.0 -225.0,1.0 -226.0,1.0 -227.0,1.0 -228.0,0.0 -229.0,0.0 -230.0,1.0 -231.0,1.0 -232.0,1.0 -233.0,1.0 -234.0,1.0 -235.0,1.0 -236.0,1.0 -237.0,1.0 -238.0,0.0 -239.0,1.0 -240.0,0.0 -241.0,1.0 -242.0,1.0 -243.0,0.0 -244.0,1.0 -245.0,0.0 -246.0,1.0 -247.0,0.0 -248.0,1.0 -249.0,0.0 -250.0,1.0 -251.0,1.0 -252.0,1.0 -253.0,0.0 -254.0,1.0 -255.0,0.0 -256.0,1.0 -257.0,0.0 -258.0,1.0 -259.0,0.0 -260.0,1.0 -261.0,1.0 -262.0,1.0 -263.0,0.0 -264.0,1.0 -265.0,1.0 -266.0,1.0 -267.0,1.0 -268.0,1.0 -269.0,1.0 -270.0,1.0 -271.0,0.0 -272.0,1.0 -273.0,0.0 -274.0,1.0 -275.0,0.0 -276.0,0.0 -277.0,1.0 -278.0,0.0 -279.0,1.0 -280.0,1.0 -281.0,1.0 -282.0,1.0 -283.0,1.0 -284.0,0.0 -285.0,0.0 -286.0,1.0 -287.0,0.0 -288.0,0.0 -289.0,0.0 -290.0,1.0 -291.0,1.0 -292.0,1.0 -293.0,1.0 -294.0,0.0 -295.0,0.0 -296.0,0.0 -297.0,1.0 -298.0,1.0 -299.0,0.0 -300.0,1.0 -301.0,1.0 -302.0,1.0 -303.0,1.0 -304.0,0.0 -305.0,0.0 -306.0,1.0 -307.0,1.0 -308.0,1.0 -309.0,1.0 -310.0,1.0 -311.0,1.0 -312.0,1.0 -313.0,1.0 -314.0,0.0 -315.0,0.0 -316.0,1.0 -317.0,1.0 -318.0,0.0 -319.0,0.0 -320.0,0.0 -321.0,1.0 -322.0,1.0 -323.0,0.0 -324.0,0.0 -325.0,0.0 -326.0,1.0 -327.0,1.0 -328.0,1.0 -329.0,0.0 -330.0,1.0 -331.0,1.0 -332.0,0.0 -333.0,1.0 -334.0,1.0 -335.0,1.0 -336.0,0.0 -337.0,1.0 -338.0,0.0 -339.0,1.0 -340.0,1.0 -341.0,1.0 -342.0,0.0 -343.0,1.0 -344.0,1.0 -345.0,0.0 -346.0,1.0 -347.0,1.0 -348.0,1.0 -349.0,1.0 -350.0,1.0 -351.0,1.0 -352.0,0.0 -353.0,0.0 -354.0,1.0 -355.0,1.0 -356.0,0.0 -357.0,0.0 -358.0,0.0 -359.0,0.0 -360.0,1.0 -361.0,0.0 -362.0,1.0 -363.0,1.0 -364.0,1.0 -365.0,1.0 -366.0,1.0 -367.0,0.0 -368.0,1.0 -369.0,1.0 -370.0,1.0 -371.0,0.0 -372.0,1.0 -373.0,1.0 -374.0,0.0 -375.0,0.0 -376.0,1.0 -377.0,1.0 -378.0,0.0 -379.0,0.0 -380.0,0.0 -381.0,0.0 -382.0,0.0 -383.0,0.0 -384.0,0.0 -385.0,0.0 -386.0,0.0 -387.0,0.0 -388.0,0.0 -389.0,0.0 -390.0,1.0 -391.0,0.0 -392.0,0.0 -393.0,0.0 -394.0,0.0 -395.0,0.0 -396.0,0.0 -397.0,0.0 -398.0,0.0 -399.0,0.0 -400.0,0.0 -401.0,0.0 -402.0,1.0 -403.0,0.0 -404.0,0.0 -405.0,1.0 -406.0,1.0 -407.0,0.0 -408.0,0.0 -409.0,0.0 -410.0,0.0 -411.0,1.0 -412.0,0.0 -413.0,0.0 -414.0,0.0 -415.0,0.0 -416.0,0.0 -417.0,0.0 -418.0,0.0 -419.0,0.0 -420.0,1.0 -421.0,0.0 -422.0,0.0 -423.0,1.0 -424.0,0.0 -425.0,0.0 -426.0,0.0 -427.0,0.0 -428.0,0.0 -429.0,0.0 -430.0,0.0 -431.0,0.0 -432.0,0.0 -433.0,0.0 -434.0,0.0 -435.0,0.0 -436.0,0.0 -437.0,0.0 -438.0,0.0 -439.0,0.0 -440.0,0.0 -441.0,0.0 -442.0,0.0 -443.0,0.0 -444.0,0.0 -445.0,0.0 -446.0,0.0 -447.0,0.0 -448.0,0.0 -449.0,0.0 -450.0,0.0 -451.0,0.0 -452.0,0.0 -453.0,0.0 -454.0,0.0 -455.0,0.0 -456.0,0.0 -457.0,0.0 -458.0,0.0 -459.0,0.0 -460.0,0.0 -461.0,0.0 -462.0,0.0 -463.0,0.0 -464.0,0.0 -465.0,1.0 -466.0,0.0 -467.0,0.0 -468.0,0.0 -469.0,0.0 -470.0,1.0 -471.0,0.0 -472.0,0.0 -473.0,0.0 -474.0,0.0 -475.0,0.0 -476.0,0.0 -477.0,0.0 -478.0,0.0 -479.0,0.0 -480.0,0.0 -481.0,0.0 -482.0,0.0 -483.0,0.0 -484.0,0.0 -485.0,0.0 -486.0,0.0 -487.0,0.0 -488.0,0.0 -489.0,0.0 -490.0,0.0 -491.0,0.0 -492.0,0.0 -493.0,0.0 -494.0,1.0 -495.0,1.0 -496.0,0.0 -497.0,0.0 -498.0,0.0 -499.0,0.0 -500.0,0.0 -501.0,0.0 -502.0,0.0 -503.0,0.0 -504.0,0.0 -505.0,0.0 -506.0,0.0 -507.0,0.0 -508.0,1.0 -509.0,0.0 -510.0,0.0 -511.0,0.0 -512.0,0.0 -513.0,1.0 -514.0,0.0 -515.0,0.0 -516.0,0.0 -517.0,0.0 -518.0,0.0 -519.0,0.0 -520.0,1.0 -521.0,0.0 -522.0,0.0 -523.0,0.0 -524.0,0.0 -525.0,0.0 -526.0,0.0 -527.0,1.0 -528.0,0.0 -529.0,0.0 -530.0,0.0 -531.0,0.0 -532.0,0.0 -533.0,0.0 -534.0,1.0 -535.0,0.0 -536.0,0.0 -537.0,0.0 -538.0,0.0 -539.0,0.0 -540.0,0.0 -541.0,0.0 -542.0,0.0 -543.0,1.0 -544.0,1.0 -545.0,0.0 -546.0,0.0 -547.0,0.0 -548.0,0.0 -549.0,0.0 -550.0,1.0 -551.0,0.0 -552.0,0.0 -553.0,0.0 -554.0,0.0 -555.0,1.0 -556.0,0.0 -557.0,1.0 -558.0,0.0 -559.0,1.0 -560.0,0.0 -561.0,0.0 -562.0,1.0 -563.0,0.0 -564.0,0.0 -565.0,1.0 -566.0,0.0 -567.0,0.0 -568.0,0.0 -569.0,0.0 -570.0,0.0 -571.0,0.0 -572.0,0.0 -573.0,0.0 -574.0,0.0 -575.0,0.0 -576.0,0.0 -577.0,0.0 -578.0,0.0 -579.0,0.0 -580.0,0.0 -581.0,0.0 -582.0,0.0 -583.0,0.0 -584.0,0.0 -585.0,0.0 -586.0,0.0 -587.0,1.0 -588.0,0.0 -589.0,0.0 -590.0,0.0 -591.0,1.0 -592.0,0.0 -593.0,0.0 -594.0,0.0 -595.0,0.0 -596.0,0.0 -597.0,0.0 -598.0,0.0 -599.0,0.0 -600.0,0.0 -601.0,0.0 -602.0,0.0 -603.0,0.0 -604.0,0.0 -605.0,0.0 -606.0,0.0 -607.0,0.0 -608.0,1.0 -609.0,0.0 -610.0,0.0 -611.0,0.0 -612.0,0.0 -613.0,0.0 -614.0,0.0 -615.0,0.0 -616.0,0.0 -617.0,0.0 -618.0,0.0 -619.0,0.0 -620.0,0.0 -621.0,0.0 -622.0,0.0 -623.0,0.0 -624.0,0.0 -625.0,0.0 -626.0,0.0 -627.0,0.0 -628.0,1.0 -629.0,0.0 -630.0,0.0 -631.0,0.0 -632.0,0.0 -633.0,0.0 -634.0,1.0 -635.0,0.0 -636.0,0.0 -637.0,1.0 -638.0,0.0 -639.0,0.0 -640.0,0.0 -641.0,0.0 -642.0,0.0 -643.0,0.0 -644.0,0.0 -645.0,1.0 -646.0,0.0 -647.0,0.0 -648.0,0.0 -649.0,0.0 -650.0,0.0 -651.0,0.0 -652.0,0.0 -653.0,0.0 -654.0,0.0 -655.0,0.0 -656.0,0.0 -657.0,0.0 -658.0,0.0 -659.0,0.0 -660.0,0.0 -661.0,0.0 -662.0,0.0 -663.0,0.0 -664.0,0.0 -665.0,0.0 -666.0,0.0 -667.0,0.0 -668.0,0.0 -669.0,0.0 -670.0,1.0 -671.0,0.0 -672.0,0.0 -673.0,0.0 -674.0,0.0 -675.0,0.0 -676.0,0.0 -677.0,1.0 -678.0,0.0 -679.0,0.0 -680.0,0.0 -681.0,0.0 -682.0,0.0 -683.0,0.0 -684.0,0.0 -685.0,0.0 -686.0,0.0 -687.0,1.0 -688.0,0.0 -689.0,0.0 -690.0,0.0 -691.0,0.0 -692.0,0.0 -693.0,0.0 -694.0,0.0 -695.0,0.0 -696.0,0.0 -697.0,0.0 -698.0,0.0 -699.0,0.0 -700.0,0.0 -701.0,0.0 -702.0,0.0 -703.0,1.0 -704.0,0.0 -705.0,0.0 -706.0,0.0 -707.0,0.0 -708.0,1.0 -709.0,0.0 -710.0,0.0 -711.0,0.0 -712.0,0.0 -713.0,0.0 -714.0,0.0 -715.0,0.0 -716.0,0.0 -717.0,1.0 -718.0,0.0 -719.0,1.0 -720.0,0.0 -721.0,0.0 -722.0,0.0 -723.0,0.0 -724.0,0.0 -725.0,0.0 -726.0,0.0 -727.0,0.0 -728.0,0.0 -729.0,0.0 -730.0,0.0 -731.0,0.0 -732.0,1.0 -733.0,0.0 -734.0,0.0 -735.0,0.0 -736.0,0.0 -737.0,0.0 -738.0,0.0 -739.0,0.0 -740.0,0.0 -741.0,1.0 -742.0,0.0 -743.0,1.0 -744.0,0.0 -745.0,0.0 -746.0,0.0 -747.0,0.0 -748.0,0.0 -749.0,0.0 -750.0,0.0 -751.0,0.0 -752.0,0.0 -753.0,0.0 -754.0,0.0 -755.0,0.0 -756.0,0.0 -757.0,0.0 diff --git a/Thur 20 Feb/ACE_ClassML Pipeline.ipynb b/Thur 20 Feb/ACE_ClassML Pipeline.ipynb index bb4dd52..e55fe6d 100644 --- a/Thur 20 Feb/ACE_ClassML Pipeline.ipynb +++ b/Thur 20 Feb/ACE_ClassML Pipeline.ipynb @@ -24,15 +24,14 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "#import the necessary libraries\n", "import pandas as pd\n", "import numpy as np\n", - "import matplotlib.pyplot as plt # like this\n", - "# from matplotlib import pyplot, plt.plot.scatter(x,y)\n", + "import matplotlib.pyplot as plt\n", "import seaborn as sns \n", "\n", "#let's remove the annoying warnings from our cells.\n", @@ -42,7 +41,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -59,7 +58,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -78,7 +77,16 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pd.read" + ] + }, + { + "cell_type": "code", + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -194,7 +202,7 @@ "4 2.288 33 1 " ] }, - "execution_count": 7, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -202,7 +210,7 @@ "source": [ "#let's read in the data\n", "data = pd.read_csv('diabetes.csv')\n", - "data.head(5)\n" + "data.head(5)" ] }, { @@ -220,7 +228,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -229,7 +237,7 @@ "(768, 9)" ] }, - "execution_count": 8, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -244,7 +252,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -255,7 +263,7 @@ " dtype='object')" ] }, - "execution_count": 9, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -278,7 +286,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -296,7 +304,7 @@ "dtype: object" ] }, - "execution_count": 10, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -3857,7 +3865,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.3" + "version": "3.7.4" }, "varInspector": { "cols": {