Skip to content

Instantly share code, notes, and snippets.

@nbertagnolli
Created October 12, 2020 05:11
Show Gist options
  • Save nbertagnolli/bf5bd2cc7e0b142d6a862e54dd3ac871 to your computer and use it in GitHub Desktop.
Save nbertagnolli/bf5bd2cc7e0b142d6a862e54dd3ac871 to your computer and use it in GitHub Desktop.
Gist for medium article...
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import os\n",
"from typing import List, Tuple\n",
"import re\n",
"from sklearn.feature_extraction.text import TfidfVectorizer\n",
"from sklearn import svm\n",
"from sklearn.pipeline import FeatureUnion, Pipeline\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"from datasets import list_datasets, load_dataset, list_metrics\n",
"sns.set()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['aeslc', 'ag_news', 'ai2_arc', 'allocine', 'anli', 'arcd', 'art', 'billsum', 'biomrc', 'blended_skill_talk', 'blimp', 'blog_authorship_corpus', 'bookcorpus', 'boolq', 'break_data', 'c4', 'cfq', 'civil_comments', 'clue', 'cmrc2018', 'cnn_dailymail', 'coarse_discourse', 'com_qa', 'common_gen', 'commonsense_qa', 'compguesswhat', 'conll2000', 'conll2003', 'coqa', 'cornell_movie_dialog', 'cos_e', 'cosmos_qa', 'crd3', 'crime_and_punish', 'csv', 'daily_dialog', 'definite_pronoun_resolution', 'discofuse', 'docred', 'doqa', 'drop', 'eli5', 'emo', 'emotion', 'empathetic_dialogues', 'eraser_multi_rc', 'esnli', 'event2Mind', 'fever', 'flores', 'fquad', 'gap', 'germeval_14', 'gigaword', 'glue', 'guardian_authorship', 'hans', 'hansards', 'hellaswag', 'hotpot_qa', 'hyperpartisan_news_detection', 'imdb', 'iwslt2017', 'jeopardy', 'json', 'kilt_tasks', 'kilt_wikipedia', 'kor_nli', 'lc_quad', 'librispeech_lm', 'lince', 'lm1b', 'math_dataset', 'math_qa', 'matinf', 'mlqa', 'mlsum', 'movie_rationales', 'ms_marco', 'multi_news', 'multi_nli', 'multi_nli_mismatch', 'mwsc', 'natural_questions', 'newsgroup', 'newsroom', 'openbookqa', 'openwebtext', 'opinosis', 'pandas', 'para_crawl', 'pg19', 'piaf', 'polyglot_ner', 'qa4mre', 'qa_zre', 'qangaroo', 'qanta', 'qasc', 'quarel', 'quartz', 'quora', 'quoref', 'race', 'reclor', 'reddit', 'reddit_tifu', 'reuters21578', 'rotten_tomatoes', 'scan', 'scicite', 'scientific_papers', 'scifact', 'sciq', 'scitail', 'search_qa', 'sentiment140', 'snli', 'social_bias_frames', 'social_i_qa', 'sogou_news', 'squad', 'squad_es', 'squad_it', 'squad_v1_pt', 'squad_v2', 'squadshifts', 'style_change_detection', 'super_glue', 'ted_hrlr', 'ted_multi', 'text', 'tiny_shakespeare', 'trec', 'trivia_qa', 'tydiqa', 'ubuntu_dialogs_corpus', 'web_of_science', 'web_questions', 'wiki40b', 'wiki_dpr', 'wiki_qa', 'wiki_snippets', 'wiki_split', 'wikihow', 'wikipedia', 'wikisql', 'wikitext', 'winogrande', 'wiqa', 'wmt14', 'wmt15', 'wmt16', 'wmt17', 'wmt18', 'wmt19', 'wmt_t2t', 'wnut_17', 'x_stance', 'xcopa', 'xnli', 'xquad', 'xsum', 'xtreme', 'yelp_polarity']\n"
]
}
],
"source": [
"print(list_datasets())"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Reusing dataset imdb (/Users/tetracycline/.cache/huggingface/datasets/imdb/plain_text/1.0.0/90099cb476936b753383ba2ae6ab2eae419b2e87f71cd5189cb9c8e5814d12a3)\n"
]
}
],
"source": [
"# Load a dataset and print the first examples in the training set\n",
"imdb_data = load_dataset('imdb')"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Pipeline(memory=None,\n",
" steps=[('vectorizer',\n",
" TfidfVectorizer(analyzer='word', binary=False,\n",
" decode_error='strict',\n",
" dtype=<class 'numpy.float64'>,\n",
" encoding='utf-8', input='content',\n",
" lowercase=True, max_df=1.0, max_features=None,\n",
" min_df=1, ngram_range=(1, 1), norm='l2',\n",
" preprocessor=None, smooth_idf=True,\n",
" stop_words=None, strip_accents=None,\n",
" sublinear_tf=False,\n",
" token_pattern='(?u)\\\\b\\\\w\\\\w+\\\\b',\n",
" tokenizer=None, use_idf=True,\n",
" vocabulary=None)),\n",
" ('classifier',\n",
" LinearSVC(C=1.0, class_weight='balanced', dual=True,\n",
" fit_intercept=True, intercept_scaling=1,\n",
" loss='squared_hinge', max_iter=1000,\n",
" multi_class='ovr', penalty='l2', random_state=None,\n",
" tol=0.0001, verbose=0))],\n",
" verbose=False)"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"classifier = svm.LinearSVC(C=1.0, class_weight=\"balanced\")\n",
"model = Pipeline(\n",
" [\n",
" (\"vectorizer\", TfidfVectorizer()),\n",
" (\"classifier\", classifier),\n",
" ]\n",
")\n",
"x_train = [x[\"text\"]for x in imdb_data[\"train\"]]\n",
"y_train = [x[\"label\"]for x in imdb_data[\"train\"]]\n",
"model.fit(x_train, y_train)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"TfidfVectorizer(analyzer='word', binary=False, decode_error='strict',\n",
" dtype=<class 'numpy.float64'>, encoding='utf-8',\n",
" input='content', lowercase=True, max_df=1.0, max_features=None,\n",
" min_df=1, ngram_range=(1, 1), norm='l2', preprocessor=None,\n",
" smooth_idf=True, stop_words=None, strip_accents=None,\n",
" sublinear_tf=False, token_pattern='(?u)\\\\b\\\\w\\\\w+\\\\b',\n",
" tokenizer=None, use_idf=True, vocabulary=None)\n"
]
}
],
"source": [
"print(model.named_steps[\"vectorizer\"])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"With a basic pipeline it's easy to grab features. We just have to remember what each named feature step is and grab those."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"# Get the names of each feature\n",
"feature_names = model.named_steps[\"vectorizer\"].get_feature_names()\n",
"\n",
"# Get the coefficients of each feature\n",
"coefs = model.named_steps[\"classifier\"].coef_.flatten()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"# Visualize feature importances\n",
"# Sort features by absolute value\n",
"df = pd.DataFrame(zip(feature_names, coefs), columns=[\"feature\", \"value\"])\n",
"df[\"abs_value\"] = df[\"value\"].apply(lambda x: abs(x))\n",
"df[\"colors\"] = df[\"value\"].apply(lambda x: \"green\" if x > 0 else \"red\")\n",
"df = df.sort_values(\"abs_value\", ascending=False)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 0, 'Feature Name')"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAtoAAAJMCAYAAADE0QFtAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdd3RU5drG4XtICBA6MQGkC5KgoTdBikhHYxBFSqQo8ImCIIpSjg3LAStHKQrIEaVLbwalSI3SBSEEAZEuBAiQXvf3BytzCCQhCfNmJvC71spazOy9531mmHLPnme/22ZZliUAAAAADpXP2QUAAAAAdyKCNgAAAGAAQRsAAAAwgKANAAAAGEDQBgAAAAwgaAMAAAAGuDu7AAC4lcWLF2vUqFHZ3q5Ro0aaOXOmgYpyJi4uTrNmzdJPP/2ko0ePKiEhQd7e3mrYsKGef/55+fn5Zbjt0qVLNXfuXP3555+SpCpVquipp55Sjx49lC9f9vaZPProozp9+nSW11+6dKlq1KiRrTEcKSkpSSdPnlSVKlWcVgMA5ARBG4DL8/LyUr169W66/uzZszp79qw8PDzk7+9/0/Lq1avnRnlZcuHCBfXp00dHjhyRJJUuXVrFixfX8ePHtWzZMv3444/68MMPFRgYeNO277//vmbNmiVJuu++++Tm5qYDBw7owIEDWr9+vb7++mvlz58/2zWVLVtWZcuWveV6np6e2b5tR9myZYs++OADtW/fXsOGDXNaHQCQEwRtAC6vZcuWatmy5U3XT5gwQRMnTpS3t7fmzp3rhMqy7o033tCRI0dUqVIlffrpp6pVq5YkKTo6Wh999JHmz5+vf/3rX6pRo0aaLwiLFy/WrFmzVLRoUX399ddq0KCBJGn//v0aOHCgtmzZokmTJumVV17Jdk1PPfWUXn75ZcfcQUOmTJmiY8eOObsMAMgRerQBwLCDBw9q69atypcvnz777DN7yJakwoULa8yYMapfv74SExP13Xff2ZclJyfrq6++kiQNHz7cHrIlyd/fX5988okk6bvvvlNkZGQu3RsAQFYRtAHAsG3btkmSKlasqJo1a9603GazqXXr1pKkP/74w379zp07deLECeXPnz/dlpImTZqoUqVKiomJ0bp16wxVDwDIKVpHANzxfvrpJy1YsED79+9XVFSUSpQoobp166pnz55q0qTJTev7+vpKknbs2KH169fru+++019//aWiRYvK399fzz//vBo1apTl8R999FH5+Phk2kdtWZYkKSUlxX7d77//Lkl64IEHVKhQoXS3q1evno4fP67t27erc+fOWa7pdiQnJ2v58uVasmSJwsLCFBMTIx8fHz388MPq16+fKleunO52x48f16xZs7Rt2zadOXNGsbGxKlKkiHx9ffX444/rqaeekpubm6SbD4D9+uuv9fXXX+vJJ5/UuHHjtG3bNvXu3VuSdODAAbm73/xxlvr/+P3336tx48ZpbrdTp0569tln9d577+no0aMqUaKE+vfvr759++b4PsbFxen777/X6tWrdezYMSUlJemee+5RvXr11LNnT9WvXz+nDzmAPIqgDeCOlZiYqGHDhmnNmjWSJG9vb/n5+enUqVP6+eef9fPPP6tv374Zzmjy5ZdfaubMmfL09FS1atV0+vRp/fLLL9qwYYNef/119evXL0t1VKxYURUrVsx0ndWrV0uSqlWrZr/u+PHjkqQKFSpkuF25cuUkSX///XeWarld0dHRGjx4sEJCQiRdO6izfPny+vvvv/XDDz9o+fLl+uSTT9SuXbs0261du1bDhg1TQkKCPD09VaFCBVmWpVOnTmnbtm32v88++0zS/w6A/fPPPxUVFWU/cDOjEJ9df/31l/r37y83Nzfdf//9Onr0qP2xz8l9TEhIUN++fbVnzx65ubmpUqVKKlSokE6ePKmVK1dq1apVev/999W1a1eH1A8gb6B1BMAda9y4cVqzZo08PT31xRdfaMuWLVq4cKG2bt2qt99+W+7u7poxY4ZmzJiR7vYzZ85UQECANm/erEWLFmnr1q16+eWXZVmWPvnkE+3evdshdf7www/2lpHr90pfunRJklSqVKkMty1RooQkKSIiwiG13Mpbb72lkJAQ3X///VqwYIE2bdqkxYsX69dff9XAgQMVFxen4cOH26chlKQrV65o9OjRSkhIUI8ePRQSEqLly5drxYoV2rp1q3r16iVJWrlypQ4fPizp2gGwc+fO1QMPPCBJCgwM1Ny5czVw4ECH3I+wsDBVr15dv/zyi5YsWaKNGzfq4YcfzvF9XLRokfbs2aPKlStr7dq1Cg4O1uLFi7VlyxYFBQXJsix99NFHio+Pd0j9APIGgjaAO9I///yjefPmSbo2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7JFlWfLy8tJzzz1nf//+7rvv9MYbb+j06dMaOHBgjsbJSdA24a4P2nPnztWXX34pb29vXblyRQUKFNC4cePk5uamQYMG6dSpU1q8eLGmTZtm9OfRG2eauF5kZKS++uorLVq0yGGtEelJPVBk6tSpmj9/vv1Ar169eunw4cO6fPmyateurf79+xurQbq2Z33jxo0aNmxYuntI4+LitGnTpjRvkCdOnEiz9+J2ffHFF1qxYoVKlSqlunXrqmjRok55wc6bN09jxoyRZVkqVqxYhl/ITNq2bZv69etnD9g3HqCZ+riY3LOfaufOnVq1apV++uknRUREyLIs1alTR4GBgXrsscfs7T4dO3ZUz549FRAQoAkTJjg0aKeKjo7WmjVrFBYWptjYWJUoUUL333+/WrVqpcKFCzt8vFRdu3bVmDFjNHLkyJt+ar548aLee+89HT9+XP/617+M1ZBq3bp1GjVqlHx8fNK8HpOTkzVo0CDNnz9fgwcP1tSpU9W8eXOHjz906FBt377d/n/t7+8vb29vRUVFad++fVq2bJmSk5M1dOhQpaSk6Pnnn1doaKj9Z3xHKlasmD3YZeT33383csBbKmcH3ddee00HDx7UxIkTJV17L08NSd9//73mzJmjunXr5krQbt68uWbOnKlRo0bp2LFjio+Pt+8d3bt3r7766iuFhYXp1VdfNVpHkyZN9PPPP+vgwYPpHkP0+++/a/369erQoYOR8QcOHKiNGzdqzJgxmj17tn0H4siRI3XgwAEdOXJEFStWzHGYzaqYmBitWbNGq1atUkhIiJKSklSgQAF17NhRgYGBatasmf1Laq1atextPzNmzMhxbaZ3CmaZdZd76qmnrHbt2llRUVGWZVnWjh07LF9fX2vUqFH2dfr06WN16NDBWSXa9ezZ0xo4cKDRMRITE61p06ZZ7du3t3x9fe1/rVq1sr788ksrLi7O6PiWZVlz5861fH19re7du1vbtm2zYmJiLMuyrKSkJGvv3r1W3759LT8/P+u///2vZVmWtWTJEqtmzZrWv/71L4fV0KJFC6tdu3ZWZGSkw24zJx577DGrYcOG1u7du51Ww3PPPWf5+flZ06ZNs/bu3Wu1b9/eGj58uLV3715r0aJFVqtWrawmTZpY4eHhRuto1aqV5efnZ38+jh8/3jp27Fim2zz55JNW48aNHV7LunXr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\n",
"text/plain": [
"<Figure size 864x504 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(1, 1, figsize=(12, 7))\n",
"sns.barplot(x=\"feature\",\n",
" y=\"value\",\n",
" data=df.head(20),\n",
" palette=df.head(20)[\"colors\"])\n",
"ax.set_xticklabels(ax.get_xticklabels(), rotation=90, fontsize=20)\n",
"ax.set_title(\"Top 20 Features\", fontsize=25)\n",
"ax.set_ylabel(\"Coef\", fontsize=22)\n",
"ax.set_xlabel(\"Feature Name\", fontsize=22)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can quickly see that the algorithm picks up strongly on the negative words like worst, awful, boring, etc. With far fewer \"positive\" words impacting the prediction. That's cool, and these visualizations can be super helpful to spot check your model and make sure it's doing a good job but this is a bit of a contrived example. Pipelines are great for things like this, they certainly look clean, are easy to use, and keep our featurization in step with our model but I rarely use them with so few steps. The real question becaomes how can we get these feature importances in general, when out pipelines involve more than one step.\n",
"\n",
"Let's try by hand then see if we can generalize : )."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"classifier = svm.LinearSVC(C=1.0, class_weight=\"balanced\")\n",
"vocab = {\"worst\": 0, \"awful\": 1, \"waste\": 2,\n",
" \"boring\": 3, \"excellent\": 4}\n",
"model = Pipeline([\n",
" (\"union\", FeatureUnion(transformer_list=[\n",
" (\"handpicked\", TfidfVectorizer(vocabulary=vocab)),\n",
" (\"bigrams\", TfidfVectorizer(ngram_range=(2, 2)))])\n",
" ),\n",
" (\"classifier\", classifier),\n",
" ])"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Pipeline(memory=None,\n",
" steps=[('union',\n",
" FeatureUnion(n_jobs=None,\n",
" transformer_list=[('handpicked',\n",
" TfidfVectorizer(analyzer='word',\n",
" binary=False,\n",
" decode_error='strict',\n",
" dtype=<class 'numpy.float64'>,\n",
" encoding='utf-8',\n",
" input='content',\n",
" lowercase=True,\n",
" max_df=1.0,\n",
" max_features=None,\n",
" min_df=1,\n",
" ngram_range=(1,\n",
" 1),\n",
" norm='l2',\n",
" preprocessor=None,\n",
" smooth_idf=True,\n",
" stop_words=N...\n",
" sublinear_tf=False,\n",
" token_pattern='(?u)\\\\b\\\\w\\\\w+\\\\b',\n",
" tokenizer=None,\n",
" use_idf=True,\n",
" vocabulary=None))],\n",
" transformer_weights=None, verbose=False)),\n",
" ('classifier',\n",
" LinearSVC(C=1.0, class_weight='balanced', dual=True,\n",
" fit_intercept=True, intercept_scaling=1,\n",
" loss='squared_hinge', max_iter=1000,\n",
" multi_class='ovr', penalty='l2', random_state=None,\n",
" tol=0.0001, verbose=0))],\n",
" verbose=False)"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.fit(x_train, y_train)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"handpicked = (model\n",
" .named_steps[\"union\"]\n",
" .transformer_list[0][1]\n",
" .get_feature_names())\n",
"\n",
"bigrams = (model\n",
" .named_steps[\"union\"]\n",
" .transformer_list[1][1]\n",
" .get_feature_names())\n",
"\n",
"feature_names = handpicked + bigrams"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"# Get the coefficients of each feature\n",
"coefs = model.named_steps[\"classifier\"].coef_.flatten()"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"# Visualize feature importances\n",
"# Sort features by absolute value\n",
"zipped = zip(feature_names, coefs)\n",
"df = pd.DataFrame(zipped, columns=[\"feature\", \"value\"])\n",
"df[\"abs_value\"] = df[\"value\"].apply(lambda x: abs(x))\n",
"df[\"colors\"] = df[\"value\"].apply(lambda x: \"green\" if x > 0 else \"red\")\n",
"df = df.sort_values(\"abs_value\", ascending=False)"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 0, 'Feature Name')"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAtoAAAIxCAYAAABzbR9yAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdeXiM1///8ddIJBJCLAmKELVEi1apVqtVe2nTUNXWrkWrpUpbSr/dVXWjH0QXS6tEbbGrWGoPtVYpEbWvrSXW7Nv8/vDLEJJIYk5mwvNxXa7LzL2c99wzmXnNPeec22K1Wq0CAAAAYFcFHF0AAAAAcDsiaAMAAAAGELQBAAAAAwjaAAAAgAEEbQAAAMAAgjYAAABggKujCwCAm5kzZ46GDBmS4+3q16+vKVOmGKgod+Lj4xUSEqKlS5fqwIEDSkxMlI+Pjx588EG9/PLLCggIyHTbefPmadq0afrnn38kSf7+/mrXrp06dOigAgVyds6kSZMmOnHiRLbXnzdvnmrUqJGjNuwpOTlZx44dk7+/v8NqAIDcIGgDcHolS5bUAw88cMP9//77r/7991+5ubmpZs2aNyyvVq1aXpSXLWfPnlW3bt20f/9+SVLp0qVVrFgxHTlyRPPnz9fixYs1bNgwBQUF3bDt0KFDFRISIkmqXLmyXFxctHv3bu3evVsrV67UDz/8oIIFC+a4prJly6ps2bI3Xc/T0zPH+7aX8PBwffbZZ2rZsqUGDBjgsDoAIDcI2gCcXqNGjdSoUaMb7h8zZoyCg4Pl4+OjadOmOaCy7Bs0aJD279+vihUr6ptvvlHt2rUlSTExMfryyy81Y8YM/d///Z9q1KiR7gvCnDlzFBISIi8vL/3www+qV6+eJGnXrl3q3bu3wsPDNXbsWPXv3z/HNbVr105vvPGGfR6gIT/++KMOHTrk6DIAIFfoow0Ahu3Zs0fr169XgQIFNGLECFvIlqTChQvrk08+Ud26dZWUlKRffvnFtiwlJUXff/+9JOmdd96xhWxJqlmzpr7++mtJ0i+//KLLly/n0aMBAGQXQRsADNu0aZMkyc/PT7Vq1bphucViUdOmTSVJf//9t+3+rVu36ujRoypYsGCGXUoaNGigihUrKjY2VitWrDBUPQAgt+g6AuC2t3TpUs2aNUu7du1SdHS0vL29VadOHXXs2FENGjS4Yf3q1atLkrZs2aKVK1fql19+0cGDB+Xl5aWaNWvq5ZdfVv369bPdfpMmTeTr65tlP2qr1SpJSk1Ntd33119/SZLuueceeXh4ZLjdAw88oCNHjmjz5s1q06ZNtmu6FSkpKVqwYIHmzp2ryMhIxcbGytfXV48++qh69OihSpUqZbjdkSNHFBISok2bNunkyZOKi4tTkSJFVL16dT399NNq166dXFxcJN04APaHH37QDz/8oLZt2+qLL77Qpk2b1LVrV0nS7t275ep648dZ2vM4efJkPfTQQ+n227p1a3Xu3FmffvqpDhw4IG9vb/Xs2VPdu3fP9WOMj4/X5MmTtWTJEh06dEjJyckqVaqUHnjgAXXs2FF169bN7SEHkE8RtAHctpKSkjRgwAAtX75ckuTj46OAgAAdP35cy5Yt07Jly9S9e/dMZzQZPXq0pkyZIk9PT1WpUkUnTpzQqlWrtHr1ag0cOFA9evTIVh1+fn7y8/PLcp0lS5ZIkqpUqWK778iRI5KkChUqZLpduXLlJEmHDx/OVi23KiYmRn379tWGDRskXRnUWb58eR0+fFgzZ87UggUL9PXXX6tFixbptvv99981YMAAJSYmytPTUxUqVJDVatXx48e1adMm278RI0ZIujoA9p9//lF0dLRt4GZmIT6nDh48qJ49e8rFxUVVq1bVgQMHbMc+N48xMTFR3bt31/bt2+Xi4qKKFSvKw8NDx44d06JFi/Tbb79p6NChat++vV3qB5A/0HUEwG3riy++0PLly+Xp6alRo0YpPDxcoaGhWr9+vT788EO5urpq0qRJmjRpUobbT5kyRYGBgVq3bp1mz56t9evX64033pDVatXXX3+tP//80y51zpw509Zl5Nqz0ufOnZMklShRItNtvb29JUnnz5+3Sy0388EHH2jDhg2qWrWqZs2apbVr12rOnDn6448/1Lt3b8XHx+udd96xTUMoSRcvXtR7772nxMREdejQQRs2bNCCBQu0cOFCrV+/Xl26dJEkLVq0SPv27ZN0ZQDstGnTdM8990iSgoKCNG3aNPXu3dsujyMyMlLVqlXTqlWrNHfuXK1Zs0aPPvporh/j7NmztX37dlWqVEm///67wsLCNGfOHIWHh6tTp06yWq368ssvlZCQYJf6AeQPBG0At6X//vtP06dPl3Rlerwnn3zStszF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//xTvXr1MlaDo46FyddYbo0aNUq//fabjh07JqvVqrJly+qVV15RmzZt5O/vn25di8WiF154QdOnT9fevXvtWkf16tW1evVqDRo0KMP3iejoaK1Zs8auM0tc795779WyZcvUo0ePDPPD9u3btXTp0nS/vthD69at9eOPP+qbb77Rq6++muUJodjYWI0ZM0Z//PGHsXE+0pXP7Y8//ljz58/Xxo0bVaRIEYWEhGjYsGG2k4hTpkxRSEhIpr9C5IWEhAStWbPG7ifR7qhZR673ySefaNq0aerUqZMGDBig1NRUPfroo/L19dXUqVN1/Phx9erVS40bN9bIkSMdXa5RwcHBWrlypfbs2aMKFSqoUqVKGb5BWSwWjRkzxlgdmzZtUo8ePWwB+/pR9WlfUAICAjR37lwjNRw9elTPPvuskpOT9dxzz+nIkSMKDw/X559/rr///luhoaFydXXVrFmz7PoF7Ho7d+5Ux44d5eHhoW7duqlu3bry8vLSqVOntG3bNk2bNs02C4up0fzR0dHq0KGD9u/frypVqig1NVUHDx5UUFCQdu/erf3798vPz0+zZs1S0aJF7dZuRqPD014HN/uSanKmDWs2ZipKm/7QlJYtWyohIUGLFy+Wp6enevfurYIFC9r+LoODgzV27FiNHDlSrVq1MlJDaGio3n//fd1zzz167bXXdO+996pw4cK6fPmy/vzzT3333Xc6cuSIgoODjXYDi4qKUs+ePW3PeYUKFTRz5kwVL15cw4YN05QpU1SnTh2NGzfO2C9QznIsnEFAQIA8PT3VokULtWnTRg8//PBNtxkwYIBKliyp999/3251hIWFacCAAXr44Yc1cOBALV26VOPHj9fu3bu1e/duDR8+XNu3b9dXX32lwMBAu7V7ra1bt6p79+5yd3dX27ZtVbNmzXSvi4ULF8rV1VXTpk2z65ew+Ph49evXT2vXrpWrq6tq1KghPz8/26wjSUlJunz5so4fP649e/YoISFBderU0cSJE+Xp6Wm3Oq41btw4jRw5UjVq1NCECRNUtGhRNWzYUMnJyfrwww91/PhxBQcHq3v37nr33XeN1CBl/ot52hzjGzdu1IkTJ9S5c2e7Dsy8o4N2kyZNVK1aNdto9IULF2rgwIF64403bPNavvfee1qzZo3Wr1/vyFIlXZleLDtvXLmR3W/2JruvSNLLL7+s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\n",
"text/plain": [
"<Figure size 864x504 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(1, 1, figsize=(12, 7))\n",
"sns.barplot(x=\"feature\",\n",
" y=\"value\",\n",
" data=df.head(20),\n",
" palette=df.head(20)[\"colors\"])\n",
"ax.set_xticklabels(ax.get_xticklabels(), rotation=90, fontsize=20)\n",
"ax.set_title(\"Top 20 Features\", fontsize=25)\n",
"ax.set_ylabel(\"Coef\", fontsize=22)\n",
"ax.set_xlabel(\"Feature Name\", fontsize=22)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"def extract_feature_names(model, name) -> List[str]:\n",
" if hasattr(model, \"get_feature_names\"):\n",
" return model.get_feature_names()\n",
" elif hasattr(model, \"n_clusters\"):\n",
" return [f\"{name}_{x}\" for x in range(model.n_clusters)]\n",
" elif hasattr(model, \"n_components\"):\n",
" return [f\"{name}_{x}\" for x in range(model.n_components)]\n",
" elif hasattr(model, \"components_\"):\n",
" n_components = model.components_.shape[0]\n",
" return [f\"{name}_{x}\" for x in range(n_components)]\n",
" elif hasattr(model, \"classes_\"):\n",
" return classes_\n",
" else:\n",
" return [name]\n",
"\n",
"\n",
"def get_feature_names(model, names: List[str], name: str) -> List[str]:\n",
" \"\"\"Thie method extracts the feature names in order from a Sklearn Pipeline\n",
" \n",
" This method only works with composed Pipelines and FeatureUnions. It will\n",
" pull out all names using DFS from a model.\n",
" \n",
" Args:\n",
" model: The model we are interested in\n",
" names: The list of names of final featurizaiton steps\n",
" name: The current name of the step we want to evaluate.\n",
" \n",
" Returns:\n",
" feature_names: The list of feature names extracted from the pipeline.\n",
" \"\"\"\n",
" \n",
" # Check if the name is one of our feature steps. This is the base case.\n",
" if name in names:\n",
" # If it has the named_steps atribute it's a pipeline and we need to access the features\n",
" if hasattr(model, \"named_steps\"):\n",
" # FIXME:: NEED BASE CASE\n",
" return extract_feature_names(model.named_steps[name], name)\n",
" # Otherwise get the feature directly\n",
" else:\n",
" return extract_feature_names(model, name)\n",
" elif type(model) is Pipeline:\n",
" feature_names = []\n",
" for name in model.named_steps.keys():\n",
" feature_names += get_feature_names(model.named_steps[name], names, name)\n",
" return feature_names\n",
" elif type(model) is FeatureUnion:\n",
" feature_names= []\n",
" for name, new_model in model.transformer_list:\n",
" feature_names += get_feature_names(new_model, names, name)\n",
" return feature_names\n",
" # If it is none of the above do not add it.\n",
" else:\n",
" return []"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [],
"source": [
"feature_names = get_feature_names(model, [\"bigrams\", \"handpicked\"], \"union\")"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['worst',\n",
" 'awful',\n",
" 'waste',\n",
" 'boring',\n",
" 'excellent',\n",
" '00 01',\n",
" '00 after',\n",
" '00 alison',\n",
" '00 am',\n",
" '00 and']"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"feature_names[:10]"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Pipeline(memory=None,\n",
" steps=[('union',\n",
" FeatureUnion(n_jobs=None,\n",
" transformer_list=[('h1',\n",
" TfidfVectorizer(analyzer='word',\n",
" binary=False,\n",
" decode_error='strict',\n",
" dtype=<class 'numpy.float64'>,\n",
" encoding='utf-8',\n",
" input='content',\n",
" lowercase=True,\n",
" max_df=1.0,\n",
" max_features=None,\n",
" min_df=1,\n",
" ngram_range=(1,\n",
" 1),\n",
" norm='l2',\n",
" preprocessor=None,\n",
" smooth_idf=True,\n",
" stop_words=None,\n",
" stri...\n",
" TruncatedSVD(algorithm='randomized',\n",
" n_components=2,\n",
" n_iter=5,\n",
" random_state=None,\n",
" tol=0.0))],\n",
" verbose=False))],\n",
" transformer_weights=None, verbose=False)),\n",
" ('classifier',\n",
" LinearSVC(C=1.0, class_weight='balanced', dual=True,\n",
" fit_intercept=True, intercept_scaling=1,\n",
" loss='squared_hinge', max_iter=1000,\n",
" multi_class='ovr', penalty='l2', random_state=None,\n",
" tol=0.0001, verbose=0))],\n",
" verbose=False)"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.decomposition import TruncatedSVD\n",
"classifier = svm.LinearSVC(C=1.0, class_weight=\"balanced\")\n",
"vocab = {\"worst\": 0, \"awful\": 1, \"waste\": 2,\n",
" \"boring\": 3, \"excellent\": 4}\n",
"model = Pipeline([\n",
" (\"union\", FeatureUnion(transformer_list=[\n",
" (\"h1\", TfidfVectorizer(vocabulary={\"worst\": 0})),\n",
" (\"h2\", TfidfVectorizer(vocabulary={\"best\": 0})),\n",
" (\"h3\", TfidfVectorizer(vocabulary={\"awful\": 0})),\n",
" (\"tfidf_cls\", Pipeline([\n",
" (\"vectorizer\", CountVectorizer()),\n",
" (\"transformer\", TfidfTransformer()),\n",
" (\"tsvd\", TruncatedSVD(n_components=2))\n",
" ]\n",
" ))\n",
" ])\n",
" ),\n",
" (\"classifier\", classifier),\n",
"])\n",
"\n",
"model.fit(x_train, y_train)"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [],
"source": [
"feature_names = get_feature_names(model, [\"h1\", \"h2\", \"h3\", \"tsvd\"], None)"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['worst', 'best', 'awful', 'tsvd_0', 'tsvd_1']"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"feature_names"
]
}
],
"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.6"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment