SHARE
TWEET

Untitled

a guest Oct 21st, 2019 73 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. {
  2.  "cells": [
  3.   {
  4.    "cell_type": "code",
  5.    "execution_count": 2,
  6.    "metadata": {},
  7.    "outputs": [
  8.     {
  9.      "data": {
  10.       "text/html": [
  11.        "<div>\n",
  12.        "<style scoped>\n",
  13.        "    .dataframe tbody tr th:only-of-type {\n",
  14.        "        vertical-align: middle;\n",
  15.        "    }\n",
  16.        "\n",
  17.        "    .dataframe tbody tr th {\n",
  18.        "        vertical-align: top;\n",
  19.        "    }\n",
  20.        "\n",
  21.        "    .dataframe thead th {\n",
  22.        "        text-align: right;\n",
  23.        "    }\n",
  24.        "</style>\n",
  25.        "<table border=\"1\" class=\"dataframe\">\n",
  26.        "  <thead>\n",
  27.        "    <tr style=\"text-align: right;\">\n",
  28.        "      <th></th>\n",
  29.        "      <th>category</th>\n",
  30.        "      <th>jobtitle</th>\n",
  31.        "    </tr>\n",
  32.        "  </thead>\n",
  33.        "  <tbody>\n",
  34.        "    <tr>\n",
  35.        "      <th>0</th>\n",
  36.        "      <td>education</td>\n",
  37.        "      <td>After School Supervisor</td>\n",
  38.        "    </tr>\n",
  39.        "    <tr>\n",
  40.        "      <th>1</th>\n",
  41.        "      <td>education</td>\n",
  42.        "      <td>*****TUTORS NEEDED - FOR ALL SUBJECTS, ALL AGE...</td>\n",
  43.        "    </tr>\n",
  44.        "    <tr>\n",
  45.        "      <th>2</th>\n",
  46.        "      <td>education</td>\n",
  47.        "      <td>Bay Area Family Recruiter</td>\n",
  48.        "    </tr>\n",
  49.        "    <tr>\n",
  50.        "      <th>3</th>\n",
  51.        "      <td>education</td>\n",
  52.        "      <td>Adult Day Programs/Community Access/Job Coaches</td>\n",
  53.        "    </tr>\n",
  54.        "    <tr>\n",
  55.        "      <th>4</th>\n",
  56.        "      <td>education</td>\n",
  57.        "      <td>General Counselor - Non Tenure track</td>\n",
  58.        "    </tr>\n",
  59.        "  </tbody>\n",
  60.        "</table>\n",
  61.        "</div>"
  62.       ],
  63.       "text/plain": [
  64.        "    category                                           jobtitle\n",
  65.        "0  education                            After School Supervisor\n",
  66.        "1  education  *****TUTORS NEEDED - FOR ALL SUBJECTS, ALL AGE...\n",
  67.        "2  education                          Bay Area Family Recruiter\n",
  68.        "3  education    Adult Day Programs/Community Access/Job Coaches\n",
  69.        "4  education               General Counselor - Non Tenure track"
  70.       ]
  71.      },
  72.      "execution_count": 2,
  73.      "metadata": {},
  74.      "output_type": "execute_result"
  75.     }
  76.    ],
  77.    "source": [
  78.     "import pandas as pd\n",
  79.     "df = pd.read_csv(r'craigslistJobTitles.csv',encoding = \"ISO-8859-1\")\n",
  80.     "df.head()"
  81.    ]
  82.   },
  83.   {
  84.    "cell_type": "code",
  85.    "execution_count": 3,
  86.    "metadata": {},
  87.    "outputs": [],
  88.    "source": [
  89.     "from io import StringIO\n",
  90.     "\n",
  91.     "df['category_id'] = df['category'].factorize()[0]\n",
  92.     "category_id_df = df[['category', 'category_id']].drop_duplicates().sort_values('category_id')\n",
  93.     "category_to_id = dict(category_id_df.values)\n",
  94.     "id_to_category = dict(category_id_df[['category_id', 'category']].values)"
  95.    ]
  96.   },
  97.   {
  98.    "cell_type": "code",
  99.    "execution_count": 5,
  100.    "metadata": {},
  101.    "outputs": [
  102.     {
  103.      "data": {
  104.       "image/png": "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\n",
  105.       "text/plain": [
  106.        "<Figure size 576x432 with 1 Axes>"
  107.       ]
  108.      },
  109.      "metadata": {
  110.       "needs_background": "light"
  111.      },
  112.      "output_type": "display_data"
  113.     }
  114.    ],
  115.    "source": [
  116.     "import matplotlib.pyplot as plt\n",
  117.     "fig = plt.figure(figsize=(8,6))\n",
  118.     "df.groupby('category').jobtitle.count().plot.bar(ylim=0,color='g')\n",
  119.     "plt.ylabel('count')\n",
  120.     "plt.show()"
  121.    ]
  122.   },
  123.   {
  124.    "cell_type": "code",
  125.    "execution_count": 7,
  126.    "metadata": {},
  127.    "outputs": [
  128.     {
  129.      "data": {
  130.       "text/plain": [
  131.        "13845"
  132.       ]
  133.      },
  134.      "execution_count": 7,
  135.      "metadata": {},
  136.      "output_type": "execute_result"
  137.     }
  138.    ],
  139.    "source": [
  140.     "from sklearn.feature_extraction.text import TfidfVectorizer\n",
  141.     "tfidf = TfidfVectorizer(sublinear_tf=True, min_df=5, norm='l2', encoding='latin-1', ngram_range=(1, 2), stop_words='english')\n",
  142.     "len(df)"
  143.    ]
  144.   },
  145.   {
  146.    "cell_type": "code",
  147.    "execution_count": 8,
  148.    "metadata": {},
  149.    "outputs": [
  150.     {
  151.      "data": {
  152.       "text/plain": [
  153.        "TfidfVectorizer(analyzer='word', binary=False, decode_error='strict',\n",
  154.        "        dtype=<class 'numpy.float64'>, encoding='latin-1', input='content',\n",
  155.        "        lowercase=True, max_df=1.0, max_features=None, min_df=5,\n",
  156.        "        ngram_range=(1, 2), norm='l2', preprocessor=None, smooth_idf=True,\n",
  157.        "        stop_words='english', strip_accents=None, sublinear_tf=True,\n",
  158.        "        token_pattern='(?u)\\\\b\\\\w\\\\w+\\\\b', tokenizer=None, use_idf=True,\n",
  159.        "        vocabulary=None)"
  160.       ]
  161.      },
  162.      "execution_count": 8,
  163.      "metadata": {},
  164.      "output_type": "execute_result"
  165.     }
  166.    ],
  167.    "source": [
  168.     "tfidf"
  169.    ]
  170.   },
  171.   {
  172.    "cell_type": "code",
  173.    "execution_count": 10,
  174.    "metadata": {},
  175.    "outputs": [
  176.     {
  177.      "data": {
  178.       "text/plain": [
  179.        "(13845, 3212)"
  180.       ]
  181.      },
  182.      "execution_count": 10,
  183.      "metadata": {},
  184.      "output_type": "execute_result"
  185.     }
  186.    ],
  187.    "source": [
  188.     "features = tfidf.fit_transform(df.jobtitle).toarray()\n",
  189.     "labels = df.category_id\n",
  190.     "features.shape"
  191.    ]
  192.   },
  193.   {
  194.    "cell_type": "code",
  195.    "execution_count": 12,
  196.    "metadata": {},
  197.    "outputs": [
  198.     {
  199.      "data": {
  200.       "text/plain": [
  201.        "array([[0., 0., 0., ..., 0., 0., 0.],\n",
  202.        "       [0., 0., 0., ..., 0., 0., 0.],\n",
  203.        "       [0., 0., 0., ..., 0., 0., 0.],\n",
  204.        "       ...,\n",
  205.        "       [0., 0., 0., ..., 0., 0., 0.],\n",
  206.        "       [0., 0., 0., ..., 0., 0., 0.],\n",
  207.        "       [0., 0., 0., ..., 0., 0., 0.]])"
  208.       ]
  209.      },
  210.      "execution_count": 12,
  211.      "metadata": {},
  212.      "output_type": "execute_result"
  213.     }
  214.    ],
  215.    "source": [
  216.     "features"
  217.    ]
  218.   },
  219.   {
  220.    "cell_type": "code",
  221.    "execution_count": 15,
  222.    "metadata": {},
  223.    "outputs": [],
  224.    "source": [
  225.     "from sklearn.model_selection import train_test_split\n",
  226.     "from sklearn.feature_extraction.text import CountVectorizer\n",
  227.     "from sklearn.feature_extraction.text import TfidfTransformer\n",
  228.     "from sklearn.naive_bayes import MultinomialNB\n",
  229.     "from sklearn.linear_model import LogisticRegression\n",
  230.     "from sklearn.svm import LinearSVC\n",
  231.     "from sklearn.model_selection import cross_val_score\n",
  232.     "from sklearn.tree import DecisionTreeClassifier\n",
  233.     "from sklearn.ensemble import RandomForestClassifier,AdaBoostClassifier,GradientBoostingClassifier"
  234.    ]
  235.   },
  236.   {
  237.    "cell_type": "code",
  238.    "execution_count": 49,
  239.    "metadata": {},
  240.    "outputs": [
  241.     {
  242.      "name": "stderr",
  243.      "output_type": "stream",
  244.      "text": [
  245.       "C:\\Users\\agyumol\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n",
  246.       "  FutureWarning)\n",
  247.       "C:\\Users\\agyumol\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:460: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.\n",
  248.       "  \"this warning.\", FutureWarning)\n",
  249.       "C:\\Users\\agyumol\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n",
  250.       "  FutureWarning)\n",
  251.       "C:\\Users\\agyumol\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:460: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.\n",
  252.       "  \"this warning.\", FutureWarning)\n",
  253.       "C:\\Users\\agyumol\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n",
  254.       "  FutureWarning)\n",
  255.       "C:\\Users\\agyumol\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:460: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.\n",
  256.       "  \"this warning.\", FutureWarning)\n",
  257.       "C:\\Users\\agyumol\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n",
  258.       "  FutureWarning)\n",
  259.       "C:\\Users\\agyumol\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:460: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.\n",
  260.       "  \"this warning.\", FutureWarning)\n",
  261.       "C:\\Users\\agyumol\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n",
  262.       "  FutureWarning)\n",
  263.       "C:\\Users\\agyumol\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:460: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.\n",
  264.       "  \"this warning.\", FutureWarning)\n"
  265.      ]
  266.     },
  267.     {
  268.      "data": {
  269.       "image/png": "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\n",
  270.       "text/plain": [
  271.        "<Figure size 432x288 with 1 Axes>"
  272.       ]
  273.      },
  274.      "metadata": {
  275.       "needs_background": "light"
  276.      },
  277.      "output_type": "display_data"
  278.     }
  279.    ],
  280.    "source": [
  281.     "models = [\n",
  282.     "    LogisticRegression(random_state=0),\n",
  283.     "    RandomForestClassifier(n_estimators=100, max_depth=2, random_state=11),\n",
  284.     "    LinearSVC(),\n",
  285.     "    MultinomialNB(),\n",
  286.     "    DecisionTreeClassifier(),\n",
  287.     "    AdaBoostClassifier(n_estimators=20),\n",
  288.     "    GradientBoostingClassifier(n_estimators=20)\n",
  289.     "]\n",
  290.     "CV = 5\n",
  291.     "cv_df = pd.DataFrame(index=range(CV * len(models)))\n",
  292.     "entries = []\n",
  293.     "for model in models:\n",
  294.     "  model_name = model.__class__.__name__\n",
  295.     "  accuracies = cross_val_score(model, features, labels, scoring='accuracy', cv=CV)\n",
  296.     "  for fold_idx, accuracy in enumerate(accuracies):\n",
  297.     "    entries.append((model_name, fold_idx, accuracy))\n",
  298.     "    \n",
  299.     "cv_df = pd.DataFrame(entries, columns=['model_name', 'fold_idx', 'accuracy'])\n",
  300.     "\n",
  301.     "import seaborn as sns\n",
  302.     "g = sns.boxplot(x='model_name', y='accuracy', data=cv_df)\n",
  303.     "\n",
  304.     "g.set_xticklabels(g.get_xticklabels(),rotation=60)\n",
  305.     "#sns.stripplot(x='model_name', y='accuracy', data=cv_df, size=5, linewidth=1)\n",
  306.     "plt.xlabel('Model')\n",
  307.     "plt.ylabel('Accuracy')\n",
  308.     "plt.ylim(0,1)\n",
  309.     "plt.show()"
  310.    ]
  311.   },
  312.   {
  313.    "cell_type": "code",
  314.    "execution_count": 50,
  315.    "metadata": {},
  316.    "outputs": [
  317.     {
  318.      "data": {
  319.       "text/plain": [
  320.        "model_name\n",
  321.        "AdaBoostClassifier            0.522643\n",
  322.        "DecisionTreeClassifier        0.782883\n",
  323.        "GradientBoostingClassifier    0.677645\n",
  324.        "LinearSVC                     0.822031\n",
  325.        "LogisticRegression            0.824415\n",
  326.        "MultinomialNB                 0.811991\n",
  327.        "RandomForestClassifier        0.551028\n",
  328.        "Name: accuracy, dtype: float64"
  329.       ]
  330.      },
  331.      "execution_count": 50,
  332.      "metadata": {},
  333.      "output_type": "execute_result"
  334.     }
  335.    ],
  336.    "source": [
  337.     "cv_df.groupby('model_name').accuracy.mean()"
  338.    ]
  339.   },
  340.   {
  341.    "cell_type": "code",
  342.    "execution_count": 23,
  343.    "metadata": {},
  344.    "outputs": [
  345.     {
  346.      "data": {
  347.       "text/plain": [
  348.        "(0, 1)"
  349.       ]
  350.      },
  351.      "execution_count": 23,
  352.      "metadata": {},
  353.      "output_type": "execute_result"
  354.     },
  355.     {
  356.      "data": {
  357.       "image/png": "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\n",
  358.       "text/plain": [
  359.        "<Figure size 432x288 with 1 Axes>"
  360.       ]
  361.      },
  362.      "metadata": {
  363.       "needs_background": "light"
  364.      },
  365.      "output_type": "display_data"
  366.     }
  367.    ],
  368.    "source": [
  369.     "plt.plot([0, 1], [0, 1], linestyle='--', lw=2, color='r',\n",
  370.     "         label='Chance', alpha=.8)\n",
  371.     "plt.xlim(0,1)\n",
  372.     "plt.ylim(0,1)"
  373.    ]
  374.   },
  375.   {
  376.    "cell_type": "code",
  377.    "execution_count": null,
  378.    "metadata": {},
  379.    "outputs": [],
  380.    "source": [
  381.     "plt.plot(cv_df['fold_idx'] , cv_df['accuracy'])"
  382.    ]
  383.   },
  384.   {
  385.    "cell_type": "code",
  386.    "execution_count": 81,
  387.    "metadata": {},
  388.    "outputs": [
  389.     {
  390.      "name": "stderr",
  391.      "output_type": "stream",
  392.      "text": [
  393.       "C:\\Users\\agyumol\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n",
  394.       "  FutureWarning)\n",
  395.       "C:\\Users\\agyumol\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:460: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.\n",
  396.       "  \"this warning.\", FutureWarning)\n"
  397.      ]
  398.     }
  399.    ],
  400.    "source": [
  401.     "model = LogisticRegression()\n",
  402.     "X_train, X_test, y_train, y_test, indices_train, indices_test = train_test_split(features, labels, df.index, test_size=0.33, random_state=0)\n",
  403.     "model.fit(X_train, y_train)\n",
  404.     "y_pred = model.predict(X_test)"
  405.    ]
  406.   },
  407.   {
  408.    "cell_type": "code",
  409.    "execution_count": 82,
  410.    "metadata": {},
  411.    "outputs": [
  412.     {
  413.      "data": {
  414.       "image/png": "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\n",
  415.       "text/plain": [
  416.        "<Figure size 360x360 with 2 Axes>"
  417.       ]
  418.      },
  419.      "metadata": {
  420.       "needs_background": "light"
  421.      },
  422.      "output_type": "display_data"
  423.     }
  424.    ],
  425.    "source": [
  426.     "from sklearn.metrics import confusion_matrix\n",
  427.     "\n",
  428.     "conf_mat = confusion_matrix(y_test, y_pred)\n",
  429.     "fig, ax = plt.subplots(figsize=(5,5))\n",
  430.     "sns.heatmap(conf_mat, cmap=\"Greens\", annot=True, fmt='d', xticklabels=category_id_df.category.values, yticklabels=category_id_df.category.values)\n",
  431.     "plt.ylabel('Actual')\n",
  432.     "plt.xlabel('Predicted')\n",
  433.     "#ax.set_ylim()\n",
  434.     "plt.show()"
  435.    ]
  436.   },
  437.   {
  438.    "cell_type": "code",
  439.    "execution_count": 56,
  440.    "metadata": {},
  441.    "outputs": [
  442.     {
  443.      "data": {
  444.       "text/plain": [
  445.        "array([[711,   4,   4,   4,  21,  17],\n",
  446.        "       [  6, 652,  84,   2,  20,  42],\n",
  447.        "       [  8,  35, 685,   3,  12,  77],\n",
  448.        "       [  4,   9,   7, 432,  52,  33],\n",
  449.        "       [ 11,  20,  22,  33, 702,  83],\n",
  450.        "       [ 23,  46,  61,   8,  68, 568]], dtype=int64)"
  451.       ]
  452.      },
  453.      "execution_count": 56,
  454.      "metadata": {},
  455.      "output_type": "execute_result"
  456.     }
  457.    ],
  458.    "source": []
  459.   },
  460.   {
  461.    "cell_type": "code",
  462.    "execution_count": 44,
  463.    "metadata": {},
  464.    "outputs": [
  465.     {
  466.      "ename": "ValueError",
  467.      "evalue": "multiclass format is not supported",
  468.      "output_type": "error",
  469.      "traceback": [
  470.       "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
  471.       "\u001b[1;31mValueError\u001b[0m                                Traceback (most recent call last)",
  472.       "\u001b[1;32m<ipython-input-44-a1b4c2fca2f1>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      3\u001b[0m \u001b[0mprobs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmodel\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpredict_proba\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX_test\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      4\u001b[0m \u001b[0mpreds\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mprobs\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 5\u001b[1;33m \u001b[0mfpr\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtpr\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mthreshold\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmetrics\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mroc_curve\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my_test\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mpreds\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      6\u001b[0m \u001b[0mroc_auc\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmetrics\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mauc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfpr\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtpr\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      7\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
  473.       "\u001b[1;32m~\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\sklearn\\metrics\\ranking.py\u001b[0m in \u001b[0;36mroc_curve\u001b[1;34m(y_true, y_score, pos_label, sample_weight, drop_intermediate)\u001b[0m\n\u001b[0;32m    616\u001b[0m     \"\"\"\n\u001b[0;32m    617\u001b[0m     fps, tps, thresholds = _binary_clf_curve(\n\u001b[1;32m--> 618\u001b[1;33m         y_true, y_score, pos_label=pos_label, sample_weight=sample_weight)\n\u001b[0m\u001b[0;32m    619\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    620\u001b[0m     \u001b[1;31m# Attempt to drop thresholds corresponding to points in between and\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
  474.       "\u001b[1;32m~\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\sklearn\\metrics\\ranking.py\u001b[0m in \u001b[0;36m_binary_clf_curve\u001b[1;34m(y_true, y_score, pos_label, sample_weight)\u001b[0m\n\u001b[0;32m    395\u001b[0m     if not (y_type == \"binary\" or\n\u001b[0;32m    396\u001b[0m             (y_type == \"multiclass\" and pos_label is not None)):\n\u001b[1;32m--> 397\u001b[1;33m         \u001b[1;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"{0} format is not supported\"\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my_type\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    398\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    399\u001b[0m     \u001b[0mcheck_consistent_length\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my_true\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my_score\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msample_weight\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
  475.       "\u001b[1;31mValueError\u001b[0m: multiclass format is not supported"
  476.      ]
  477.     }
  478.    ],
  479.    "source": [
  480.     "import sklearn.metrics as metrics\n",
  481.     "# calculate the fpr and tpr for all thresholds of the classification\n",
  482.     "probs = model.predict_proba(X_test)\n",
  483.     "preds = probs[:,1]\n",
  484.     "fpr, tpr, threshold = metrics.roc_curve(y_test, preds)\n",
  485.     "roc_auc = metrics.auc(fpr, tpr)\n",
  486.     "\n",
  487.     "# method I: plt\n",
  488.     "plt.title('Receiver Operating Characteristic')\n",
  489.     "plt.plot(fpr, tpr, 'b', label = 'AUC = %0.2f' % roc_auc)\n",
  490.     "plt.legend(loc = 'lower right')\n",
  491.     "plt.plot([0, 1], [0, 1],'r--')\n",
  492.     "plt.xlim([0, 1])\n",
  493.     "plt.ylim([0, 1])\n",
  494.     "plt.ylabel('True Positive Rate')\n",
  495.     "plt.xlabel('False Positive Rate')\n",
  496.     "plt.show()"
  497.    ]
  498.   },
  499.   {
  500.    "cell_type": "code",
  501.    "execution_count": 46,
  502.    "metadata": {},
  503.    "outputs": [
  504.     {
  505.      "data": {
  506.       "text/plain": [
  507.        "0        0\n",
  508.        "1        0\n",
  509.        "2        0\n",
  510.        "3        0\n",
  511.        "4        0\n",
  512.        "5        0\n",
  513.        "6        0\n",
  514.        "7        0\n",
  515.        "8        0\n",
  516.        "9        0\n",
  517.        "10       0\n",
  518.        "11       0\n",
  519.        "12       0\n",
  520.        "13       0\n",
  521.        "14       0\n",
  522.        "15       0\n",
  523.        "16       0\n",
  524.        "17       0\n",
  525.        "18       0\n",
  526.        "19       0\n",
  527.        "20       0\n",
  528.        "21       0\n",
  529.        "22       0\n",
  530.        "23       0\n",
  531.        "24       0\n",
  532.        "25       0\n",
  533.        "26       0\n",
  534.        "27       0\n",
  535.        "28       0\n",
  536.        "29       0\n",
  537.        "        ..\n",
  538.        "13815    5\n",
  539.        "13816    5\n",
  540.        "13817    5\n",
  541.        "13818    5\n",
  542.        "13819    5\n",
  543.        "13820    5\n",
  544.        "13821    5\n",
  545.        "13822    5\n",
  546.        "13823    5\n",
  547.        "13824    5\n",
  548.        "13825    5\n",
  549.        "13826    5\n",
  550.        "13827    5\n",
  551.        "13828    5\n",
  552.        "13829    5\n",
  553.        "13830    5\n",
  554.        "13831    5\n",
  555.        "13832    5\n",
  556.        "13833    5\n",
  557.        "13834    5\n",
  558.        "13835    5\n",
  559.        "13836    5\n",
  560.        "13837    5\n",
  561.        "13838    5\n",
  562.        "13839    5\n",
  563.        "13840    5\n",
  564.        "13841    5\n",
  565.        "13842    5\n",
  566.        "13843    5\n",
  567.        "13844    5\n",
  568.        "Name: category_id, Length: 13845, dtype: int64"
  569.       ]
  570.      },
  571.      "execution_count": 46,
  572.      "metadata": {},
  573.      "output_type": "execute_result"
  574.     }
  575.    ],
  576.    "source": [
  577.     "from itertools import cycle\n",
  578.     "from sklearn.metrics import roc_curve, auc\n",
  579.     "from sklearn.preprocessing import label_binarize\n",
  580.     "from sklearn.multiclass import OneVsRestClassifier\n",
  581.     "from scipy import interp\n",
  582.     "\n",
  583.     "labels"
  584.    ]
  585.   },
  586.   {
  587.    "cell_type": "code",
  588.    "execution_count": null,
  589.    "metadata": {},
  590.    "outputs": [],
  591.    "source": [
  592.     "# Binarize the output\n",
  593.     "y = label_binarize(y, classes=[0, 1, 2])\n",
  594.     "n_classes = y.shape[1]"
  595.    ]
  596.   },
  597.   {
  598.    "cell_type": "code",
  599.    "execution_count": 61,
  600.    "metadata": {},
  601.    "outputs": [],
  602.    "source": [
  603.     "import xgboost as xgb"
  604.    ]
  605.   },
  606.   {
  607.    "cell_type": "code",
  608.    "execution_count": 65,
  609.    "metadata": {},
  610.    "outputs": [],
  611.    "source": [
  612.     "X_train, X_test, Y_train, Y_test, indices_train, indices_test = train_test_split(features, labels, df.index, test_size=0.33, random_state=0)"
  613.    ]
  614.   },
  615.   {
  616.    "cell_type": "code",
  617.    "execution_count": 67,
  618.    "metadata": {},
  619.    "outputs": [],
  620.    "source": [
  621.     "D_train = xgb.DMatrix(X_train, label=Y_train)\n",
  622.     "D_test = xgb.DMatrix(X_test, label=Y_test)"
  623.    ]
  624.   },
  625.   {
  626.    "cell_type": "code",
  627.    "execution_count": 76,
  628.    "metadata": {},
  629.    "outputs": [],
  630.    "source": [
  631.     "param = {\n",
  632.     "    'eta': 0.3, \n",
  633.     "    'max_depth': 3,  \n",
  634.     "    'objective': 'multi:softprob',  \n",
  635.     "    'num_class': 6} \n",
  636.     "\n",
  637.     "steps = 500  # The number of training iterations"
  638.    ]
  639.   },
  640.   {
  641.    "cell_type": "code",
  642.    "execution_count": 77,
  643.    "metadata": {},
  644.    "outputs": [],
  645.    "source": [
  646.     "model = xgb.train(param, D_train, steps)"
  647.    ]
  648.   },
  649.   {
  650.    "cell_type": "code",
  651.    "execution_count": 78,
  652.    "metadata": {},
  653.    "outputs": [
  654.     {
  655.      "name": "stdout",
  656.      "output_type": "stream",
  657.      "text": [
  658.       "Precision = 0.8178374981626977\n",
  659.       "Recall = 0.8109642765523942\n",
  660.       "Accuracy = 0.8093674764718757\n"
  661.      ]
  662.     }
  663.    ],
  664.    "source": [
  665.     "import numpy as np\n",
  666.     "from sklearn.metrics import precision_score, recall_score, accuracy_score\n",
  667.     "\n",
  668.     "preds = model.predict(D_test)\n",
  669.     "best_preds = np.asarray([np.argmax(line) for line in preds])\n",
  670.     "\n",
  671.     "print(\"Precision = {}\".format(precision_score(Y_test, best_preds, average='macro')))\n",
  672.     "print(\"Recall = {}\".format(recall_score(Y_test, best_preds, average='macro')))\n",
  673.     "print(\"Accuracy = {}\".format(accuracy_score(Y_test, best_preds)))"
  674.    ]
  675.   },
  676.   {
  677.    "cell_type": "code",
  678.    "execution_count": 83,
  679.    "metadata": {},
  680.    "outputs": [
  681.     {
  682.      "name": "stderr",
  683.      "output_type": "stream",
  684.      "text": [
  685.       "C:\\Users\\agyumol\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n",
  686.       "  FutureWarning)\n",
  687.       "C:\\Users\\agyumol\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:460: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.\n",
  688.       "  \"this warning.\", FutureWarning)\n"
  689.      ]
  690.     },
  691.     {
  692.      "name": "stdout",
  693.      "output_type": "stream",
  694.      "text": [
  695.       "# 'accounting':\n",
  696.       "  . Top unigrams:\n",
  697.       "       . accountant\n",
  698.       "       . accounting\n",
  699.       "  . Top bigrams:\n",
  700.       "       . accounts payable\n",
  701.       "       . success manager\n",
  702.       "# 'administrative':\n",
  703.       "  . Top unigrams:\n",
  704.       "       . office\n",
  705.       "       . admin\n",
  706.       "  . Top bigrams:\n",
  707.       "       . executive assistant\n",
  708.       "       . personal assistant\n",
  709.       "# 'customerservice':\n",
  710.       "  . Top unigrams:\n",
  711.       "       . customer\n",
  712.       "       . sales\n",
  713.       "  . Top bigrams:\n",
  714.       "       . service advisor\n",
  715.       "       . teller time\n",
  716.       "# 'education':\n",
  717.       "  . Top unigrams:\n",
  718.       "       . teacher\n",
  719.       "       . teachers\n",
  720.       "  . Top bigrams:\n",
  721.       "       . tutors needed\n",
  722.       "       . hiring time\n",
  723.       "# 'foodbeverage':\n",
  724.       "  . Top unigrams:\n",
  725.       "       . cook\n",
  726.       "       . restaurant\n",
  727.       "  . Top bigrams:\n",
  728.       "       . assistant manager\n",
  729.       "       . team members\n",
  730.       "# 'labor':\n",
  731.       "  . Top unigrams:\n",
  732.       "       . maintenance\n",
  733.       "       . warehouse\n",
  734.       "  . Top bigrams:\n",
  735.       "       . 595 week\n",
  736.       "       . make 595\n"
  737.      ]
  738.     }
  739.    ],
  740.    "source": [
  741.     "model.fit(features, labels)\n",
  742.     "N = 2\n",
  743.     "\n",
  744.     "\n",
  745.     "for category, category_id in sorted(category_to_id.items()):\n",
  746.     "  indices = np.argsort(model.coef_[category_id])\n",
  747.     "  feature_names = np.array(tfidf.get_feature_names())[indices]\n",
  748.     "  unigrams = [v for v in reversed(feature_names) if len(v.split(' ')) == 1][:N]\n",
  749.     "  bigrams = [v for v in reversed(feature_names) if len(v.split(' ')) == 2][:N]\n",
  750.     "  print(\"# '{}':\".format(category))\n",
  751.     "  print(\"  . Top unigrams:\\n       . {}\".format('\\n       . '.join(unigrams)))\n",
  752.     "  print(\"  . Top bigrams:\\n       . {}\".format('\\n       . '.join(bigrams)))"
  753.    ]
  754.   },
  755.   {
  756.    "cell_type": "code",
  757.    "execution_count": null,
  758.    "metadata": {},
  759.    "outputs": [],
  760.    "source": []
  761.   }
  762.  ],
  763.  "metadata": {
  764.   "kernelspec": {
  765.    "display_name": "Python 3",
  766.    "language": "python",
  767.    "name": "python3"
  768.   },
  769.   "language_info": {
  770.    "codemirror_mode": {
  771.     "name": "ipython",
  772.     "version": 3
  773.    },
  774.    "file_extension": ".py",
  775.    "mimetype": "text/x-python",
  776.    "name": "python",
  777.    "nbconvert_exporter": "python",
  778.    "pygments_lexer": "ipython3",
  779.    "version": "3.7.3"
  780.   }
  781.  },
  782.  "nbformat": 4,
  783.  "nbformat_minor": 2
  784. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top