{ "metadata": { "name": "", "signature": "sha256:a710fc018979c8bb7e30b0d8c168fb88620bdbd9106ea5ba65347af7c9307178" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "%load_ext watermark\n", "%watermark -a 'Sebastian Raschka' -v" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Sebastian Raschka \n", "\n", "CPython 3.4.2\n", "IPython 2.3.0\n" ] } ], "prompt_number": 1 }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Music Mood Classification Using Random Forests" ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Sections" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- [Reading the Training Dataset](#Reading-the-Training-Dataset)\n", "- [Text Preprocessing](#Text-Preprocessing)\n", " - [Feature Extraction - Cross Validation Error](#Transform-texts-into-bag-of-words-models---Trying-different-tokenizers)\n", " - [Looking at vocabulary sizes](#Looking-at-vocabulary-sizes)\n", "- [Model Selection](#Model-Selection)\n", " - [Feature Extraction - Cross Validation Error](#Feature-Extraction---Cross-Validation-Error)\n", " - [ROC Curve](#ROC-Curve)\n", "- [Hyperparameter Tuning](#Hyperparameter-Tuning)\n", " - [Effect of the number of estimators](#Effect-of-the-number-of-estimators)\n", " - [GridSearch](#GridSearch)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
" ] }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Reading the Training Dataset" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- [[back to top](#Sections)]" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import pandas as pd\n", "\n", "df_train = pd.read_csv('../../dataset/training/train_lyrics_1000.csv')\n", "df_test = pd.read_csv('../../dataset/validation/valid_lyrics_200.csv')\n", "\n", "df_train.tail()" ], "language": "python", "metadata": {}, "outputs": [ { "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", "
fileartisttitlelyricsmoodyear
995 TRBIGRY128F42597B3.h5 Sade All About Our Love Its all about our love\\nSo shall it be forever... sad 2000
996 TRBIIEU128F9307C88.h5 New Found Glory Don't Let Her Pull You Down It's time that I rain on your parade\\nWatch as... happy 2009
997 TRBIIJY12903CE4755.h5 Mindy McCready Ten Thousand Angels Speakin of the devil\\nLook who just walked in\\... happy 1996
998 TRBIIOT128F423C594.h5 Joy Division Leaders Of Men Born from some mother's womb\\nJust like any ot... sad 1978
999 TRBIJYB128F14AE326.h5 Seventh Day Slumber Shattered Life This wanting more from me is tearing me, it's ... sad 2005
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 13, "text": [ " file artist title \\\n", "995 TRBIGRY128F42597B3.h5 Sade All About Our Love \n", "996 TRBIIEU128F9307C88.h5 New Found Glory Don't Let Her Pull You Down \n", "997 TRBIIJY12903CE4755.h5 Mindy McCready Ten Thousand Angels \n", "998 TRBIIOT128F423C594.h5 Joy Division Leaders Of Men \n", "999 TRBIJYB128F14AE326.h5 Seventh Day Slumber Shattered Life \n", "\n", " lyrics mood year \n", "995 Its all about our love\\nSo shall it be forever... sad 2000 \n", "996 It's time that I rain on your parade\\nWatch as... happy 2009 \n", "997 Speakin of the devil\\nLook who just walked in\\... happy 1996 \n", "998 Born from some mother's womb\\nJust like any ot... sad 1978 \n", "999 This wanting more from me is tearing me, it's ... sad 2005 " ] } ], "prompt_number": 13 }, { "cell_type": "code", "collapsed": false, "input": [ "X_train = df_train['lyrics']\n", "y_train = df_train['mood']\n", "\n", "X_test = df_test['lyrics']\n", "y_test = df_test['mood']" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 14 }, { "cell_type": "code", "collapsed": false, "input": [ "# Label encoder\n", "\n", "import pickle\n", "import numpy as np\n", "\n", "pickle_in = open('./label_encoder.p', 'rb')\n", "le = pickle.load(pickle_in)\n", "pickle_in.close()\n", "\n", "print('before: %s ...' %y_train[:5])\n", "\n", "y_train = le.transform(y_train)\n", "y_test = le.transform(y_test)\n", "\n", "print('after: %s ...' %y_train[:5])" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "before: 0 sad\n", "1 happy\n", "2 sad\n", "3 happy\n", "4 sad\n", "Name: mood, dtype: object ...\n", "after: [1 0 1 0 1] ..." ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n" ] } ], "prompt_number": 15 }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
" ] }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Text Preprocessing" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- [[back to top](#Sections)]" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import pickle\n", "stop_words = pickle.load(open('./stopwords.p', 'rb'))\n", "semantic_words = pickle.load(open('./whitelist_dicts/semantic_words_py34.p', 'rb'))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
" ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Transform texts into bag of words models - Trying different tokenizers" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- [[back to top](#Sections)]" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from nltk.stem.porter import PorterStemmer\n", "from nltk.stem.snowball import EnglishStemmer\n", "\n", "porter = PorterStemmer()\n", "snowball = EnglishStemmer()\n", "\n", "# raw words\n", "tokenizer = lambda text: text.split()\n", "\n", "# words after Porter stemming \n", "tokenizer_porter = lambda text: [porter.stem(word) for word in text.split()]\n", "\n", "# Words after Snowball stemming\n", "tokenizer_snowball = lambda text: [snowball.stem(word) for word in text.split()]\n", "\n", "# Only words that are in a list of 'positive' or 'negative' words ('whitelist')\n", "# http://www.cs.uic.edu/~liub/FBS/sentiment-analysis.html#lexicon\n", "tokenizer_whitelist = lambda text: [word for word in text.split() if word in semantic_words]\n", "\n", "# Porter-stemmed words in whitelist\n", "tokenizer_porter_wl = lambda text: [porter.stem(word) for word in text.split() if word in semantic_words]\n", "\n", "# Snowball-stemmed words in whitelist\n", "tokenizer_snowball_wl = lambda text: [snowball.stem(word) for word in text.split() if word in semantic_words]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
" ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Looking at vocabulary sizes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- [[back to top](#Sections)]" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import re\n", "from sklearn.feature_extraction.text import CountVectorizer\n", "from sklearn.feature_extraction.text import TfidfVectorizer\n", "from sklearn.pipeline import Pipeline\n", "from sklearn.ensemble import RandomForestClassifier\n", "from mlxtend.sklearn import DenseTransformer\n", "\n", "vect_1 = CountVectorizer(binary=False,\n", " stop_words=stop_words,\n", " ngram_range=(1,1),\n", " preprocessor=lambda text: re.sub('[^a-zA-Z]', ' ', text.lower()),\n", " tokenizer=tokenizer)\n", "\n", "vect_2 = CountVectorizer(binary=False,\n", " stop_words=stop_words,\n", " ngram_range=(1,1),\n", " preprocessor=lambda text: re.sub('[^a-zA-Z]', ' ', text.lower()),\n", " tokenizer=tokenizer_porter)\n", " \n", "vect_3 = CountVectorizer(binary=False,\n", " stop_words=stop_words,\n", " ngram_range=(1,1),\n", " preprocessor=lambda text: re.sub('[^a-zA-Z]', ' ', text.lower()),\n", " tokenizer=tokenizer_snowball) \n", "\n", "vect_4 = CountVectorizer(binary=False,\n", " stop_words=stop_words,\n", " ngram_range=(1,1),\n", " preprocessor=lambda text: re.sub('[^a-zA-Z]', ' ', text.lower()),\n", " tokenizer=tokenizer_whitelist) \n", "\n", "vect_5 = CountVectorizer(binary=False,\n", " stop_words=stop_words,\n", " ngram_range=(1,1),\n", " preprocessor=lambda text: re.sub('[^a-zA-Z]', ' ', text.lower()),\n", " tokenizer=tokenizer_porter_wl)\n", "\n", "vect_6 = CountVectorizer(binary=False,\n", " stop_words=stop_words,\n", " ngram_range=(1,1),\n", " preprocessor=lambda text: re.sub('[^a-zA-Z]', ' ', text.lower()),\n", " tokenizer=tokenizer_snowball_wl)\n", "\n", "vect_7 = TfidfVectorizer(binary=False,\n", " stop_words=stop_words,\n", " ngram_range=(1,1),\n", " preprocessor=lambda text: re.sub('[^a-zA-Z]', ' ', text.lower()),\n", " tokenizer=tokenizer)\n", "\n", "vect_8 = TfidfVectorizer(binary=False,\n", " stop_words=stop_words,\n", " ngram_range=(1,1),\n", " preprocessor=lambda text: re.sub('[^a-zA-Z]', ' ', text.lower()),\n", " tokenizer=tokenizer_porter)\n", " \n", "vect_9 = TfidfVectorizer(binary=False,\n", " stop_words=stop_words,\n", " ngram_range=(1,1),\n", " preprocessor=lambda text: re.sub('[^a-zA-Z]', ' ', text.lower()),\n", " tokenizer=tokenizer_snowball)\n", "\n", "vect_10 = TfidfVectorizer(binary=False,\n", " stop_words=stop_words,\n", " ngram_range=(1,1),\n", " preprocessor=lambda text: re.sub('[^a-zA-Z]', ' ', text.lower()),\n", " tokenizer=tokenizer_whitelist) \n", "\n", "vect_11 = TfidfVectorizer(binary=False,\n", " stop_words=stop_words,\n", " ngram_range=(1,1),\n", " preprocessor=lambda text: re.sub('[^a-zA-Z]', ' ', text.lower()),\n", " tokenizer=tokenizer_porter_wl)\n", "\n", "vect_12 = TfidfVectorizer(binary=False,\n", " stop_words=stop_words,\n", " ngram_range=(1,1),\n", " preprocessor=lambda text: re.sub('[^a-zA-Z]', ' ', text.lower()),\n", " tokenizer=tokenizer_snowball_wl)\n", "\n", "\n", "pipelines = []\n", "vectorizers = [vect_1, vect_2, vect_3, vect_4, vect_5, vect_6, vect_7, vect_8, vect_9, vect_10, vect_11, vect_12]\n", "for v in vectorizers:\n", " pipelines.append(Pipeline([('vect', v),\n", " ('dense', DenseTransformer()),\n", " ('clf', RandomForestClassifier(n_estimators=100))]))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "# done before max_features was set\n", "\n", "print('Vocabulary sizes\\n')\n", "labels = ['CountVec', 'CountVec porter', 'CountVec snowball', 'CountVec wl', 'CountVec porter+wl','CountVec snowball+wl',\n", " 'TfidfVec', 'TfidfVec porter', 'TfidfVec snowball', 'TfidfVec wl', 'TfidfVec porter+wl','TfidfVec snowball+wl',]\n", "\n", "for label, v in zip(labels, vectorizers):\n", " v.fit(X_train)\n", " print('%s: %s' % (label, len(v.vocabulary_)))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Vocabulary sizes\n", "\n", "CountVec: 11378" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "CountVec porter: 8551" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "CountVec snowball: 8528" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "CountVec wl: 1666" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "CountVec porter+wl: 1349" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "CountVec snowball+wl: 1332" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "TfidfVec: 11378" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "TfidfVec porter: 8551" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "TfidfVec snowball: 8528" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "TfidfVec wl: 1666" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "TfidfVec porter+wl: 1349" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "TfidfVec snowball+wl: 1332" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n" ] } ], "prompt_number": 17 }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
" ] }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Model Selection" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- [[back to top](#Sections)]" ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Feature Extraction - Cross Validation Error" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- [[back to top](#Sections)]" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn import metrics\n", "from sklearn import cross_validation\n", "\n", "labels = ['CountVec', 'CountVec porter', 'CountVec snowball', 'CountVec wl', 'CountVec porter+wl','CountVec snowball+wl',\n", " 'TfidfVec', 'TfidfVec porter', 'TfidfVec snowball', 'TfidfVec wl', 'TfidfVec porter+wl','TfidfVec snowball+wl',]\n", "\n", "\n", "\n", "d = {'Data':labels,\n", " 'ROC AUC (%)':[],}\n", "\n", "for i,clf in enumerate(pipelines):\n", " scores = cross_validation.cross_val_score(estimator=clf, X=X_train, y=y_train, scoring='roc_auc', cv=10)\n", " print('clf %s, %s: %s' % (i+1, labels[i], scores.mean()*100))\n", " d['ROC AUC (%)'].append('%0.2f (+/- %0.2f)' % (scores.mean()*100, scores.std()*100))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "clf 1, CountVec: 72.4267184835\n", "clf 2, CountVec porter: 72.5908238226" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "clf 3, CountVec snowball: 74.2652990948" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "clf 4, CountVec wl: 68.4214056146" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "clf 5, CountVec porter+wl: 68.7880362062" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "clf 6, CountVec snowball+wl: 69.3732388823" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "clf 7, TfidfVec: 70.9020529975" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "clf 8, TfidfVec porter: 73.5260330579" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "clf 9, TfidfVec snowball: 72.5986685032" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "clf 10, TfidfVec wl: 66.7347697757" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "clf 11, TfidfVec porter+wl: 69.1317821068" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "clf 12, TfidfVec snowball+wl: 68.3577298964" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n" ] } ], "prompt_number": 19 }, { "cell_type": "code", "collapsed": false, "input": [ "df_perform = pd.DataFrame(d)\n", "df_perform = df_perform['ROC AUC (%)']\n", "df_perform.index=(labels)\n", "df_perform" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 20, "text": [ "CountVec 72.43 (+/- 4.18)\n", "CountVec porter 72.59 (+/- 6.05)\n", "CountVec snowball 74.27 (+/- 5.00)\n", "CountVec wl 68.42 (+/- 4.92)\n", "CountVec porter+wl 68.79 (+/- 4.48)\n", "CountVec snowball+wl 69.37 (+/- 4.69)\n", "TfidfVec 70.90 (+/- 4.03)\n", "TfidfVec porter 73.53 (+/- 4.21)\n", "TfidfVec snowball 72.60 (+/- 4.61)\n", "TfidfVec wl 66.73 (+/- 5.91)\n", "TfidfVec porter+wl 69.13 (+/- 5.08)\n", "TfidfVec snowball+wl 68.36 (+/- 6.03)\n", "Name: ROC AUC (%), dtype: object" ] } ], "prompt_number": 20 }, { "cell_type": "code", "collapsed": false, "input": [ "df_perform.to_csv('./random_forests_data/rand_forest_featextr_1.csv', index=False)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 21 }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
" ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "ROC Curve" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- [[back to top](#Sections)]" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 22 }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn.metrics import roc_curve, auc\n", "import seaborn as sns\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from sklearn.cross_validation import KFold\n", "from scipy import interp\n", "\n", "sns.set()\n", "sns.set_style(\"whitegrid\")\n", "\n", "classifier = Pipeline([('vect', TfidfVectorizer(binary=False,\n", " stop_words=stop_words,\n", " ngram_range=(1,1),\n", " preprocessor=lambda text: re.sub('[^a-zA-Z]', ' ', text.lower()),\n", " max_features = 5000,\n", " tokenizer=lambda text: [porter.stem(word) for word in text.split()]\n", " )),\n", " ('dense', DenseTransformer()),\n", " ('clf', RandomForestClassifier(n_estimators=100))])\n", "\n", "\n", "cv = KFold(y_train.shape[0], n_folds=10, random_state=123)\n", "\n", "mean_tpr = 0.0\n", "mean_fpr = np.linspace(0, 1, 100)\n", "all_tpr = []\n", "\n", "for i, (train, test) in enumerate(cv):\n", " probas_ = classifier.fit(X_train[train], y_train[train]).predict_proba(X_train[test])\n", " # Compute ROC curve and area the curve\n", " fpr, tpr, thresholds = roc_curve(y_train[test], probas_[:, 1])\n", " mean_tpr += interp(mean_fpr, fpr, tpr)\n", " mean_tpr[0] = 0.0\n", " roc_auc = auc(fpr, tpr)\n", " plt.plot(fpr, tpr, lw=1, label='ROC fold %d (area = %0.2f)' % (i+1, roc_auc))\n", "\n", "plt.plot([0, 1], [0, 1], '--', color=(0.6, 0.6, 0.6), label='Random Guessing')\n", "\n", "mean_tpr /= len(cv)\n", "mean_tpr[-1] = 1.0\n", "mean_auc = auc(mean_fpr, mean_tpr)\n", "plt.plot(mean_fpr, mean_tpr, 'k--',\n", " label='Mean ROC (area = %0.2f)' % mean_auc, lw=2)\n", "\n", "plt.xlim([-0.05, 1.05])\n", "plt.ylim([-0.05, 1.05])\n", "plt.xlabel('False Positive Rate')\n", "plt.ylabel('True Positive Rate')\n", "plt.tight_layout()\n", "plt.savefig('./random_forests_images/roc_tfidf_porter_1.eps', dpi=300)\n", "plt.legend(loc=\"lower right\")\n", "\n", "plt.show()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nJ3kAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 24 }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
" ] }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Hyperparameter Tuning" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- [[back to top](#Sections)]" ] }, { "cell_type": "code", "collapsed": false, "input": [ "vect = TfidfVectorizer(binary=False,\n", " stop_words=stop_words,\n", " ngram_range=(1,1),\n", " preprocessor=lambda text: re.sub('[^a-zA-Z]', ' ', text.lower()),\n", " tokenizer=lambda text: [porter.stem(word) for word in text.split()])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
" ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Effect of the number of estimators" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- [[back to top](#Sections)]" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn.metrics import roc_curve, auc\n", "from sklearn import cross_validation\n", "\n", "pipe_1 = Pipeline([\n", " ('vect', vect),\n", " ('dense', DenseTransformer()),\n", " ('clf', RandomForestClassifier(n_estimators=50))])\n", "\n", "pipe_2 = Pipeline([\n", " ('vect', vect),\n", " ('dense', DenseTransformer()),\n", " ('clf', RandomForestClassifier(n_estimators=100))])\n", "\n", "pipe_3 = Pipeline([\n", " ('vect', vect),\n", " ('dense', DenseTransformer()),\n", " ('clf', RandomForestClassifier(n_estimators=200))])\n", "\n", "pipe_4 = Pipeline([\n", " ('vect', vect),\n", " ('dense', DenseTransformer()),\n", " ('clf', RandomForestClassifier(n_estimators=400))])\n", "\n", "labels = [50, 100, 200, 400]\n", "\n", "for i,clf in enumerate([pipe_1, pipe_2, pipe_3, pipe_4]):\n", " scores = cross_validation.cross_val_score(estimator=clf, X=X_train, y=y_train, scoring='roc_auc', cv=10)\n", " print('clf %s, %s: %0.2f (+/- %0.2f)' % (i+1, labels[i], scores.mean()*100, scores.std()*100))\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "clf 1, 50: 71.31 (+/- 6.53)\n", "clf 2, 100: 71.62 (+/- 4.76)" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "clf 3, 200: 72.51 (+/- 3.81)" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "clf 4, 400: 74.77 (+/- 3.80)" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n" ] } ], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
" ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "GridSearch" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- [[back to top](#Sections)]" ] }, { "cell_type": "code", "collapsed": false, "input": [ "X_train_feat = vect.fit_transform(X_train, y_train)\n", "X_train_feat = X_train_feat.toarray()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 12 }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn.grid_search import GridSearchCV\n", "from sklearn.metrics import classification_report\n", "\n", "\n", "clf_2 = RandomForestClassifier(n_estimators=50)\n", "\n", "\n", "tuned_parameters = [\n", " {'criterion': ['gini', 'entropy'], \n", " 'max_features': ['auto', 'log2', 'sqrt'],\n", " 'min_samples_split':[2,3], \n", " 'min_samples_leaf':[1,2]},\n", " ]\n", "\n", "\n", "grid_search_1 = GridSearchCV(clf_2, \n", " tuned_parameters, \n", " n_jobs=1, \n", " scoring='roc_auc',\n", " cv=10\n", " )\n", "\n", "grid_search_1.fit(X_train_feat, X_train_feat)\n", "\n", "print(\"Best parameters set found on development set:\")\n", "print()\n", "print(grid_search_1.best_estimator_)\n", "print()\n", "print(\"Grid scores on development set:\")\n", "print()\n", "for params, mean_score, scores in grid_search_1.grid_scores_:\n", " print(\"%0.3f (+/-%0.03f) for %r\"\n", " % (mean_score, scores.std() / 2, params))\n", "\n" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
" ] }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Validation" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Custom scorer methods to account for positive-negative class labels\n", "\n", "from sklearn import metrics\n", "\n", "# `pos_label` for positive class, since we have sad=1, happy=0\n", "\n", "acc_scorer = metrics.make_scorer(metrics.accuracy_score, greater_is_better=True)\n", "pre_scorer = metrics.make_scorer(metrics.precision_score, greater_is_better=True, pos_label=0)\n", "rec_scorer = metrics.make_scorer(metrics.recall_score, greater_is_better=True, pos_label=0)\n", "f1_scorer = metrics.make_scorer(metrics.f1_score, greater_is_better=True, pos_label=0)\n", "auc_scorer = metrics.make_scorer(metrics.roc_auc_score, greater_is_better=True)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 16 }, { "cell_type": "code", "collapsed": false, "input": [ "labels = ['Train CountVec', 'Train CountVec porter', 'Train CountVec snowball', 'Train CountVec wl', \n", " 'Train CountVec porter+wl','Train CountVec snowball+wl',\n", " 'Train TfidfVec', 'Train TfidfVec porter', 'Train TfidfVec snowball', 'Train TfidfVec wl', \n", " 'Train TfidfVec porter+wl','Train TfidfVec snowball+wl',\n", " 'Test CountVec', 'Test CountVec porter', 'Test CountVec snowball', 'Test CountVec wl', \n", " 'Test CountVec porter+wl','Test CountVec snowball+wl',\n", " 'Test TfidfVec', 'Test TfidfVec porter', 'Test TfidfVec snowball', 'Test TfidfVec wl', \n", " 'Test TfidfVec porter+wl','Test TfidfVec snowball+wl',]\n", "\n", "d = {'Data':labels,\n", " 'ACC (%)':[],\n", " 'PRE (%)':[],\n", " 'REC (%)':[],\n", " 'F1 (%)':[],\n", " 'ROC AUC (%)':[],\n", "}\n", "\n", "\n", "for clf in pipelines:\n", " clf.fit(X_train, y_train)\n", "\n", "for clf in pipelines:\n", "\n", " d['ACC (%)'].append(acc_scorer(estimator=clf, X=X_train, y_true=y_train))\n", " d['PRE (%)'].append(pre_scorer(estimator=clf, X=X_train, y_true=y_train))\n", " d['REC (%)'].append(rec_scorer(estimator=clf, X=X_train, y_true=y_train))\n", " d['F1 (%)'].append(f1_scorer(estimator=clf, X=X_train, y_true=y_train))\n", " d['ROC AUC (%)'].append(auc_scorer(estimator=clf, X=X_train, y_true=y_train))\n", "\n", "for clf in pipelines:\n", "\n", " d['ACC (%)'].append(acc_scorer(estimator=clf, X=X_test, y_true=y_test))\n", " d['PRE (%)'].append(pre_scorer(estimator=clf, X=X_test, y_true=y_test))\n", " d['REC (%)'].append(rec_scorer(estimator=clf, X=X_test, y_true=y_test))\n", " d['F1 (%)'].append(f1_scorer(estimator=clf, X=X_test, y_true=y_test))\n", " d['ROC AUC (%)'].append(auc_scorer(estimator=clf, X=X_test, y_true=y_test))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 21 }, { "cell_type": "code", "collapsed": true, "input": [ "pd.set_option('precision', 2)\n", "\n", "df_perform = pd.DataFrame(d)\n", "df_perform = df_perform[['ACC (%)', 'PRE (%)', 'REC (%)', 'F1 (%)', 'ROC AUC (%)']]\n", "df_perform.index=(labels)\n", "df_perform = df_perform*100\n", "df_perform = np.round(df_perform, decimals=2)\n", "df_perform" ], "language": "python", "metadata": {}, "outputs": [ { "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", " \n", " \n", " \n", " \n", "
ACC (%)PRE (%)REC (%)F1 (%)ROC AUC (%)
Train CountVec 99.8 99.8 99.8 99.8 99.8
Train CountVec porter 99.8 99.8 99.8 99.8 99.8
Train CountVec snowball 99.8 99.8 99.8 99.8 99.8
Train CountVec wl 99.5 100.0 98.9 99.4 99.4
Train CountVec porter+wl 99.5 99.8 99.1 99.4 99.5
Train CountVec snowball+wl 99.5 99.8 99.1 99.4 99.5
Train TfidfVec 99.8 99.5 100.0 99.8 99.8
Train TfidfVec porter 99.8 100.0 99.5 99.8 99.8
Train TfidfVec snowball 99.8 99.8 99.8 99.8 99.8
Train TfidfVec wl 99.4 99.5 99.1 99.3 99.4
Train TfidfVec porter+wl 99.4 99.5 99.1 99.3 99.4
Train TfidfVec snowball+wl 99.4 100.0 98.7 99.3 99.3
Test CountVec 61.5 70.6 45.7 55.5 62.3
Test CountVec porter 61.5 72.6 42.9 53.9 62.5
Test CountVec snowball 68.0 80.6 51.4 62.8 68.9
Test CountVec wl 61.0 70.2 44.8 54.6 61.9
Test CountVec porter+wl 62.5 70.3 49.5 58.1 63.2
Test CountVec snowball+wl 62.0 69.3 49.5 57.8 62.7
Test TfidfVec 60.5 71.0 41.9 52.7 61.5
Test TfidfVec porter 63.5 77.6 42.9 55.2 64.6
Test TfidfVec snowball 61.5 74.1 41.0 52.8 62.6
Test TfidfVec wl 56.5 62.5 42.9 50.9 57.2
Test TfidfVec porter+wl 61.0 68.5 47.6 56.2 61.7
Test TfidfVec snowball+wl 63.5 69.0 55.2 61.4 63.9
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 22, "text": [ " ACC (%) PRE (%) REC (%) F1 (%) ROC AUC (%)\n", "Train CountVec 99.8 99.8 99.8 99.8 99.8\n", "Train CountVec porter 99.8 99.8 99.8 99.8 99.8\n", "Train CountVec snowball 99.8 99.8 99.8 99.8 99.8\n", "Train CountVec wl 99.5 100.0 98.9 99.4 99.4\n", "Train CountVec porter+wl 99.5 99.8 99.1 99.4 99.5\n", "Train CountVec snowball+wl 99.5 99.8 99.1 99.4 99.5\n", "Train TfidfVec 99.8 99.5 100.0 99.8 99.8\n", "Train TfidfVec porter 99.8 100.0 99.5 99.8 99.8\n", "Train TfidfVec snowball 99.8 99.8 99.8 99.8 99.8\n", "Train TfidfVec wl 99.4 99.5 99.1 99.3 99.4\n", "Train TfidfVec porter+wl 99.4 99.5 99.1 99.3 99.4\n", "Train TfidfVec snowball+wl 99.4 100.0 98.7 99.3 99.3\n", "Test CountVec 61.5 70.6 45.7 55.5 62.3\n", "Test CountVec porter 61.5 72.6 42.9 53.9 62.5\n", "Test CountVec snowball 68.0 80.6 51.4 62.8 68.9\n", "Test CountVec wl 61.0 70.2 44.8 54.6 61.9\n", "Test CountVec porter+wl 62.5 70.3 49.5 58.1 63.2\n", "Test CountVec snowball+wl 62.0 69.3 49.5 57.8 62.7\n", "Test TfidfVec 60.5 71.0 41.9 52.7 61.5\n", "Test TfidfVec porter 63.5 77.6 42.9 55.2 64.6\n", "Test TfidfVec snowball 61.5 74.1 41.0 52.8 62.6\n", "Test TfidfVec wl 56.5 62.5 42.9 50.9 57.2\n", "Test TfidfVec porter+wl 61.0 68.5 47.6 56.2 61.7\n", "Test TfidfVec snowball+wl 63.5 69.0 55.2 61.4 63.9" ] } ], "prompt_number": 22 }, { "cell_type": "code", "collapsed": false, "input": [ "df_perform.to_csv('./random_forests_data/clf_performance.csv', index_label=False, float_format='%2.2f')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 23 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }