# This Python 3 environment comes with many helpful analytics libraries installed
# It is defined by the kaggle/python docker image: https://github.com/kaggle/docker-python
# For example, here's several helpful packages to load in 

import tensorflow as tf
import pandas as pd
import numpy as np
import sklearn.metrics
from sklearn.svm import LinearSVC
from sklearn.feature_extraction.text import CountVectorizer
from random import randint

# Input data files are available in the "../input/" directory.
# For example, running this (by clicking run or pressing Shift+Enter) will list the files in the input directory

import os
print(os.listdir("../input"))
col_names = ['qid', 'question_text', 'target']
train_size = .8
test_size = .2
pd.set_option('display.max_columns', 15)
pd.set_option('display.width', 2000)
train_path = '../input/train.csv'
test_path = '../input/test.csv'
sub_path = 'submission.csv'

def split_df(df):
    msk = np.random.rand(len(df)) <= train_size
    train = df[msk]
    test = df[~msk]
    return train,test
def get_prediction(text, model):
    return randint(0,1)

def clean_text(text):
    return text

df_in = pd.read_csv(train_path)
submission_df = pd.read_csv(test_path)
train_df, test_df = split_df(df_in)

df1 = df_in[df_in.target == 1]
df0 = df_in[df_in.target == 0].sample(len(df1))
df = pd.concat([df0,df1])
df = df.sample(frac=1).reset_index(drop=True)

##############################################
vectorizer = CountVectorizer(stop_words="english", preprocessor=clean_text)
training_features = vectorizer.fit_transform(train_df["question_text"])
#test_features = vectorizer.transform(test_df["question_text"])
test_features = vectorizer.transform(submission_df["question_text"])
model = LinearSVC(max_iter = 5000, dual = False)
model.fit(training_features, train_df['target'])
y_pred = model.predict(test_features)
submission_df['prediction'] = y_pred
submission_df = submission_df[['qid','prediction']]

submission_df.to_csv(sub_path,index = False)
# Any results you write to the current directory are saved as output.