Skip to content

Instantly share code, notes, and snippets.

@h5li
Created February 2, 2019 18:52
Show Gist options
  • Save h5li/9888f0616c4e4ef147e9c03df9a700b8 to your computer and use it in GitHub Desktop.
Save h5li/9888f0616c4e4ef147e9c03df9a700b8 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Flower Classification 🌸 🌻\n",
"Hello fellow kids! Today we'll be working with the ultra-famous iris dataset. It's a pretty separable dataset so it works well for beginners. First, we'll graph the data, so we can get a good idea of what the shape of the data is. Then we'll work on building a classifier to separate the data so that we can predict classes from the list of features."
]
},
{
"cell_type": "code",
"execution_count": 79,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from sklearn.neighbors import KNeighborsClassifier\n",
"import seaborn as sns"
]
},
{
"cell_type": "code",
"execution_count": 81,
"metadata": {},
"outputs": [],
"source": [
"df = pd.read_csv(\"Iris.csv\")"
]
},
{
"cell_type": "code",
"execution_count": 82,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Id</th>\n",
" <th>SepalLengthCm</th>\n",
" <th>SepalWidthCm</th>\n",
" <th>PetalLengthCm</th>\n",
" <th>PetalWidthCm</th>\n",
" <th>Species</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>5.1</td>\n",
" <td>3.5</td>\n",
" <td>1.4</td>\n",
" <td>0.2</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>4.9</td>\n",
" <td>3.0</td>\n",
" <td>1.4</td>\n",
" <td>0.2</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>4.7</td>\n",
" <td>3.2</td>\n",
" <td>1.3</td>\n",
" <td>0.2</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>4.6</td>\n",
" <td>3.1</td>\n",
" <td>1.5</td>\n",
" <td>0.2</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5</td>\n",
" <td>5.0</td>\n",
" <td>3.6</td>\n",
" <td>1.4</td>\n",
" <td>0.2</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species\n",
"0 1 5.1 3.5 1.4 0.2 Iris-setosa\n",
"1 2 4.9 3.0 1.4 0.2 Iris-setosa\n",
"2 3 4.7 3.2 1.3 0.2 Iris-setosa\n",
"3 4 4.6 3.1 1.5 0.2 Iris-setosa\n",
"4 5 5.0 3.6 1.4 0.2 Iris-setosa"
]
},
"execution_count": 82,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 83,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Iris-virginica 50\n",
"Iris-versicolor 50\n",
"Iris-setosa 50\n",
"Name: Species, dtype: int64"
]
},
"execution_count": 83,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# List out how many rows fall under each species of flower\n",
"df.Species.value_counts()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"When we look at the dataset, we can see that the there are three different species of flowers in the dataset. Also, we should note this dataset is unusually small. That's not a huge problem, but it is something to keep in mind."
]
},
{
"cell_type": "code",
"execution_count": 84,
"metadata": {},
"outputs": [],
"source": [
"# Let's add another column to our dataframe and change our species names to numbers so that we can put it into\n",
"# a math equation if necessary\n",
"df['class'] = df.Species.replace({\"Iris-setosa\":0,\"Iris-versicolor\":1, \"Iris-virginica\":2})"
]
},
{
"cell_type": "code",
"execution_count": 85,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm \\\n",
"count 150.000000 150.000000 150.000000 150.000000 150.000000 \n",
"mean 75.500000 5.843333 3.054000 3.758667 1.198667 \n",
"std 43.445368 0.828066 0.433594 1.764420 0.763161 \n",
"min 1.000000 4.300000 2.000000 1.000000 0.100000 \n",
"25% 38.250000 5.100000 2.800000 1.600000 0.300000 \n",
"50% 75.500000 5.800000 3.000000 4.350000 1.300000 \n",
"75% 112.750000 6.400000 3.300000 5.100000 1.800000 \n",
"max 150.000000 7.900000 4.400000 6.900000 2.500000 \n",
"\n",
" class \n",
"count 150.000000 \n",
"mean 1.000000 \n",
"std 0.819232 \n",
"min 0.000000 \n",
"25% 0.000000 \n",
"50% 1.000000 \n",
"75% 2.000000 \n",
"max 2.000000 \n"
]
}
],
"source": [
"# A helpful command for describing each of our four features.\n",
"print(df.describe())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Visualizing the data\n",
"We can use matplotlib to help us graph the data which will let us know how similar the flower species are to each other. Each class/species will be colored differently."
]
},
{
"cell_type": "code",
"execution_count": 93,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f1a630ee6d8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"x = df.PetalWidthCm\n",
"y = df.PetalLengthCm\n",
"plt.scatter(x, y, c=df['class'])\n",
"plt.title(\"Petal Width Versus Petal Length in Iris Species\")\n",
"plt.xlabel(\"Petal Width in Cm\")\n",
"plt.ylabel(\"Petal Length in Cm\")\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 94,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f1a630a64a8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"x = df.SepalWidthCm\n",
"y = df.SepalLengthCm\n",
"plt.scatter(x, y, c=df['class'])\n",
"plt.title(\"Sepal Width Versus Sepal Length in Iris Species\")\n",
"plt.xlabel(\"Sepal Width in Cm\")\n",
"plt.ylabel(\"Sepal Length in Cm\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Hmmm, it seems as though if we wanted to separate the classes of iris data, the petal length and width give us more separation of data then the sepal length and width. "
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [],
"source": [
"# In order to do a predictive task, we should split up the data into two groups, our testing and training data.\n",
"# An 80% train, 20% test split usually works fine.\n",
"randomized_df = df.sample(frac=1)\n",
"split = int((0.8)*len(df))\n",
"train = randomized_df.iloc[0:split, :]\n",
"test = randomized_df.iloc[split:, :]"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Split test and train into X and y data\n",
"train_X = train.iloc[:, 1:5]\n",
"train_y = train.iloc[:, 6]\n",
"test_X = test.iloc[:, 1:5]\n",
"test_y = test.iloc[:, 6]"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=5, p=2,\n",
" weights='uniform')"
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Train Knn on features\n",
"classifier = KNeighborsClassifier()\n",
"classifier.fit(train_X, train_y)"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {},
"outputs": [],
"source": [
"# Use trained classifier to predict test data labels\n",
"predictions = classifier.predict(test_X)"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Accuracy on test dataset: 0.97\n"
]
}
],
"source": [
"print(\"Accuracy on test dataset:\", round(sum(predictions == test_y)/(len(test_y)),2))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"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.6.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment