Skip to content

Instantly share code, notes, and snippets.

@subpath
Created October 22, 2015 13:32
Show Gist options
  • Save subpath/9bf22088e5b940e4d6d5 to your computer and use it in GitHub Desktop.
Save subpath/9bf22088e5b940e4d6d5 to your computer and use it in GitHub Desktop.
Classification in Python
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Example of Machine Learning classifications in Python"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So for the classification example I choose \n",
"[Thyroid Disease (New Thyroid) data set](http://sci2s.ugr.es/keel/dataset.php?cod=66).\n",
"This data set is one of the several databases about Thyroid avalaible at the UCI repository. \n",
"The task was to detect is a given patient is normal (1) or suffers from hyperthyroidism (2) or hypothyroidism (3)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>T3resin</th>\n",
" <th>Thyroxin</th>\n",
" <th>Triiodothyronine</th>\n",
" <th>Thyroidstimulating</th>\n",
" <th>TSH_value</th>\n",
" <th>Class</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>215.000000</td>\n",
" <td>215.000000</td>\n",
" <td>215.000000</td>\n",
" <td>215.000000</td>\n",
" <td>215.000000</td>\n",
" <td>215.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>109.595349</td>\n",
" <td>9.804651</td>\n",
" <td>2.050233</td>\n",
" <td>2.880000</td>\n",
" <td>4.199070</td>\n",
" <td>1.441860</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>13.145447</td>\n",
" <td>4.697362</td>\n",
" <td>1.419486</td>\n",
" <td>6.118031</td>\n",
" <td>8.070519</td>\n",
" <td>0.726737</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>65.000000</td>\n",
" <td>0.500000</td>\n",
" <td>0.200000</td>\n",
" <td>0.100000</td>\n",
" <td>-0.700000</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>103.000000</td>\n",
" <td>7.100000</td>\n",
" <td>1.350000</td>\n",
" <td>1.000000</td>\n",
" <td>0.550000</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>110.000000</td>\n",
" <td>9.200000</td>\n",
" <td>1.700000</td>\n",
" <td>1.300000</td>\n",
" <td>2.000000</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>117.500000</td>\n",
" <td>11.300000</td>\n",
" <td>2.200000</td>\n",
" <td>1.700000</td>\n",
" <td>4.100000</td>\n",
" <td>2.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>144.000000</td>\n",
" <td>25.300000</td>\n",
" <td>10.000000</td>\n",
" <td>56.400000</td>\n",
" <td>56.300000</td>\n",
" <td>3.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" T3resin Thyroxin Triiodothyronine Thyroidstimulating \\\n",
"count 215.000000 215.000000 215.000000 215.000000 \n",
"mean 109.595349 9.804651 2.050233 2.880000 \n",
"std 13.145447 4.697362 1.419486 6.118031 \n",
"min 65.000000 0.500000 0.200000 0.100000 \n",
"25% 103.000000 7.100000 1.350000 1.000000 \n",
"50% 110.000000 9.200000 1.700000 1.300000 \n",
"75% 117.500000 11.300000 2.200000 1.700000 \n",
"max 144.000000 25.300000 10.000000 56.400000 \n",
"\n",
" TSH_value Class \n",
"count 215.000000 215.000000 \n",
"mean 4.199070 1.441860 \n",
"std 8.070519 0.726737 \n",
"min -0.700000 1.000000 \n",
"25% 0.550000 1.000000 \n",
"50% 2.000000 1.000000 \n",
"75% 4.100000 2.000000 \n",
"max 56.300000 3.000000 "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#import libraries for dataset\n",
"import numpy as np\n",
"import pandas as pd\n",
"\n",
"#import machine learning libraries\n",
"from sklearn.cross_validation import train_test_split\n",
"from sklearn.neighbors import KNeighborsClassifier\n",
"from sklearn.linear_model import LogisticRegression\n",
"from sklearn import metrics, tree\n",
"\n",
"# Plot imports\n",
"import seaborn as sns\n",
"sns.set_style('whitegrid')\n",
"%matplotlib inline\n",
"\n",
"# import dataset\n",
"\n",
"df = pd.read_csv('Thyroid Disease (New Thyroid) data set.csv')\n",
"\n",
"# Look at the data\n",
"df.describe()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>T3resin</th>\n",
" <th>Thyroxin</th>\n",
" <th>Triiodothyronine</th>\n",
" <th>Thyroidstimulating</th>\n",
" <th>TSH_value</th>\n",
" <th>Class</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>107</td>\n",
" <td>10.1</td>\n",
" <td>2.2</td>\n",
" <td>0.9</td>\n",
" <td>2.7</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>113</td>\n",
" <td>9.9</td>\n",
" <td>3.1</td>\n",
" <td>2.0</td>\n",
" <td>5.9</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>127</td>\n",
" <td>12.9</td>\n",
" <td>2.4</td>\n",
" <td>1.4</td>\n",
" <td>0.6</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>109</td>\n",
" <td>5.3</td>\n",
" <td>1.6</td>\n",
" <td>1.4</td>\n",
" <td>1.5</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>105</td>\n",
" <td>7.3</td>\n",
" <td>1.5</td>\n",
" <td>1.5</td>\n",
" <td>-0.1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" T3resin Thyroxin Triiodothyronine Thyroidstimulating TSH_value Class\n",
"0 107 10.1 2.2 0.9 2.7 1\n",
"1 113 9.9 3.1 2.0 5.9 1\n",
"2 127 12.9 2.4 1.4 0.6 1\n",
"3 109 5.3 1.6 1.4 1.5 1\n",
"4 105 7.3 1.5 1.5 -0.1 1"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\n",
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So dataset looks good, no missing values or anomalies.\n",
"Lets visualize our dataset."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x1963b438>"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nwH8B9e2Py8CYgUwAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x191a6d30>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"dataF = pd.melt(df, \"Class\", var_name=\"criteria\")\n",
"\n",
"sns.stripplot(x=\"criteria\", y=\"value\", hue=\"Class\", data=dataF,\n",
" jitter=True, edgecolor=\"gray\",size = 6)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##Machine Learning part"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First you need to reshape your data, so it become vectors like that:\n",
"[x1,x2,x,3], [y1]. \n",
"For each features (x1,x2...xn) there own label (y).\n",
"It's mean that for each T3resin, Thyroxin, Triiodothyronine, Thyroidstimulating, TSH_value values you should have class.\n",
"And I did it with following code."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"i=0\n",
"x={}\n",
"while i<len(df['Class']):\n",
" x[i]=[df['T3resin'][i], df['Thyroxin'][i], df['Triiodothyronine'][i], df['Thyroidstimulating'][i],df['TSH_value'][i]] \n",
" i+=1\n",
"i=0\n",
"X=[]\n",
"while i<len(df['Class']):\n",
" X.append(x[i])\n",
" i+=1 "
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" T3resin Thyroxin Triiodothyronine Thyroidstimulating TSH_value Class\n",
"0 107 10.1 2.2 0.9 2.7 1\n",
"1 113 9.9 3.1 2.0 5.9 1\n",
"2 127 12.9 2.4 1.4 0.6 1\n",
"3 109 5.3 1.6 1.4 1.5 1\n",
"4 105 7.3 1.5 1.5 -0.1 1\n",
"5 105 6.1 2.1 1.4 7.0 1\n",
"6 110 10.4 1.6 1.6 2.7 1\n",
"7 114 9.9 2.4 1.5 5.7 1\n",
"8 106 9.4 2.2 1.5 0.0 1\n",
"9 107 13.0 1.1 0.9 3.1 1\n"
]
}
],
"source": [
"#data set before:\n",
"print df[:10]"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[107, 10.1, 2.2000000000000002, 0.90000000000000002, 2.7000000000000002], [113, 9.9000000000000004, 3.1000000000000001, 2.0, 5.9000000000000004], [127, 12.9, 2.3999999999999999, 1.3999999999999999, 0.59999999999999998], [109, 5.2999999999999998, 1.6000000000000001, 1.3999999999999999, 1.5], [105, 7.2999999999999998, 1.5, 1.5, -0.10000000000000001], [105, 6.0999999999999996, 2.1000000000000001, 1.3999999999999999, 7.0], [110, 10.4, 1.6000000000000001, 1.6000000000000001, 2.7000000000000002], [114, 9.9000000000000004, 2.3999999999999999, 1.5, 5.7000000000000002], [106, 9.4000000000000004, 2.2000000000000002, 1.5, 0.0], [107, 13.0, 1.1000000000000001, 0.90000000000000002, 3.1000000000000001]]\n"
]
}
],
"source": [
"#data set after\n",
"\n",
"print(X[:10])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So another words I create a matrix where n-row contsins fearures for n-label Class.\n",
"I'm pretty sure there are much better ways to do it, but this is how I figured out solution myself :)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# makes an array of labels\n",
"\n",
"Y = np.array(df.Class)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now splitting our data into data for model training and model testing"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"X_train, X_test, Y_train, Y_test = train_test_split( X, Y, test_size=None, random_state=42)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"###Finaly Machine learning part"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I will use 3 differen techiques:\n",
"kNeighbors, Logistic Regression, Decision Tree.\n",
"\n",
"Every time the same sequence: \n",
"1. import classifier\n",
"2. Fit the data\n",
"3. Make a prediction\n",
"4. Score your model"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"#Import the kNeighbors Classifiers \n",
"knn = KNeighborsClassifier(n_neighbors = 3)\n",
"\n",
"# Fit the data\n",
"knn.fit(X_train,Y_train)\n",
"\n",
"# Run a prediction\n",
"Y_pred = knn.predict(X_test)\n",
"Y_test = np.array(Y_test)\n",
"\n",
"# Check Accuracy against the Testing Set\n",
"knn_result = metrics.accuracy_score(Y_test,Y_pred)\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Same thing with other models"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Create a Logistic Regression Class object\n",
"logreg = LogisticRegression()\n",
"logreg.fit(X_train, Y_train)\n",
"\n",
"\n",
"# Prediction from X_test\n",
"Y_pred = logreg.predict(X_test)\n",
"\n",
"#Check accuracy\n",
"logreg_results = metrics.accuracy_score(Y_test,Y_pred)\n",
"\n",
"\n",
"clf = tree.DecisionTreeClassifier()\n",
"clf = clf.fit(X_train, Y_train)\n",
"\n",
"Y_pred = clf.predict(X_test)\n",
"#Check accuracy\n",
"clf_results = metrics.accuracy_score(Y_test,Y_pred)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[0.96296296296296291, 0.94444444444444442, 0.98148148148148151]\n"
]
}
],
"source": [
"#Check which model is better\n",
"overall_results = [knn_result,logreg_results,clf_results]\n",
"\n",
"print(overall_results)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So it looks like Decision Tree most acuratly decribe our data.\n",
"So if you have parameters of patient such us our features, you can determine type of Thyroid he have with 98% accuracy."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Was noticed that results of models predicrion depent on how you split your data into training and test sets. For example if random_state in train_test_split function will be different best result could be obtain from other model and not from Decision Tree.\n",
"\n",
"I will learn about next time. "
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.10"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment