{"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":"code","source":"import keras #the keras high-level API\nimport pandas as pd #for manipulating dataset\nimport seaborn as sns #plotting data\nimport matplotlib.pyplot as plt #plotting data\nimport sklearn.metrics as metrics #for computing metrics after the training\nfrom sklearn.model_selection import train_test_split #function to split our data\nfrom keras.models import Sequential #neural network model\nfrom keras.layers import Dense #neural network layers\n# from keras.optimizers import RMSprop #optimizer for linear regression if you use old version\nfrom tensorflow.keras.optimizers import RMSprop\nfrom keras.callbacks import ModelCheckpoint, EarlyStopping #callbacks during training\n\nimport pandas as pd\nimport numpy as np\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.model_selection import train_test_split\nfrom tensorflow.keras.models import Sequential\nfrom tensorflow.keras.layers import Dense\nfrom tensorflow.keras.optimizers import Adam\n\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))","metadata":{"execution":{"iopub.status.busy":"2023-05-01T19:56:38.582542Z","iopub.execute_input":"2023-05-01T19:56:38.583312Z","iopub.status.idle":"2023-05-01T19:56:49.47086Z","shell.execute_reply.started":"2023-05-01T19:56:38.583274Z","shell.execute_reply":"2023-05-01T19:56:49.469786Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Python ≥3.5 is required\nimport sys\nassert sys.version_info >= (3, 5)\n\n# Scikit-Learn ≥0.20 is required\nimport sklearn\nassert sklearn.__version__ >= \"0.20\"\n\ntry:\n    # %tensorflow_version only exists in Colab.\n    %tensorflow_version 2.x\nexcept Exception:\n    pass\n\n# TensorFlow ≥2.0 is required\nimport tensorflow as tf\nassert tf.__version__ >= \"2.0\"\n\n# Common imports\nimport numpy as np\nimport os\n\n# to make this notebook's output stable across runs\nnp.random.seed(42)","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import numpy as np\nfrom sklearn.linear_model import Perceptron","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data = pd.read_csv(\"/kaggle/input/predict-student-performance-from-game-play/train.csv\")","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data.shape","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import sklearn\n\n\nclass GetDummies(sklearn.base.TransformerMixin):\n    \"\"\"Fast one-hot-encoder that makes use of pandas.get_dummies() safely\n    on train/test splits.\n    \"\"\"\n    def __init__(self, dtypes=None):\n        self.input_columns = None\n        self.final_columns = None\n        if dtypes is None:\n            dtypes = [object, 'category']\n        self.dtypes = dtypes\n\n    def fit(self, X, y=None, **kwargs):\n        self.input_columns = list(X.select_dtypes(self.dtypes).columns)\n        X = pd.get_dummies(X, columns=self.input_columns)\n        self.final_columns = X.columns\n        return self\n        \n    def transform(self, X, y=None, **kwargs):\n        X = pd.get_dummies(X, columns=self.input_columns)\n        X_columns = X.columns\n        # if columns in X had values not in the data set used during\n        # fit add them and set to 0\n        missing = set(self.final_columns) - set(X_columns)\n        for c in missing:\n            X[c] = 0\n        # remove any new columns that may have resulted from values in\n        # X that were not in the data set when fit\n        return X[self.final_columns]\n    \n    def get_feature_names(self):\n        return tuple(self.final_columns)","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"get_dummies = GetDummies()\ndf = get_dummies.fit_transform(df)\ndf.shape","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_train_full, X_test, y_train_full, y_test = train_test_split(\n    df,df, test_size=0.2, random_state=42)\nX_train, X_valid, y_train, y_valid = train_test_split(\n    X_train_full, y_train_full, random_state=42)","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Scale the data using StandardScaler\nscaler = StandardScaler()\nX_train = scaler.fit_transform(X_train)\nX_valid = scaler.transform(X_valid)","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Build the neural network model using Keras\nmodel = Sequential([\n    Dense(128, activation='relu', input_shape=(X_train.shape[1],)),\n    Dense(64, activation='relu'),\n    Dense(32, activation='relu'),\n    Dense(1)\n])","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Compile the model\noptimizer = Adam(learning_rate=0.001)\nmodel.compile(loss='mse', optimizer=optimizer, metrics=['mae'])\n","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Train the model on the training data\n# history = model.fit(X_train, y_train, validation_data=(X_valid, y_valid), epochs=50, batch_size=32)\nmodel.fit(X_train, y_train, epochs=2,\n          validation_data=(X_valid, y_valid))","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.save('model.h5', save_format = 'h5')","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\npred = model.predict(X_test)\nclasses = pred.argmax(axis=-1)\n\nsub = pd.read_csv('/kaggle/input/predict-student-performance-from-game-play/sample_submission.csv')\nsub.Label = classes\nsub.head()","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sub.to_csv('submission_1.csv', index = False)","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}