{"cells":[{"metadata":{"_uuid":"6f8d8178dff62f18a8ff72ee0439927b326e7f28"},"cell_type":"markdown","source":"# Importation datas"},{"metadata":{"trusted":true,"_uuid":"d9189d438b4af690bfa1e34e07077c7f4a730cee"},"cell_type":"code","source":"import matplotlib.pyplot as plt\nimport numpy as np\nimport os\nimport pandas as pd\nimport seaborn as sns\nimport scipy.stats\n\nfrom nltk.corpus import stopwords\nfrom nltk.tokenize import sent_tokenize, word_tokenize\nfrom nltk.stem.porter import PorterStemmer\nfrom sklearn.decomposition import TruncatedSVD\nfrom sklearn.ensemble import RandomForestClassifier\nfrom sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer\nfrom sklearn.metrics import confusion_matrix, classification_report\nfrom sklearn.model_selection import train_test_split, cross_val_score\nfrom sklearn.naive_bayes import MultinomialNB\nfrom sklearn.pipeline import make_pipeline\n\npd.options.display.max_columns = 1000","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"373e4b77d0c859a4a18c55a2ee9c4392b740dd10"},"cell_type":"code","source":"df = pd.read_csv(\"../input/train.csv\")\ndf.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"12010322c84cb5653295a697e9bf6b06ba1e9c65"},"cell_type":"code","source":"X = df['question_text']\ny = df['target']\nX.shape, y.shape","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"c8cf7981fdb78bf950928d9bf876e20c1e3eeca5"},"cell_type":"code","source":"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.2, random_state=42, stratify=y)\nX_train.shape, y_train.shape, X_test.shape, y_test.shape","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"c2161f5721eda7eda8f5d75032a53fae9ff5ac21"},"cell_type":"markdown","source":"# Quick EDA"},{"metadata":{"trusted":true,"_uuid":"1e967db34e1e7ed2483828898c2f24ed1bcece6c"},"cell_type":"code","source":"df.info()","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"15b0f5efd2a23b1a100cb2ee7e2cee9ed84a2824"},"cell_type":"markdown","source":"NO NAN"},{"metadata":{"trusted":true,"_uuid":"d947160bcc9f262d9cd8839c523c182ba57dbd4e"},"cell_type":"code","source":"df['question_text'][df['question_text'] == \"\"].sum()","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"1b87157cd234d2535ee81166ffba692c65084d73"},"cell_type":"markdown","source":"NO empty strings"},{"metadata":{"trusted":true,"_uuid":"c45ed4607c1fc2a2900277954f92eee3da8578e3"},"cell_type":"code","source":"df['question_text'].shape, df['target'].shape","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"1550a56a421477d921f64b77cf3da62e052b8fff"},"cell_type":"code","source":"df['target'].unique()","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"30d04b090bc21b0198bbbe586a80b4c858bbbe01"},"cell_type":"markdown","source":"# Repartition of sincere/unsincere"},{"metadata":{"trusted":true,"_uuid":"bf2f661dedf36ea9fc36e7fee886fce7782072e9"},"cell_type":"code","source":"sns.countplot(df['target'])\nplt.xlabel('Predictions');","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"a21010d55fca002ff14316f6ef9c81b341a5ed26"},"cell_type":"markdown","source":"0 -> sincere\n1 -> unsincere"},{"metadata":{"trusted":true,"_uuid":"22660e56af4b6a510f27a1887fc06e3a74202d06"},"cell_type":"code","source":"purcent_of_sincere = len(df['question_text'][df['target'] == 0]) / len(df['question_text']) * 100\npurcent_of_unsincere = len(df['question_text'][df['target'] == 1]) / len(df['question_text']) * 100\n\nsincere_len = len(df['question_text'][df['target'] == 0])\nunsincere_len = len(df['question_text'][df['target'] == 1])\n\nprint(\"Purcent of sincere: {:.2f}%, {} questions\".format(purcent_of_sincere, sincere_len))\nprint(\"Purcent of unsincere: {:.2f}%, {} questions\".format(purcent_of_unsincere, unsincere_len))","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"e290b7b29e0d318f66b3413209f0cb2de9e44f46"},"cell_type":"markdown","source":"# Difference of Lenght Distribution questions"},{"metadata":{"trusted":true,"_uuid":"b45843cea8905a56cfb263ec25ff6a4c7106b461"},"cell_type":"code","source":"sincere_lst_len = [len(df['question_text'][i]) for i in range(0, len(df['question_text'][df['target'] == 0])) if df['target'][i] == 0]\nsincere_len_mean = np.array(sincere_lst_len).mean()\nprint(\"Mean of sincere questions: {:.0f} characters\".format(sincere_len_mean))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"60d2bdd231a3397ae51bfc80f577415cb09d84b8"},"cell_type":"code","source":"unsincere_lst_len = [len(df['question_text'][i]) for i in range(0, len(df['question_text'][df['target'] == 1])) if df['target'][i] == 1]\nunsincere_len_mean = np.array(unsincere_lst_len).mean()\nprint(\"Mean of unsincere questions: {:.0f} characters\".format(unsincere_len_mean))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"28efa1d1ece75a14034a30b7608c061f93dc4188"},"cell_type":"code","source":"s1 = df[df['target'] == 0]['question_text'].str.len()\nsns.distplot(s1, label='sincere')\ns2 = df[df['target'] == 1]['question_text'].str.len()\nsns.distplot(s2, label='unsincere')\nplt.title('Lenght Distribution')\nplt.legend();","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"58d1ca527a8f0dfc8a2aa0d65ca30622aa3a44fc"},"cell_type":"markdown","source":"## First word unsincere"},{"metadata":{"trusted":true,"_uuid":"15a8c1a14dc1049b86b9347f8888a418bab05a51"},"cell_type":"code","source":"first_word_unsincere = []\nfor sentence in df[df['target'] == 1]['question_text']:\n    first_word_unsincere.append(sentence.split()[0])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"4e461e6f9ab5f30f91bbe0a92669be678ad69604"},"cell_type":"code","source":"from collections import Counter\ncounter_unsincere = Counter(first_word_unsincere)\ncounter_unsincere.most_common(10)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"48714aa2c2db05af0f05e4031e22ea228161d105"},"cell_type":"markdown","source":"**NO conclusion here**  \n**Too much different words**"},{"metadata":{"_uuid":"4701c4274f3e774cf08d031a6c65622fafb48122"},"cell_type":"markdown","source":"## First word sincere"},{"metadata":{"trusted":true,"_uuid":"3a768cbb3edefec21f8b0a58a2daa274ad1bb086"},"cell_type":"code","source":"first_word_sincere = []\nfor sentence in df[df['target'] == 0]['question_text']:\n    first_word_sincere.append(sentence.split()[0])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"f4c48dc547ab09340fb0d90297ab93590d33fd3b"},"cell_type":"code","source":"from collections import Counter\ncounter_sincere = Counter(first_word_sincere)\ncounter_sincere.most_common(10)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"5d42716da8cdfcbf016838cd3d99666b83c92b5f"},"cell_type":"markdown","source":"**NO conclusion here**  \n**Too much different words**"},{"metadata":{"_uuid":"d31e1cf95ede7bc170e19b0d5b88512734d1a7af"},"cell_type":"markdown","source":"# Preprocessing"},{"metadata":{"_uuid":"1e7579ebd5ece66c9f15f3e7f2c3279296a6ea82"},"cell_type":"markdown","source":"### Word Tokenize on lower docs"},{"metadata":{"trusted":true,"_uuid":"28cfd9e02103d5d4834990b30a8f543f4efd115b"},"cell_type":"code","source":"tokenized_docs = [word_tokenize(doc.lower()) for doc in X_train]\ntokenized_docs[0]","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"9fbf45fea841ca35827eed4d6c42d7f3f5dbb1af"},"cell_type":"markdown","source":"### Alpha Tokenize"},{"metadata":{"trusted":true,"_uuid":"9e2911303781f959b37bb689f6026c91c47dd594"},"cell_type":"code","source":"alpha_tokens = [[t for t in doc if t.isalpha() == True] for doc in tokenized_docs]\nalpha_tokens[0]","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"9d45b4de48d7323528ed87e12f474badc8c50af1"},"cell_type":"markdown","source":"### Stop_words"},{"metadata":{"trusted":true,"_uuid":"04cb4a1a352ad1c6346945f161dac34b3757909c"},"cell_type":"code","source":"stop_words = stopwords.words('english')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"b94a96dabacc9817095c25057ab91270085b0ea1"},"cell_type":"code","source":"no_stop_tokens = [[t for t in doc if t not in stop_words] for doc in alpha_tokens]\nno_stop_tokens[0]","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"fea6f7d70f407afa72d3907982670f3368df5bee"},"cell_type":"markdown","source":"### Stemmer"},{"metadata":{"trusted":true,"_uuid":"51302bcf1f61e2f481cfb82970fd2dd6bcd890a0"},"cell_type":"code","source":"stemmer = PorterStemmer()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"e85e96d27b87facdaf79fa2fdd98c31c64140242"},"cell_type":"code","source":"stemmed_tokens = [[stemmer.stem(t) for t in doc] for doc in no_stop_tokens]\nstemmed_tokens[0]","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"748668d50961e9125bd7495ec7142355a7a347dc"},"cell_type":"markdown","source":"# Count stemmed_tokens unsincere/sincere"},{"metadata":{"trusted":true,"_uuid":"bb679963f669795776e6e550ec24c0e5ad7575e6"},"cell_type":"code","source":"X_temp = X_train.reset_index()\nX_temp['temp'] = stemmed_tokens\nX_temp.set_index('index', inplace=True)\nX_temp.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"0cadc1384814f4657df23c2f0a996c8dce820c61"},"cell_type":"code","source":"X_temp = pd.concat([X_temp, y_train], axis=1, sort=False)\nX_temp.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"2a2248d685544cddfadafc19ca27b94b5e8e082c"},"cell_type":"code","source":"np_X_temp_index = np.array(X_temp.index)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"3a3f6c53070fb1bf75b4902d780a142673df3383"},"cell_type":"code","source":"lst = []\nfor idx in np_X_temp_index:\n    lst.append(len(X_temp['temp'][idx]))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"3db306854c93cb6bc4e940c773a6b69c5cd55fe6"},"cell_type":"code","source":"X_temp['count'] = lst\nX_temp.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"ba395c0287fe6445145460fac88c58a7d4f6dd4b"},"cell_type":"code","source":"mean_count_sincere = X_temp['count'][X_temp['target'] == 0].mean()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"a899f779bd7e99015f8de37bad5a30b1f6c998a4"},"cell_type":"code","source":"print(\"Mean of preprocessed sincere words: {:.0f}\".format(mean_count_sincere))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"f4be2703b24a424368b86f20c11f945378d509ce"},"cell_type":"code","source":"mean_count_unsincere = X_temp['count'][X_temp['target'] == 1].mean()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"0b9b5d5312830555474ecf87077d9a581c0f49f2"},"cell_type":"code","source":"print(\"Mean of preprocessed unsincere words: {:.0f}\".format(mean_count_unsincere))","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"fd79df2d3a41be10dd0f0340a09488b9f47f2146"},"cell_type":"markdown","source":"# Latent semantic analysis"},{"metadata":{"trusted":true,"_uuid":"84ac96c213ac6941fea896edc0cd573c751ff89a"},"cell_type":"code","source":"X_train_clean = [\" \".join(x_t) for x_t in stemmed_tokens]\nX_train_clean","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"e7624cdbc343cc95fc0c4fda884cef11260efbc3"},"cell_type":"code","source":"from sklearn.feature_extraction.text import TfidfVectorizer\nfrom sklearn.decomposition import TruncatedSVD","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"873122530909facbb7d105d5b7aac47e0a37b17a"},"cell_type":"code","source":"from sklearn.pipeline import Pipeline\nvectorizer = TfidfVectorizer(stop_words='english')\nsvd = TruncatedSVD(random_state=42)\npreprocessing_pipe = Pipeline([('vectorizer', vectorizer), ('svd', svd)])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"db8bbce87165b53a1f3aff6195960f04ae17d909"},"cell_type":"code","source":"lsa_train = preprocessing_pipe.fit_transform(X_train_clean)\nlsa_train.shape","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"26cbe1f5d67d93b68217b183f9e90da0e83d2803"},"cell_type":"code","source":"sns.scatterplot(x=lsa_train[:10000, 0], y=lsa_train[:10000, 1], hue=y_train[:10000]);","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"ae837f091b00c78aa79cbc25f2937d7975a17d06"},"cell_type":"code","source":"components = pd.DataFrame(data=svd.components_, columns=preprocessing_pipe.named_steps['vectorizer'].get_feature_names(), index=['component_0', 'component_1'])\ncomponents","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"2909693cd26e53568b497407393cfc1951273ca0"},"cell_type":"code","source":"fig, axes = plt.subplots(1, 2, figsize=(18, 8))\nfor i, ax in enumerate(axes.flat):\n    components.iloc[i].sort_values(ascending=False)[:10].sort_values().plot.barh(ax=ax)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"47eacac9ab6a02bc3f2b599646688f8854e62844"},"cell_type":"markdown","source":"# Machine Learning"},{"metadata":{"_uuid":"aa4e8baf72158d0db959c0fe7f68bcdfdffc760b"},"cell_type":"markdown","source":"## Countvectorizer"},{"metadata":{"trusted":true,"_uuid":"6899103b9635a569027fee52053f286dddc2554f"},"cell_type":"code","source":"def cleaning(df):\n    tokenized_docs = [word_tokenize(doc.lower()) for doc in df]\n    alpha_tokens = [[t for t in doc if t.isalpha() == True] for doc in tokenized_docs]\n    no_stop_tokens = [[t for t in doc if t not in stop_words] for doc in alpha_tokens]\n    stemmed_tokens = [[stemmer.stem(t) for t in doc] for doc in no_stop_tokens]\n    df_clean = [\" \".join(x_t) for x_t in stemmed_tokens]\n    return df_clean","execution_count":null,"outputs":[]},{"metadata":{"scrolled":true,"trusted":true,"_uuid":"6d9282873e4f102076162f7938d5b0e2a4d31e99"},"cell_type":"code","source":"X_test_clean = cleaning(X_test)\nX_test_clean","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"179a5cbf7c160f4841c78664b01c681b2c14f746"},"cell_type":"markdown","source":"## CountVectorizer-Unigrams"},{"metadata":{"trusted":true,"_uuid":"209b50ab121bf8d4345e65daa9b9d733cb410280"},"cell_type":"code","source":"cvec_unigram = CountVectorizer(stop_words='english').fit(X_train_clean)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"1b4517d6b83de7cfc7d192ed6649a499f89a268b"},"cell_type":"code","source":"mb = MultinomialNB()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"14f63dabe34894b2466141aa64ea6638368b7e3c"},"cell_type":"code","source":"pipe = make_pipeline(cvec_unigram, mb)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"a20330f439386c2d03e889cdd3071e8328fc6788"},"cell_type":"code","source":"pipe.fit(X_train_clean, y_train)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"1a307a85eaaac61d24184d7dfce23dbafc459d5e"},"cell_type":"code","source":"pipe.score(X_train_clean, y_train)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"7205fda069736fc47b4478b4ac19c1fc15fbf815"},"cell_type":"code","source":"pipe.score(X_test_clean, y_test)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"3c77f08125b173b25883db0dc808a449a4b904d8"},"cell_type":"code","source":"y_pred = pipe.predict(X_test_clean)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"857e001c06c056e7f1ca74b8813042f348cae5d0"},"cell_type":"code","source":"confusion_matrix(y_test, y_pred)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"886ac9972bf54d492d592fefd75fc57a73b98b30"},"cell_type":"code","source":"print(classification_report(y_test, y_pred))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"a167052813130764e5a8dcb8a97a1328f6050c32"},"cell_type":"code","source":"scores = cross_val_score(pipe, X_train_clean, y_train, cv=5, scoring='f1')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"3e6c4031581e2429bb7875e53eb37d414cb469a5"},"cell_type":"code","source":"scores","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"9d81a83af9c11bcc4652a96da439afa5ccad429b"},"cell_type":"code","source":"print(\"mean: {}\".format(scores.mean()))\nprint(\"std: {}\".format(scores.std()))","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"e2f0dab5d90b453f6bbfc98a80f6c00c5696fda5"},"cell_type":"markdown","source":"## CountVectorizer-bigrams"},{"metadata":{"trusted":true,"_uuid":"dadae7fcb8b5ebc90b7c105bd09190f3de3d373d"},"cell_type":"code","source":"cvec_bigram = CountVectorizer(stop_words='english', ngram_range=(2, 2)).fit(X_train_clean)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"450ce7b0d48794a7d443ee2b6cdb18a9860ff7ac"},"cell_type":"code","source":"mb = MultinomialNB()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"1bd8242b7bb458cd15f874c84bd2dbc025b288be"},"cell_type":"code","source":"pipe_bi = make_pipeline(cvec_bigram, mb)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"f4525f0b3b39ded514b26f733b6efea9d9021d08"},"cell_type":"code","source":"pipe_bi.fit(X_train_clean, y_train)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"c4ec27b15c9c86a2c58869b2953b6fdb14e322a8"},"cell_type":"code","source":"pipe_bi.score(X_train_clean, y_train)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"35c51866b7342f02a4c0bd657ee94ed23d0b299a"},"cell_type":"code","source":"pipe_bi.score(X_test_clean, y_test)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"1699140dca00ffb10954456f4c91b5a81db1e869"},"cell_type":"code","source":"y_pred_bi = pipe_bi.predict(X_test_clean)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"6c757860197406b4059aba8b67e45ba9a5896305"},"cell_type":"code","source":"confusion_matrix(y_test, y_pred_bi)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"94777eba727f6a69022fec635821c3a1c0bd2e6d"},"cell_type":"code","source":"print(classification_report(y_test, y_pred_bi))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"a87489ad2edf618325f715ffa91154c7d76e9c8e"},"cell_type":"code","source":"scores_bi = cross_val_score(pipe_bi, X_train_clean, y_train, cv=5, scoring='f1')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"a4b4a5a68404ba4de07df8d20c5f9834f4415d7f"},"cell_type":"code","source":"scores_bi","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"fb05d88d468915d7e4b13f9ad902c2a2926126e7"},"cell_type":"code","source":"print(\"mean: {}\".format(scores_bi.mean()))\nprint(\"std: {}\".format(scores_bi.std()))","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"6c88c56a2e5bdd6446b2eacc7b4c4061d6dc9dd5"},"cell_type":"markdown","source":"## CountVectorizer-trigrams"},{"metadata":{"trusted":true,"_uuid":"21b386fa3874293154ff4cad269383bc800e6afd"},"cell_type":"code","source":"cvec_trigram = CountVectorizer(stop_words='english', ngram_range=(3, 3)).fit(X_train_clean)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"591a5de74b20b1702c846185fcad6f1cf7b9716b"},"cell_type":"code","source":"mb = MultinomialNB()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"ae49bbaf0df0c1e2d7bdc8f4ce6286b793a5121c"},"cell_type":"code","source":"pipe_tri = make_pipeline(cvec_trigram, mb)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"d66bdabce8bca5645a943f5c8dfa6ed551e655fb"},"cell_type":"code","source":"pipe_tri.fit(X_train_clean, y_train)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"7cadd36de70e29337c5afc8c2d232b0d36d4a092"},"cell_type":"code","source":"pipe_tri.score(X_train_clean, y_train)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"3c13cf9d77e7c4ebd6cd8e9b6ded34e6712351e5"},"cell_type":"code","source":"pipe_tri.score(X_test_clean, y_test)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"b6390c49a9f41a571a5197562db70b7415acd328"},"cell_type":"code","source":"y_pred_tri = pipe_tri.predict(X_test_clean)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"73abb82da0495c05fb6512ba387ed85ed5511afa"},"cell_type":"code","source":"confusion_matrix(y_test, y_pred_tri)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"04121cc4f7568e1061f36151f3d56d62c991e412"},"cell_type":"code","source":"print(classification_report(y_test, y_pred_tri))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"cfd5ab899201af18a4769709650b8745ea81b8e3"},"cell_type":"code","source":"scores_tri = cross_val_score(pipe_tri, X_train_clean, y_train, cv=5, scoring='f1')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"518a118e182d7d3b90b894b06d5f5fe5fb0eaceb"},"cell_type":"code","source":"scores_tri","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"03613b9d3607ad1a264253662fc30f738b81cd9a"},"cell_type":"code","source":"print(\"mean: {}\".format(scores_tri.mean()))\nprint(\"std: {}\".format(scores_tri.std()))","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"1588f4377487dc8c0bacdfecae17ae3e0347f3f7"},"cell_type":"markdown","source":"**Best score with ngram_range(1, 1): f1_score = 0.54**"}],"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.5"}},"nbformat":4,"nbformat_minor":1}