{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Let's start by readidng the data from the csv files","execution_count":null},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"train=pd.read_csv('/kaggle/input/quora-insincere-questions-classification/train.csv',index_col=False)\ntest=pd.read_csv('/kaggle/input/quora-insincere-questions-classification/test.csv',index_col=False)\nsample=pd.read_csv('/kaggle/input/quora-insincere-questions-classification/sample_submission.csv',index_col=False)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Let's see a few radom samples from the train dataframe","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"train.sample(5)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"lets check if we have any missing values in our dataframes","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"train.info()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test.info()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"y=train.target.values","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"y[:5]","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"let's import the packages we need to build our model","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"from keras.preprocessing.text import Tokenizer\nfrom keras.preprocessing.sequence import pad_sequences\nfrom keras.layers import GRU,Bidirectional,Embedding,Dense,Flatten,GlobalMaxPool1D,LSTM\nfrom keras.models import Sequential\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"num_words=3000\nmax_len=200\ntokenizer=Tokenizer(num_words,oov_token='<oov>')\ntokenizer.fit_on_texts(train.question_text)\ntrain_sequences=tokenizer.texts_to_sequences(train.question_text)\ntest_sequences=tokenizer.texts_to_sequences(test.question_text)\n\n# let's pad the sequences to make them of equal length\n\ntrain_padded=pad_sequences(train_sequences,maxlen=max_len)\ntest_padded=pad_sequences(test_sequences,maxlen=max_len)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model=Sequential([Embedding(num_words,128,input_length=max_len),\n                 Bidirectional(LSTM(128,return_sequences=True)),\n                               GlobalMaxPool1D(),\n                              Dense(128,activation='relu'),\n                            \n                               \n                              Dense(1,activation='sigmoid')])\nmodel.compile(optimizer='adam',loss='binary_crossentropy',metrics='accuracy')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"batch_size=400\nepochs=3\nmodel.fit(train_padded,y,epochs=epochs,batch_size=batch_size,steps_per_epoch=len(train)//batch_size,validation_split=.1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"predicted=model.predict(test_padded)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test['prediction']=predicted","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test.sample(5)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test.drop(['question_text'],axis=1,inplace=True)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test.sample(5)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test['prediction']=test['prediction'].apply(lambda x: 0 if x<.5 else 1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test.prediction.value_counts()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test.to_csv('submission.csv',index=False)","execution_count":null,"outputs":[]}],"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":4,"nbformat_minor":4}