{"cells":[{"metadata":{"_uuid":"122dc721082abba821ad9272cf5a0ae371f59ba1"},"cell_type":"markdown","source":"**Notebook Objective:**\n\nA simple approach using sciki-learn to solve the problem. Not the winner position on the Leaderboard, but certanly faster than most other Kernels on this competition, and not so far behind (LB: 0.61 / Runtime: 739s)."},{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nfrom sklearn.pipeline import Pipeline\nfrom sklearn.feature_extraction.text import CountVectorizer\nfrom sklearn.svm import LinearSVC\nfrom sklearn.feature_extraction.text import TfidfTransformer\nfrom sklearn.multiclass import OneVsRestClassifier\nfrom sklearn import preprocessing","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"34fa06a29af512e52a59d4cfc2de7f1e1e340757"},"cell_type":"code","source":"def save_csv(qid,label):\n    with open('submission.csv','a') as f:\n        f.write(qid+','+label)\n        f.write(\"\\n\")\n    f.close()\n    \nwith open('submission.csv','a') as f:\n    f.write('qid,prediction')\n    f.write(\"\\n\")\nf.close()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"7009a44f9272bf5635ea60ca0760e352e640152b"},"cell_type":"code","source":"# Train data\ndf = pd.read_csv('../input/train.csv')\ndf.isnull().any()\nX_train = df.question_text\ny_train = df.target.astype(str)\nlb = preprocessing.MultiLabelBinarizer()\ny_train = lb.fit_transform(y_train)\n\n# Test data\ndf_test = pd.read_csv('../input/test.csv')","execution_count":null,"outputs":[]},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true},"cell_type":"code","source":"classifier = Pipeline([\n    ('vectorizer', CountVectorizer(max_df=0.5, ngram_range=(1, 2))),\n    ('tfidf', TfidfTransformer()),\n    ('clf', OneVsRestClassifier(LinearSVC()))])\nclassifier.fit(X_train, y_train)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"scrolled":true,"_uuid":"6e1b4b8f1895a61a59cf7a29e620eec0cc0a1382"},"cell_type":"code","source":"for f, b in zip(df_test.qid, df_test.question_text):\n    X_test = np.array([b])\n    predicted = classifier.predict(X_test)    \n    count = 0\n    label = None\n    \n    for i in predicted[0]:\n        if i == 1:\n            label = count\n        count += 1\n\n    save_csv(str(f),str(label))","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.6","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}