{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"<h1>Natural Language Processing, EDA & Prediction of Tweets</h1>\n<img src='data:image/png;base64,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'>","metadata":{}},{"cell_type":"code","source":"import numpy as np \nimport pandas as pd \nimport nltk\nfrom nltk.tokenize import word_tokenize, TweetTokenizer\nfrom nltk.corpus import stopwords\nfrom nltk.stem import WordNetLemmatizer, PorterStemmer\nfrom nltk.probability import FreqDist\nimport string as s\nimport re\nfrom textblob import TextBlob\nimport matplotlib.pyplot as plt\nfrom sklearn.decomposition import TruncatedSVD\nfrom sklearn.model_selection import cross_validate, GridSearchCV, train_test_split\nfrom sklearn.naive_bayes import MultinomialNB\nfrom sklearn.linear_model import LogisticRegression\nfrom sklearn.neighbors import KNeighborsClassifier\nfrom catboost import CatBoostClassifier\nfrom xgboost import XGBClassifier\nfrom sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier, AdaBoostClassifier\nfrom sklearn.metrics import roc_auc_score, roc_curve, confusion_matrix\nfrom sklearn.compose import ColumnTransformer\nfrom sklearn.pipeline import Pipeline, make_pipeline\nfrom sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer\nfrom sklearn.preprocessing import StandardScaler, MinMaxScaler\nfrom sklearn.utils.class_weight import compute_class_weight\nfrom skopt import BayesSearchCV\nfrom skopt.space import Real, Categorical, Integer\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-07-27T23:51:09.123195Z","iopub.execute_input":"2022-07-27T23:51:09.123514Z","iopub.status.idle":"2022-07-27T23:52:26.724100Z","shell.execute_reply.started":"2022-07-27T23:51:09.123460Z","shell.execute_reply":"2022-07-27T23:52:26.722989Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<h1>Load Dataset & Get an informations about it</h1>","metadata":{}},{"cell_type":"code","source":"train_df=pd.read_csv('/kaggle/input/nlp-getting-started/train.csv')\ntest_df=pd.read_csv('/kaggle/input/nlp-getting-started/test.csv')\ntrain_mod_df = train_df.copy()\ntest_mod_df = test_df.copy()\ntest_df2 = test_df.copy()\ntrain_df2 = train_df.copy()\ndef data_info(d):\n    print('number of variables: ',d.shape[1])\n    print('number of tweets: ',d.shape[0])\n    print('variables names: ')\n    print(d.columns)\n    print('variables data-types: ')\n    print(d.dtypes)\n    print('missing values: ')\n    c=d.isnull().sum()\n    print(c[c>0])","metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","execution":{"iopub.status.busy":"2022-07-20T22:39:13.005715Z","iopub.execute_input":"2022-07-20T22:39:13.006060Z","iopub.status.idle":"2022-07-20T22:39:13.047338Z","shell.execute_reply.started":"2022-07-20T22:39:13.006007Z","shell.execute_reply":"2022-07-20T22:39:13.046588Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data_info(train_df)","metadata":{"execution":{"iopub.status.busy":"2022-07-20T22:39:16.441420Z","iopub.execute_input":"2022-07-20T22:39:16.441716Z","iopub.status.idle":"2022-07-20T22:39:16.456719Z","shell.execute_reply.started":"2022-07-20T22:39:16.441666Z","shell.execute_reply":"2022-07-20T22:39:16.456121Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data_info(test_df)","metadata":{"execution":{"iopub.status.busy":"2022-07-20T22:39:19.575788Z","iopub.execute_input":"2022-07-20T22:39:19.576104Z","iopub.status.idle":"2022-07-20T22:39:19.587352Z","shell.execute_reply.started":"2022-07-20T22:39:19.576051Z","shell.execute_reply":"2022-07-20T22:39:19.585948Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# remove location from test and training datasets\ntrain_mod_df.drop(['location', 'id', 'keyword'], axis = 1, inplace = True)\ntest_mod_df.drop(['location', 'id', 'keyword'], axis = 1, inplace = True)\ntrain_df2.drop(['location', 'id', 'keyword'], axis = 1, inplace = True)\ntest_df2.drop(['location', 'id', 'keyword'], axis = 1, inplace = True)","metadata":{"execution":{"iopub.status.busy":"2022-07-20T22:39:21.264169Z","iopub.execute_input":"2022-07-20T22:39:21.264468Z","iopub.status.idle":"2022-07-20T22:39:21.276339Z","shell.execute_reply.started":"2022-07-20T22:39:21.264415Z","shell.execute_reply":"2022-07-20T22:39:21.273651Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<h1>EDA</h1>","metadata":{}},{"cell_type":"code","source":"plt.figure(figsize=(8,8))\ntrain_df['target'].value_counts().plot.pie(autopct='%.2f%%')\nplt.title('Disaster or Not Distribution')\nplt.ylabel('')\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2022-07-20T22:39:26.826864Z","iopub.execute_input":"2022-07-20T22:39:26.827148Z","iopub.status.idle":"2022-07-20T22:39:26.957588Z","shell.execute_reply.started":"2022-07-20T22:39:26.827102Z","shell.execute_reply":"2022-07-20T22:39:26.956794Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_mod_df[train_mod_df['target']==1].loc[:4,'text']","metadata":{"execution":{"iopub.status.busy":"2022-07-20T22:39:28.835839Z","iopub.execute_input":"2022-07-20T22:39:28.836127Z","iopub.status.idle":"2022-07-20T22:39:28.847616Z","shell.execute_reply.started":"2022-07-20T22:39:28.836077Z","shell.execute_reply":"2022-07-20T22:39:28.846634Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_disasters={'earthquake':0,'fire':0,'fires':0,'shelter':0}\ntest_disasters={'earthquake':0,'fire':0,'fires':0,'shelter':0}\nfor i,j in zip(train_df['text'],test_df['text']):\n    if 'earthquake' in i.split():\n        train_disasters['earthquake']+=1\n    elif 'earthquake' in j.split():\n        test_disasters['earthquake']+=1\n    if 'fire' in i.split():\n        train_disasters['fire']+=1\n    elif 'fire' in j.split():\n        test_disasters['fire']+=1\n    if 'fires' in i.split():\n        train_disasters['fires']+=1\n    elif 'fires' in j.split():\n        test_disasters['fires']+=1\n    if 'shelter' in i.split():\n        train_disasters['shelter']+=1\n    elif 'shelter' in j.split():\n        test_disasters['shelter']+=1\nprint('number of tweets that fires,fire and earthquacke mentioned in train data: ',train_disasters)\nprint('number of tweets that fires,fire and earthquacke mentioned in test data: ',test_disasters)","metadata":{"execution":{"iopub.status.busy":"2022-07-20T22:39:31.153297Z","iopub.execute_input":"2022-07-20T22:39:31.153585Z","iopub.status.idle":"2022-07-20T22:39:31.194399Z","shell.execute_reply.started":"2022-07-20T22:39:31.153536Z","shell.execute_reply":"2022-07-20T22:39:31.193131Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<h1>Text Preprocessing</h1>","metadata":{}},{"cell_type":"code","source":"def remove_links_hash(s):\n    s = re.sub(r'https?://[^\\s\\n\\r]+', '', s)\n    s = re.sub(r'http?://[^\\s\\n\\r]+', '', s)\n    s = re.sub(r'\\#\\w+', '', s)\n    s = re.sub(r'\\@\\w+', '', s) \n    return s\ndef remove_emojis(s):\n    emoj = re.compile(\"[\"\n        u\"\\U0001F600-\\U0001F64F\"  # emoticons\n        u\"\\U0001F300-\\U0001F5FF\"  # symbols & pictographs\n        u\"\\U0001F680-\\U0001F6FF\"  # transport & map symbols\n        u\"\\U0001F1E0-\\U0001F1FF\"  # flags (iOS)\n        u\"\\U00002500-\\U00002BEF\"  # chinese char\n        u\"\\U00002702-\\U000027B0\"\n        u\"\\U00002702-\\U000027B0\"\n        u\"\\U000024C2-\\U0001F251\"\n        u\"\\U0001f926-\\U0001f937\"\n        u\"\\U00010000-\\U0010ffff\"\n        u\"\\u2640-\\u2642\" \n        u\"\\u2600-\\u2B55\"\n        u\"\\u200d\"\n        u\"\\u23cf\"\n        u\"\\u23e9\"\n        u\"\\u231a\"\n        u\"\\ufe0f\"  # dingbats\n        u\"\\u3030\"\n                      \"]+\", re.UNICODE)\n    return re.sub(emoj, '', s)\ntrain_mod_df['text'] = train_mod_df['text'].apply(remove_links_hash)\ntrain_mod_df['text'] = train_mod_df['text'].apply(remove_emojis)\ntest_mod_df['text'] = test_mod_df['text'].apply(remove_links_hash)\ntest_mod_df['text'] = test_mod_df['text'].apply(remove_emojis)","metadata":{"execution":{"iopub.status.busy":"2022-07-20T22:39:33.574155Z","iopub.execute_input":"2022-07-20T22:39:33.574458Z","iopub.status.idle":"2022-07-20T22:39:33.868877Z","shell.execute_reply.started":"2022-07-20T22:39:33.574406Z","shell.execute_reply":"2022-07-20T22:39:33.867859Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# string tokenizaer\ntt = TweetTokenizer()\ntrain_mod_df['text'] = train_mod_df['text'].apply(tt.tokenize)\ntest_mod_df['text'] = test_mod_df['text'].apply(tt.tokenize)\n# lowercase all words\ndef lowercasing(lst):\n    new_lst=[]\n    for i in lst:\n        i = i.lower()\n        new_lst.append(i)\n    return new_lst\n# remove punctuations\ndef remove_punctuations(lst):\n    new_lst=[]\n    for i in lst:\n        for j in s.punctuation:\n            i=i.replace(j,'')\n        new_lst.append(i)\n    return new_lst\n# remove numbers\ndef remove_numbers(lst):\n    nodig_lst=[]\n    new_lst=[]\n    for i in lst:\n        for j in s.digits:    \n            i=i.replace(j,'')\n        nodig_lst.append(i)\n    for i in nodig_lst:\n        if i!='':\n            new_lst.append(i)\n    return new_lst\ndef remove_stopwords(lst):\n    stop=stopwords.words('english')\n    new_lst=[]\n    for i in lst:\n        if i not in stop:\n            new_lst.append(i)\n    return new_lst\n# remove spaces\ndef remove_spaces(lst):\n    new_lst=[]\n    for i in lst:\n        i=i.strip()\n        new_lst.append(i)\n    return new_lst\ndef remove_letters(lst):\n    new_lst = []\n    for i in lst:\n        if len(i) > 2:\n            new_lst.append(i)\n    return new_lst\ndef remove_noisy_words(lst):\n    noise_lst = ['aa',\n 'aa','ayyo',\n 'aa',\n 'aa', 'mgm',\n 'aa',\n 'aaaa',\n 'aaaa',\n 'aaaaaaallll',\n 'aaaaaaallll ûªm',\n 'aaaaaand',\n 'aaaaaand', 'theres',\n 'aaarrrgghhh',\n 'aal',\n 'aan',\n 'aan den',\n 'aannnnd',\n 'aannnnd',\n 'aar', 'ab']\n    new_lst = []\n    for word in lst:\n        if word not in noise_lst:\n            new_lst.append(word)\n    return new_lst\n    \ntrain_mod_df['text']=train_mod_df['text'].apply(lowercasing)\ntest_mod_df['text']=test_mod_df['text'].apply(lowercasing)   \ntrain_mod_df['text']=train_mod_df['text'].apply(remove_punctuations)\ntest_mod_df['text']=test_mod_df['text'].apply(remove_punctuations) \ntrain_mod_df['text']=train_mod_df['text'].apply(remove_numbers)\ntest_mod_df['text']=test_mod_df['text'].apply(remove_numbers) \ntrain_mod_df['text']=train_mod_df['text'].apply(remove_stopwords)\ntest_mod_df['text']=test_mod_df['text'].apply(remove_stopwords) \ntrain_mod_df['text']=train_mod_df['text'].apply(remove_spaces)\ntest_mod_df['text']=test_mod_df['text'].apply(remove_spaces)\ntrain_mod_df['text']=train_mod_df['text'].apply(remove_letters)\ntest_mod_df['text']=test_mod_df['text'].apply(remove_letters)\ntrain_mod_df['text']=train_mod_df['text'].apply(remove_noisy_words)\ntest_mod_df['text']=test_mod_df['text'].apply(remove_noisy_words)","metadata":{"execution":{"iopub.status.busy":"2022-07-20T22:39:38.036013Z","iopub.execute_input":"2022-07-20T22:39:38.036307Z","iopub.status.idle":"2022-07-20T22:39:42.192390Z","shell.execute_reply.started":"2022-07-20T22:39:38.036254Z","shell.execute_reply":"2022-07-20T22:39:42.191568Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# lemmatization\nlemmatizer=WordNetLemmatizer()\ndef lemmatzation(lst):\n    new_lst=[]\n    for i in lst:\n        i=lemmatizer.lemmatize(i)\n        new_lst.append(i)\n    return new_lst\ntrain_mod_df['text_lem']=train_mod_df['text'].apply(lemmatzation)\ntest_mod_df['text_lem']=test_mod_df['text'].apply(lemmatzation)","metadata":{"execution":{"iopub.status.busy":"2022-07-20T22:39:47.246487Z","iopub.execute_input":"2022-07-20T22:39:47.246775Z","iopub.status.idle":"2022-07-20T22:39:47.740563Z","shell.execute_reply.started":"2022-07-20T22:39:47.246723Z","shell.execute_reply":"2022-07-20T22:39:47.739559Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Stemming\nStemmer=PorterStemmer()\ndef stemmer(lst):\n    new_lst=[]\n    for i in lst:\n        i=Stemmer.stem(i)\n        new_lst.append(i)\n    return new_lst\ntrain_mod_df['text_stem']=train_mod_df['text'].apply(stemmer)\ntest_mod_df['text_stem']=test_mod_df['text'].apply(stemmer)","metadata":{"execution":{"iopub.status.busy":"2022-07-20T22:39:51.272341Z","iopub.execute_input":"2022-07-20T22:39:51.272686Z","iopub.status.idle":"2022-07-20T22:39:53.662127Z","shell.execute_reply.started":"2022-07-20T22:39:51.272633Z","shell.execute_reply":"2022-07-20T22:39:53.661268Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<h1>Converting Text to Features(Vectorization) and Modelling</h1>","metadata":{}},{"cell_type":"code","source":"train_mod_df['text']=train_mod_df['text'].apply(lambda x: ''.join(i+' ' for i in x)).str.rstrip()\ntest_mod_df['text']=test_mod_df['text'].apply(lambda x: ''.join(i+' ' for i in x)).str.rstrip()\ntrain_mod_df['text_lem']=train_mod_df['text_lem'].apply(lambda x: ''.join(i+' ' for i in x)).str.rstrip()\ntrain_mod_df['text_stem']=train_mod_df['text_stem'].apply(lambda x: ''.join(i+' ' for i in x)).str.rstrip()\ntest_mod_df['text_lem']=test_mod_df['text_lem'].apply(lambda x: ''.join(i+' ' for i in x)).str.rstrip()\ntest_mod_df['text_stem']=test_mod_df['text_stem'].apply(lambda x: ''.join(i+' ' for i in x)).str.rstrip()\ntrain_mod_df.head()","metadata":{"execution":{"iopub.status.busy":"2022-07-20T22:41:23.413306Z","iopub.execute_input":"2022-07-20T22:41:23.413629Z","iopub.status.idle":"2022-07-20T22:41:23.528264Z","shell.execute_reply.started":"2022-07-20T22:41:23.413573Z","shell.execute_reply":"2022-07-20T22:41:23.526961Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"count_vec = CountVectorizer(ngram_range = (1, 1))\ntfidf_vec = TfidfVectorizer(ngram_range = (1, 1))\ncount_vec.fit(train_mod_df['text_stem'])\nX_stem_count = count_vec.transform(train_mod_df['text_stem'])\ntest_stem_count = count_vec.transform(test_mod_df['text_stem'])\ntfidf_vec.fit(train_mod_df['text_stem'])\nX_stem_tfidf = tfidf_vec.transform(train_mod_df['text_stem'])\ntest_stem_tfidf = tfidf_vec.transform(test_mod_df['text_stem'])\n'''\n#####\ncount_vec2 = CountVectorizer(ngram_range = (1, 2))\ntfidf_vec2 = TfidfVectorizer(ngram_range = (1, 2))\n####\ncount_vec3 = CountVectorizer(ngram_range = (1, 2))\ntfidf_vec3 = TfidfVectorizer(ngram_range = (1, 2))\nX_count = count_vec.fit_transform(X)\ntest_mod_df_count = count_vec.transform(test_mod_df['text'])\n###\nX_lem_count = count_vec2.fit_transfrom(X_lem)\ntest_lem_count = count_vec2.transform(test_lem)\n###\nX_stem_count = count_vec3.fit_transfrom(X_stem)\ntest_stem_count = count_vec3.transform(test_stem)\n# TF-IDF\nX_tfidf = tfidf_vec.fit_transform(X)\ntest_mod_df_tfidf = tfidf_vec.transform(test_mod_df['text'])\n##\nX_lem_tfidf = tfidf_vec2.fit_transfrom(X_lem)\ntest_lem_tfidf = tfidf_vec2.transform(test_lem)\n##\nX_stem_tfidf = tfidf_vec3.fit_transfrom(X_stem)\ntest_stem_tfidf = tfidf_vec3.transform(test_stem)\n'''","metadata":{"execution":{"iopub.status.busy":"2022-07-21T00:02:04.029200Z","iopub.execute_input":"2022-07-21T00:02:04.029495Z","iopub.status.idle":"2022-07-21T00:02:04.588364Z","shell.execute_reply.started":"2022-07-21T00:02:04.029446Z","shell.execute_reply":"2022-07-21T00:02:04.587727Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_tfidf_train = pd.DataFrame(np.log1p(X_stem_tfidf.todense()),  \n                             columns=tfidf_vec.get_feature_names())\nX_tfidf_test = pd.DataFrame(np.log1p(test_stem_tfidf.todense()),  \n                             columns=tfidf_vec.get_feature_names())","metadata":{"execution":{"iopub.status.busy":"2022-07-21T00:02:09.431312Z","iopub.execute_input":"2022-07-21T00:02:09.431623Z","iopub.status.idle":"2022-07-21T00:02:10.508217Z","shell.execute_reply.started":"2022-07-21T00:02:09.431566Z","shell.execute_reply":"2022-07-21T00:02:10.507351Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"svd = TruncatedSVD(n_components = 200)\nsvd_train = svd.fit_transform(X_tfidf_train)\nsvd_test = svd.transform(X_tfidf_test)","metadata":{"execution":{"iopub.status.busy":"2022-07-21T00:02:19.691913Z","iopub.execute_input":"2022-07-21T00:02:19.692205Z","iopub.status.idle":"2022-07-21T00:02:32.468343Z","shell.execute_reply.started":"2022-07-21T00:02:19.692156Z","shell.execute_reply":"2022-07-21T00:02:32.467324Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y = train_mod_df['target']","metadata":{"execution":{"iopub.status.busy":"2022-07-20T23:34:25.524525Z","iopub.execute_input":"2022-07-20T23:34:25.524816Z","iopub.status.idle":"2022-07-20T23:34:25.529200Z","shell.execute_reply.started":"2022-07-20T23:34:25.524755Z","shell.execute_reply":"2022-07-20T23:34:25.528119Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# now let's calculate accuracy, f1_score, precision, recall and auc from cross validation.\n# also calculate the training time.\nimport time\ndef calc_cv_scores(model, X, y, cv = 5):\n    start = time.time()\n    scores = cross_validate(model, X,\n                            y,\n                            cv = cv,\n                            n_jobs = -1,\n                            scoring = ['accuracy',\n                                       'f1',\n                                       'precision',\n                                       'recall',\n                                       'roc_auc'])\n    end = time.time()\n    print(f'mean accuracy: {np.mean(scores[\"test_accuracy\"])}')\n    print(f'mean f1: {np.mean(scores[\"test_f1\"])}')\n    print(f'mean precision: {np.mean(scores[\"test_precision\"])}')\n    print(f'mean recall: {np.mean(scores[\"test_recall\"])}')\n    print(f'mean AUC: {np.mean(scores[\"test_roc_auc\"])}')\n    print(f'training time: {end - start}')","metadata":{"execution":{"iopub.status.busy":"2022-07-20T23:30:50.327715Z","iopub.execute_input":"2022-07-20T23:30:50.328049Z","iopub.status.idle":"2022-07-20T23:30:50.335763Z","shell.execute_reply.started":"2022-07-20T23:30:50.327998Z","shell.execute_reply":"2022-07-20T23:30:50.334939Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"calc_cv_scores(LogisticRegression(), svd_train, y, cv = 5)","metadata":{"execution":{"iopub.status.busy":"2022-07-21T00:02:58.923548Z","iopub.execute_input":"2022-07-21T00:02:58.923869Z","iopub.status.idle":"2022-07-21T00:03:01.553368Z","shell.execute_reply.started":"2022-07-21T00:02:58.923794Z","shell.execute_reply":"2022-07-21T00:03:01.552603Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"class_weights = compute_class_weight(class_weight = 'balanced', classes = np.unique(y), y = y)\nclass_weights","metadata":{"execution":{"iopub.status.busy":"2022-07-20T23:48:45.739716Z","iopub.execute_input":"2022-07-20T23:48:45.740074Z","iopub.status.idle":"2022-07-20T23:48:45.749258Z","shell.execute_reply.started":"2022-07-20T23:48:45.740021Z","shell.execute_reply":"2022-07-20T23:48:45.748317Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"calc_cv_scores(LogisticRegression(class_weight = {0:class_weights[0], 1:class_weights[1]}), svd_train, y, cv = 5)","metadata":{"execution":{"iopub.status.busy":"2022-07-21T00:03:09.567190Z","iopub.execute_input":"2022-07-21T00:03:09.567501Z","iopub.status.idle":"2022-07-21T00:03:10.036732Z","shell.execute_reply.started":"2022-07-21T00:03:09.567447Z","shell.execute_reply":"2022-07-21T00:03:10.035932Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"calc_cv_scores(RandomForestClassifier(), svd_train, y, cv = 5)","metadata":{"execution":{"iopub.status.busy":"2022-07-21T00:03:16.499165Z","iopub.execute_input":"2022-07-21T00:03:16.499479Z","iopub.status.idle":"2022-07-21T00:03:19.541448Z","shell.execute_reply.started":"2022-07-21T00:03:16.499426Z","shell.execute_reply":"2022-07-21T00:03:19.540646Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"'''\nmodel = [\n    {\n        'name': 'AdaBoost',\n        'estimator': AdaBoostClassifier(random_state = 42),\n        'hyperparameters':{\n            'n_estimators' : [40, 80, 150, 400, 700, 1000],\n            'learning_rate':[0.01, 0.1, 0.3, 0.5, 0.8]\n        }\n    },\n    {\n        'name':'Naive Bayes',\n        'estimator': MultinomialNB(),\n        'hyperparameters':{\n            'alpha': [0.1, 0.3, 0.5, 0.7, 0.9]\n        }\n    }\n]\nfor i in model:\n    print(i['name'])\n    bs=GridSearchCV(i['estimator'],\n                     param_grid=i['hyperparameters'],\n                     cv=5, n_jobs=-1,\n                     scoring='f1')\n    bs.fit(X_features, y)\n    print('best score: ', bs.best_score_)\n    print('best parameters ; ', bs.best_params_)\n    print('best model: ', bs.best_estimator_)\n'''","metadata":{"execution":{"iopub.status.busy":"2022-07-08T12:45:17.948646Z","iopub.execute_input":"2022-07-08T12:45:17.948949Z","iopub.status.idle":"2022-07-08T12:48:13.500142Z","shell.execute_reply.started":"2022-07-08T12:45:17.948902Z","shell.execute_reply":"2022-07-08T12:48:13.495963Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<h1>Prediction</h1>","metadata":{}},{"cell_type":"code","source":"final_model = LogisticRegression(class_weight = {0:class_weights[0], 1:class_weights[1]})\n#final_model = RandomForestClassifier()\nfinal_model.fit(svd_train, y)\ny_pred = final_model.predict(svd_test)\ny_pred[:15]","metadata":{"execution":{"iopub.status.busy":"2022-07-21T00:03:32.940311Z","iopub.execute_input":"2022-07-21T00:03:32.940603Z","iopub.status.idle":"2022-07-21T00:03:33.060394Z","shell.execute_reply.started":"2022-07-21T00:03:32.940552Z","shell.execute_reply":"2022-07-21T00:03:33.059538Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<h1>Submission</h1>","metadata":{}},{"cell_type":"code","source":"submission_df = {\"id\":test_df['id'],\n                 \"target\":y_pred}\nsubmission = pd.DataFrame(submission_df)\nsubmission.to_csv('submission_df.csv',index=False)","metadata":{"execution":{"iopub.status.busy":"2022-07-21T00:03:38.055485Z","iopub.execute_input":"2022-07-21T00:03:38.055781Z","iopub.status.idle":"2022-07-21T00:03:38.077853Z","shell.execute_reply.started":"2022-07-21T00:03:38.055723Z","shell.execute_reply":"2022-07-21T00:03:38.076901Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}