[85c1ab]: / DNAm_CNA_to_RNAseq.ipynb

Download this file

1 lines (1 with data), 32.9 kB

{"nbformat":4,"nbformat_minor":0,"metadata":{"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.6.8"},"colab":{"name":"DNAm_CNA_to_RNAseq.ipynb","provenance":[],"collapsed_sections":[],"toc_visible":true},"accelerator":"GPU"},"cells":[{"cell_type":"markdown","metadata":{"id":"F7TT2a600Bjc","colab_type":"text"},"source":["# Deep denoising auto-encoder and MLP based multi-output regression on TCGA multi-omics data\n","## DNA Methylation and CNA to RNA-Seq"]},{"cell_type":"markdown","metadata":{"id":"AuzLXzrHWHwF","colab_type":"text"},"source":["# Setting environment"]},{"cell_type":"markdown","metadata":{"id":"Q6mV2MJR0Bjm","colab_type":"text"},"source":["Seeding the random number generators"]},{"cell_type":"code","metadata":{"trusted":true,"id":"We-k_eij0Bjp","colab_type":"code","colab":{}},"source":["                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            # have reproducible behavior for certain hash-based operations.\n","import os\n","os.environ['PYTHONHASHSEED'] = '0'\n","# The below is necessary for starting Numpy generated random numbers\n","# in a well-defined initial state.\n","import numpy as np\n","np.random.seed(42)\n","# The below is necessary for starting core Python generated random numbers\n","# in a well-defined state.\n","import random as rn\n","rn.seed(12345)\n","\n","# The below tf.set_random_seed() will make random number generation\n","# in the TensorFlow backend have a well-defined initial state.\n","import tensorflow as tf\n","tf.set_random_seed(1234)\n","\n","# Force TensorFlow to use single thread.\n","session_conf = tf.ConfigProto(intra_op_parallelism_threads=1,\n","                              inter_op_parallelism_threads=1)\n","from keras import backend as K\n","sess = tf.Session(graph=tf.get_default_graph(), config=session_conf)\n","K.set_session(sess)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"HS4bSNm40Bj5","colab_type":"text"},"source":["Importing libraries"]},{"cell_type":"code","metadata":{"trusted":true,"id":"dStQVwd30Bj8","colab_type":"code","colab":{}},"source":["from keras.layers import Input, Dense, Dropout\n","from keras.models import Model\n","from keras import regularizers\n","from sklearn.preprocessing import MinMaxScaler\n","from sklearn.model_selection import train_test_split\n","from sklearn.metrics import mean_squared_error\n","import pandas as pd\n","import matplotlib\n","import matplotlib.pyplot as plt\n","import numpy as np\n","import tensorflow as tf\n","from sklearn.metrics import r2_score \n","from sklearn.metrics import classification_report\n","from sklearn.metrics import confusion_matrix\n","from imblearn.over_sampling import SMOTE"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"trusted":true,"id":"_iJym7v70BkF","colab_type":"code","colab":{}},"source":["def rSquared(true,predicted):\n","    cols = predicted.shape[1]\n","    rsq = np.zeros(shape=(cols), dtype = np.float32)\n","    for j in range(cols):\n","        rsq[j] = r2_score(true[:,j], predicted[:,j])\n","    return rsq"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"2kQvYtgqWOL2","colab_type":"text"},"source":["# Loading data"]},{"cell_type":"markdown","metadata":{"id":"tq5QN3Kq0BkP","colab_type":"text"},"source":["Importing data from pre-processed csv files (Change paths accordingly)"]},{"cell_type":"code","metadata":{"id":"cmJBB9flgeAU","colab_type":"code","colab":{}},"source":["from google.colab import drive\n","drive.mount('/content/drive')"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"id":"of_LBPo4gsAu","colab_type":"code","colab":{}},"source":["#ls \"/content/drive/My Drive\""],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"id":"2R8C7R7bhruf","colab_type":"code","colab":{}},"source":["preprocessed_DNAMeth = pd.read_csv('/content/drive/My Drive/TCGA Data/Preprocessed_Data/LIHC_preprocessed_DNAMeth.csv')\n","preprocessed_RNASeq = pd.read_csv('/content/drive/My Drive/TCGA Data/Preprocessed_Data/LIHC_preprocessed_RNASeq.csv')\n","preprocessed_CNA = pd.read_csv('/content/drive/My Drive/TCGA Data/Preprocessed_Data/LIHC_preprocessed_CNA.csv')\n","labels = pd.read_csv('/content/drive/My Drive/TCGA Data/Preprocessed_Data/LIHC_labels.csv')"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"trusted":true,"id":"Qz33rPHb0Bkg","colab_type":"code","colab":{}},"source":["x1 = preprocessed_DNAMeth\n","x2 = preprocessed_CNA    \n","y = preprocessed_RNASeq"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"Djlmve230Bkn","colab_type":"text"},"source":["Concatenating Methylation and CNV features"]},{"cell_type":"code","metadata":{"trusted":true,"id":"lXhl777S0Bkq","colab_type":"code","colab":{}},"source":["x1 = pd.DataFrame(x1)\n","x2 = pd.DataFrame(x2)\n","df = [x1, x2]\n","z = pd.concat(df,axis=1)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"tmC71-v40Bkw","colab_type":"text"},"source":["Splitting the data into training and testing datasets"]},{"cell_type":"code","metadata":{"trusted":true,"id":"pUNvrzVv0Bkx","colab_type":"code","colab":{}},"source":["x_train, x_test, y_train, y_test, labels_train, labels_test = train_test_split(z, y, labels, test_size=0.2)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"kP9vWgne0Bk4","colab_type":"text"},"source":["Scaling the data within [0-1] range"]},{"cell_type":"code","metadata":{"trusted":true,"id":"GHvZC4dW0Bk7","colab_type":"code","colab":{}},"source":["scalar = MinMaxScaler()\n","x_train = scalar.fit_transform(x_train)\n","x_test = scalar.transform(x_test)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"TjKrhg1p0BlB","colab_type":"text"},"source":["Adding gaussian noise"]},{"cell_type":"code","metadata":{"trusted":true,"id":"X_GPRDwb0BlD","colab_type":"code","colab":{}},"source":["noise_factor = 0.5\n","x_train_noisy = x_train + noise_factor * np.random.normal(0.0, 1.0, x_train.shape)\n","x_test_noisy = x_test + noise_factor * np.random.normal(0.0, 1.0, x_test.shape)\n","\n","x_train_noisy = np.clip(x_train_noisy, 0., 1.)\n","x_test_noisy = np.clip(x_test_noisy, 0., 1.)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"hMJDjLMm0BlQ","colab_type":"text"},"source":["# Dimension Reduction/Feature Extraction using DDAE"]},{"cell_type":"markdown","metadata":{"id":"GMDqA1_y0BlJ","colab_type":"text"},"source":["Setting the no. of input and output neurons"]},{"cell_type":"code","metadata":{"trusted":true,"id":"OZa0LGeq0BlK","colab_type":"code","colab":{}},"source":["num_in_neurons = z.shape[1]\n","num_out_neurons = y.shape[1]"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"trusted":true,"id":"Cf0X8WAg0BlS","colab_type":"code","colab":{}},"source":["# Auto-encoder to extract features from DNA Methylation and CNV data\n","\n","with tf.device('/gpu:0'):\n","    # this is the size of our encoded representations\n","    encoding_dim1 = 500\n","    encoding_dim2 = 200\n","    \n","    lambda_act = 0.0001\n","    lambda_weight = 0.001\n","    # this is our input placeholder\n","    input_data = Input(shape=(num_in_neurons,))\n","    # first encoded representation of the input\n","    encoded = Dense(encoding_dim1, activation='relu', activity_regularizer=regularizers.l1(lambda_act), kernel_regularizer=regularizers.l2(lambda_weight), name='encoder1')(input_data)\n","    # second encoded representation of the input\n","    encoded = Dense(encoding_dim2, activation='relu', activity_regularizer=regularizers.l1(lambda_act), kernel_regularizer=regularizers.l2(lambda_weight), name='encoder2')(encoded)\n","    # first lossy reconstruction of the input\n","    decoded = Dense(encoding_dim1, activation='relu', name='decoder1')(encoded)\n","    # the final lossy reconstruction of the input\n","    decoded = Dense(num_in_neurons, activation='sigmoid', name='decoder2')(decoded)\n","    \n","    # this model maps an input to its reconstruction\n","    autoencoder = Model(inputs=input_data, outputs=decoded)\n","    \n","    myencoder = Model(inputs=input_data, outputs=encoded)\n","    autoencoder.compile(optimizer='sgd', loss='mse')\n","    # training\n","    print('training the autoencoder')\n","    autoencoder.fit(x_train_noisy, x_train,\n","                    epochs=25,\n","                    batch_size=8,\n","                    shuffle=True,\n","                    validation_data=(x_test_noisy, x_test))\n","    autoencoder.trainable = False   #freeze autoencoder weights"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"j6jCTcvb0BlX","colab_type":"text"},"source":["# Regression using MLP"]},{"cell_type":"code","metadata":{"scrolled":false,"trusted":true,"id":"HK5d2ubz0BlY","colab_type":"code","colab":{}},"source":["# MLP Multi-output Regression code goes here...\n","\n","num_hidden = encoding_dim2\n","with tf.device('/gpu:0'):    \n","    x = autoencoder.get_layer('encoder2').output\n","    x = Dropout(0.2)(x)             # adding 20% dropout\n","    h = Dense(int(num_hidden * 3), activation='relu', name='hidden1')(x)\n","    h = Dropout(0.5)(h)             # adding 50% dropout\n","    h = Dense(int(num_hidden * 5), activation='relu', name='hidden2')(h)\n","    h = Dropout(0.5)(h)             # adding 50% dropout\n","    y = Dense(num_out_neurons, activation='linear', name='prediction')(h)\n","    mlpRegressor = Model(inputs=autoencoder.inputs, outputs=y)\n","\n","    # Compile model\n","    mlpRegressor.compile(loss='mse', optimizer='adam', metrics=['accuracy'])    # or loss='mae'\n","    \n","    # Fit the model\n","    print('training the MLP multi-output regressor')\n","    mlpRegressor.fit(x_train, y_train, epochs=50, batch_size=8)\n","    \n","    y_pred = mlpRegressor.predict(x_test)\n","    \n","    actual_mean = pd.DataFrame(y_test.mean(axis=0))\n","    pred_mean = pd.DataFrame(y_pred.mean(axis=0))"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"hHoR5G3B0Bld","colab_type":"text"},"source":["# Results"]},{"cell_type":"code","metadata":{"scrolled":true,"trusted":true,"id":"5cyG1HyB0Blf","colab_type":"code","colab":{}},"source":["print('MSE: (Actual Vs. Predicted)', mean_squared_error(y_test, y_pred))\n","print('r^2 value: (Mean of actual Vs. Mean of Predicted)', r2_score(actual_mean, pred_mean))"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"wlEDWBYz0Blj","colab_type":"text"},"source":["Plotting predicted Vs. Actual"]},{"cell_type":"code","metadata":{"trusted":true,"id":"jFNyH3TE0Blk","colab_type":"code","colab":{}},"source":["act=actual_mean.values.flatten()\n","pred=pred_mean.values.flatten()\n","\n","s1 = pd.Series(act)\n","s2 = pd.Series(pred)\n","\n","plt.figure(figsize=(20,10))\n","ax = plt.subplot(111)\n","plt.title('Average of actual and predicted gene expression values across all samples')\n","plt.xlabel('No. of features (genes)')\n","plt.ylabel('Average of gene expression values across samples')\n","ax.plot(s1, 'b--', label='Actual')\n","ax.plot(s2, 'r--', label='Predicted')\n","ax.legend()\n","plt.grid(True)\n","plt.show()"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"WGEmDVRk0Blp","colab_type":"text"},"source":["Plotting first 100 features"]},{"cell_type":"code","metadata":{"trusted":true,"id":"1WD-GAyl0Blr","colab_type":"code","colab":{}},"source":["act=actual_mean[0:100].values.flatten()\n","pred=pred_mean[0:100].values.flatten()\n","\n","s1 = pd.Series(act)\n","s2 = pd.Series(pred)\n","\n","plt.figure(figsize=(10,5))\n","ax = plt.subplot(111)\n","plt.title('DDAE-MLP')\n","plt.xlabel('No. of features (genes)')\n","plt.ylabel('Average of gene expression values across samples')\n","ax.plot(s1, 'b--', label='Actual')\n","ax.plot(s2, 'r--', label='Predicted')\n","ax.legend()\n","plt.grid(True)\n","plt.show()"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"3waJ5f9n0Blv","colab_type":"text"},"source":["Plotting correlation scatter plot for mean of actual Vs. mean of predicted gene expressions"]},{"cell_type":"code","metadata":{"trusted":true,"id":"uO3k2InL0Blx","colab_type":"code","colab":{}},"source":["plt.figure(figsize=(20,10))\n","plt.scatter(actual_mean, pred_mean)\n","plt.title('Correlation between mean of actual and mean predicted gene expression across all samples')\n","plt.xlabel('Average of true gene expressions across samples')\n","plt.ylabel('Average of predicted gene expressions across samples')\n","plt.grid(True)\n","plt.show()\n"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"mz8F8tuZ0Bl1","colab_type":"text"},"source":["# Classification of Tumor and Normal samples using MLP"]},{"cell_type":"markdown","metadata":{"id":"Kayc51Va0Bl2","colab_type":"text"},"source":["Importing libraries"]},{"cell_type":"code","metadata":{"trusted":true,"id":"6i-ullSj0Bl3","colab_type":"code","colab":{}},"source":["from sklearn.metrics import classification_report\n","from sklearn.metrics import confusion_matrix\n","from sklearn.metrics import recall_score"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"__PGqiLD0Bl8","colab_type":"text"},"source":["MLP-classifier"]},{"cell_type":"code","metadata":{"trusted":true,"id":"ed6Xte-h0Bl9","colab_type":"code","colab":{}},"source":["num_hidden = encoding_dim2\n","with tf.device('/gpu:0'):    \n","    x = autoencoder.get_layer('encoder2').output\n","    x = Dropout(0.2)(x)     # adding 20% dropout\n","    h = Dense(int(num_hidden * 3), activation='relu', name='hidden1')(x)\n","    h = Dropout(0.5)(h)     # adding 50% dropout\n","    h = Dense(int(num_hidden * 5), activation='relu', name='hidden2')(h)\n","    h = Dropout(0.5)(h)     # adding 50% dropout\n","    y = Dense(1, activation='sigmoid', name='predictions')(h)\n","\n","    classifier = Model(inputs=autoencoder.inputs, outputs=y)\n","    # Compile model\n","    classifier.compile(loss='binary_crossentropy', optimizer='adam',\n","                   metrics=['accuracy'])\n","    # Fit the model\n","    classifier.fit(x_train, labels_train, epochs=25, batch_size=8)\n","\n","    print('Now making predictions')\n","    predictions = classifier.predict(x_test)\n","    rounded_predictions = [round(x[0]) for x in predictions]"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"bgbNFdwI0BmB","colab_type":"text"},"source":["Evaluating the model"]},{"cell_type":"code","metadata":{"trusted":true,"id":"L3USITmc0BmC","colab_type":"code","colab":{}},"source":["_, train_acc = classifier.evaluate(x_train, labels_train, verbose=0)\n","_, test_acc = classifier.evaluate(x_test, labels_test, verbose=0)\n","print('\\nTraining accuracy: %.3f, Testing accuracy: %.3f' % (train_acc, test_acc))\n","print(\"Recall score = \",recall_score(labels_test, rounded_predictions))\n","cm = confusion_matrix(labels_test, rounded_predictions)\n","print(\"Confusion matrix:\")\n","print(cm)\n","report = classification_report(labels_test, rounded_predictions)\n","print(\"classification_report\")\n","print(report)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"icrX6klW0BmF","colab_type":"text"},"source":["# Comparing regression results with other standard methods"]},{"cell_type":"markdown","metadata":{"id":"xRygnqFe0BmH","colab_type":"text"},"source":["Evaluating the mean of actual y values"]},{"cell_type":"code","metadata":{"trusted":true,"id":"0Zks4RtD0BmJ","colab_type":"code","colab":{}},"source":["actual_mean = pd.DataFrame(y_test.mean(axis=0))"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"h2IxiBv60BmO","colab_type":"text"},"source":["# 1. Linear Regression"]},{"cell_type":"markdown","metadata":{"id":"I9OhPUaF0BmQ","colab_type":"text"},"source":["Importing libraries"]},{"cell_type":"code","metadata":{"trusted":true,"id":"kP-q1S-r0BmR","colab_type":"code","colab":{}},"source":["from sklearn.metrics import r2_score \n","from sklearn.metrics import mean_squared_error\n","from sklearn.linear_model import LinearRegression"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"1PCtFmEh0BmV","colab_type":"text"},"source":["Multi-output regression using Linear Regression (OLS) (sk-learn)"]},{"cell_type":"code","metadata":{"trusted":true,"id":"xj0tTIcM0BmV","colab_type":"code","colab":{}},"source":["with tf.device('/gpu:0'):\n","    linear_Regr = LinearRegression(normalize=True)\n","    linear_Regr.fit(x_train, y_train)\n","    y_pred = linear_Regr.predict(x_test)\n","    pred_mean = pd.DataFrame(y_pred.mean(axis=0))\n","    y_mse = mean_squared_error(y_test, y_pred)\n","    y_r2score = r2_score(actual_mean, pred_mean)"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"trusted":true,"id":"3apegKi00BmZ","colab_type":"code","colab":{}},"source":["print(\"Mean Squared Error (y_test Vs. y_pred): \", y_mse)\n","print(\"r2 Score (y_test_mean Vs. y_pred_mean): \", y_r2score)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"W5EAICAZ0Bmd","colab_type":"text"},"source":["Plotting first 100 features"]},{"cell_type":"code","metadata":{"trusted":true,"id":"rpI2SL5F0Bmd","colab_type":"code","colab":{}},"source":["act=actual_mean[0:100].values.flatten()\n","pred=pred_mean[0:100].values.flatten()\n","\n","s1 = pd.Series(act)\n","s2 = pd.Series(pred)\n","\n","plt.figure(figsize=(10,5))\n","ax = plt.subplot(111)\n","plt.title('Linear Regression')\n","plt.xlabel('No. of features (genes)')\n","plt.ylabel('Average of gene expression values across samples')\n","ax.plot(s1, 'b--', label='Actual')\n","ax.plot(s2, 'r--', label='Predicted')\n","ax.legend()\n","plt.grid(True)\n","plt.show()"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"J3ZAbV6T0Bmh","colab_type":"text"},"source":["# 2. Lasso"]},{"cell_type":"markdown","metadata":{"id":"YXK8Zqxl0Bmi","colab_type":"text"},"source":["Importing libraries"]},{"cell_type":"code","metadata":{"trusted":true,"id":"9D2dAWfb0Bmj","colab_type":"code","colab":{}},"source":["from sklearn.metrics import r2_score \n","from sklearn.metrics import mean_squared_error\n","from sklearn.linear_model import Lasso"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"SQXYxyp00Bmn","colab_type":"text"},"source":["Multi-output regression using Lasso (sk-learn)"]},{"cell_type":"code","metadata":{"trusted":true,"id":"Xyp0yST-0Bmo","colab_type":"code","colab":{}},"source":["y_mse=[]\n","y_r2score=[]\n","with tf.device('/gpu:0'):\n","    #for alp in [0.1, 0.2, 0.3, 0.4, 0.5]\n","    for alp in [0.01,0.1,0.5,1,5]:\n","        print('Working with alpha=',alp)\n","        Lasso_Regr = Lasso(alpha=alp, normalize=True, random_state=42)\n","        Lasso_Regr.fit(x_train, y_train)\n","        y_pred = Lasso_Regr.predict(x_test)\n","        pred_mean = pd.DataFrame(y_pred.mean(axis=0))\n","        y_mse.append(mean_squared_error(y_test, y_pred))\n","        y_r2score.append(r2_score(actual_mean, pred_mean))"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"trusted":true,"id":"fVU3HJIP0Bmr","colab_type":"code","colab":{}},"source":["print(\"Mean Squared Error (y_test Vs. y_pred): \", y_mse)\n","print(\"r2 Score (y_test_mean Vs. y_pred_mean): \", y_r2score)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"IXZ92BsA0Bmu","colab_type":"text"},"source":["Plotting first 100 features"]},{"cell_type":"code","metadata":{"trusted":true,"id":"Xt5NGL2f0Bmu","colab_type":"code","colab":{}},"source":["act=actual_mean[0:100].values.flatten()\n","pred=pred_mean[0:100].values.flatten()\n","\n","s1 = pd.Series(act)\n","s2 = pd.Series(pred)\n","\n","plt.figure(figsize=(10,5))\n","ax = plt.subplot(111)\n","plt.title('Lasso with alpha = 1.5')\n","plt.xlabel('No. of features (genes)')\n","plt.ylabel('Average of gene expression values across samples')\n","ax.plot(s1, 'b--', label='Actual')\n","ax.plot(s2, 'r--', label='Predicted')\n","ax.legend()\n","plt.grid(True)\n","plt.show()"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"MNuYCwNJ0Bmy","colab_type":"text"},"source":["# 3. Ridge"]},{"cell_type":"markdown","metadata":{"id":"2u3njJvr0Bmz","colab_type":"text"},"source":["Importing libraries"]},{"cell_type":"code","metadata":{"trusted":true,"id":"2zLplmf20Bmz","colab_type":"code","colab":{}},"source":["from sklearn.linear_model import Ridge"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"WRgznSR-0Bm3","colab_type":"text"},"source":["Multi-output regression using Ridge (sk-learn)"]},{"cell_type":"code","metadata":{"trusted":true,"id":"0nQzkzyK0Bm3","colab_type":"code","colab":{}},"source":["y_mse=[]\n","y_r2score=[]\n","with tf.device('/gpu:0'):\n","    for alp in [0.01,0.1,0.5,1,1.5]:\n","        print('Working with alpha = ',alp)\n","        Ridge_Regr = Ridge(alpha=alp, normalize=True)\n","        Ridge_Regr.fit(x_train, y_train)\n","        y_pred = Ridge_Regr.predict(x_test)\n","        pred_mean = pd.DataFrame(y_pred.mean(axis=0))\n","        y_mse.append(mean_squared_error(y_test, y_pred))\n","        y_r2score.append(r2_score(actual_mean, pred_mean))"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"trusted":true,"id":"dsO8jc480Bm7","colab_type":"code","colab":{}},"source":["print(\"Mean Squared Error (y_test Vs. y_pred): \", y_mse)\n","print(\"r2 Score (y_test_mean Vs. y_pred_mean): \", y_r2score)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"1EHmSjb50Bm-","colab_type":"text"},"source":["Plotting first 100 features"]},{"cell_type":"code","metadata":{"trusted":true,"id":"BpMX0T4-0BnA","colab_type":"code","colab":{}},"source":["act=actual_mean[0:100].values.flatten()\n","pred=pred_mean[0:100].values.flatten()\n","\n","s1 = pd.Series(act)\n","s2 = pd.Series(pred)\n","\n","plt.figure(figsize=(10,5))\n","ax = plt.subplot(111)\n","plt.title('Ridge Regression with alpha=1.5')\n","plt.xlabel('No. of features (genes)')\n","plt.ylabel('Average of gene expression values across samples')\n","ax.plot(s1, 'b--', label='Actual')\n","ax.plot(s2, 'r--', label='Predicted')\n","ax.legend()\n","plt.grid(True)\n","plt.show()"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"VhlDwdPD0BnF","colab_type":"text"},"source":["# 4. PCA - Random Forest (PCA-RF)"]},{"cell_type":"markdown","metadata":{"id":"8ZLv1nDn0BnF","colab_type":"text"},"source":["Importing libraries"]},{"cell_type":"code","metadata":{"trusted":true,"id":"KBIpnfjS0BnH","colab_type":"code","colab":{}},"source":["from sklearn.ensemble import RandomForestRegressor\n","from sklearn.decomposition import PCA"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"trusted":true,"id":"6nQMUdNo0BnM","colab_type":"code","colab":{}},"source":["n=200\n","pca = PCA(n_components=n)\n","pca.fit(x_train)\n","x_train = pca.transform(x_train)\n","x_test = pca.transform(x_test)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"0idYs_oA0BnO","colab_type":"text"},"source":["Multi-output regression using Random Forest (sk-learn)"]},{"cell_type":"code","metadata":{"trusted":true,"id":"Jjwgxai90BnP","colab_type":"code","colab":{}},"source":["y_mse=[]\n","y_r2score=[]\n","with tf.device('/gpu:0'):\n","    for est in [10,50,100,150,200]:\n","        print('estimators = ',est)\n","        rf_Regr = RandomForestRegressor(n_estimators=est, n_jobs=-1)\n","        rf_Regr.fit(x_train, y_train)\n","        y_pred = rf_Regr.predict(x_test)\n","        pred_mean = pd.DataFrame(y_pred.mean(axis=0))\n","        y_mse.append(mean_squared_error(y_test, y_pred))\n","        y_r2score.append(r2_score(actual_mean, pred_mean))"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"trusted":true,"id":"Sec2ULNv0BnR","colab_type":"code","colab":{}},"source":["print(\"Mean Squared Error: \", y_mse)\n","print(\"r2 Score (y_test_mean Vs. y_pred_mean): \", y_r2score)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"yiEV7OwE0BnV","colab_type":"text"},"source":["Plotting first 100 features"]},{"cell_type":"code","metadata":{"trusted":true,"id":"25x1RArE0Bnk","colab_type":"code","colab":{}},"source":["act=actual_mean[0:100].values.flatten()\n","pred=pred_mean[0:100].values.flatten()\n","\n","s1 = pd.Series(act)\n","s2 = pd.Series(pred)\n","\n","plt.figure(figsize=(10,5))\n","ax = plt.subplot(111)\n","plt.title('PCA-RF with 250 features and 100 estimators')\n","plt.xlabel('No. of features (genes)')\n","plt.ylabel('Average of gene expression values across samples')\n","ax.plot(s1, 'b--', label='Actual')\n","ax.plot(s2, 'r--', label='Predicted')\n","ax.legend()\n","plt.grid(True)\n","plt.show()"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"UPwG6tW30Bnn","colab_type":"text"},"source":["# 5. k-Nearest Neighbor (kNN)"]},{"cell_type":"markdown","metadata":{"id":"IloQzOFC0Bno","colab_type":"text"},"source":["Importing libraries"]},{"cell_type":"code","metadata":{"trusted":true,"id":"M9u1lMOM0Bnp","colab_type":"code","colab":{}},"source":["from sklearn.neighbors import KNeighborsRegressor"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"xHB9yJyU0Bns","colab_type":"text"},"source":["Multi-output regression using kNN (sk-learn)"]},{"cell_type":"code","metadata":{"trusted":true,"id":"YdNZ8A5h0Bnu","colab_type":"code","colab":{}},"source":["y_mse=[]\n","y_r2score=[]\n","with tf.device('/gpu:0'):\n","    for k in [5,10,15,20,25]:\n","        print('k=',k)\n","        knn_Regr = KNeighborsRegressor(n_neighbors=k, n_jobs=-1)\n","        knn_Regr.fit(x_train, y_train)\n","        y_pred = knn_Regr.predict(x_test)\n","        pred_mean = pd.DataFrame(y_pred.mean(axis=0))\n","        y_mse.append(mean_squared_error(y_test, y_pred))\n","        y_r2score.append(r2_score(actual_mean, pred_mean))"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"trusted":true,"id":"Rxk455040Bnx","colab_type":"code","colab":{}},"source":["print(\"Mean Squared Error: \", y_mse)\n","print(\"r2 Score (y_test_mean Vs. y_pred_mean): \", y_r2score)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"LwPD9EDW0Bnz","colab_type":"text"},"source":["Plotting first 100 features"]},{"cell_type":"code","metadata":{"trusted":true,"id":"yQMRI5KJ0Bn0","colab_type":"code","colab":{}},"source":["act=actual_mean[0:100].values.flatten()\n","pred=pred_mean[0:100].values.flatten()\n","\n","s1 = pd.Series(act)\n","s2 = pd.Series(pred)\n","\n","plt.figure(figsize=(10,5))\n","ax = plt.subplot(111)\n","plt.title('k-NN with k=10')\n","plt.xlabel('No. of features (genes)')\n","plt.ylabel('Average of gene expression values across samples')\n","ax.plot(s1, 'b--', label='Actual')\n","ax.plot(s2, 'r--', label='Predicted')\n","ax.legend()\n","plt.grid(True)\n","plt.show()"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"Pwd-AWax0Bn4","colab_type":"text"},"source":["# 6. PCA - Support Vector Regression (PCA-SVR)"]},{"cell_type":"code","metadata":{"trusted":true,"id":"IMBKQ9Oj0Bn5","colab_type":"code","colab":{}},"source":["from sklearn.svm import SVR\n","from sklearn.multioutput import MultiOutputRegressor\n","from sklearn.decomposition import PCA"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"trusted":true,"id":"tDpMdvy30Bn_","colab_type":"code","colab":{}},"source":["n=200\n","pca = PCA(n_components=n)\n","pca.fit(x_train)\n","x_train = pca.transform(x_train)\n","x_test = pca.transform(x_test)"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"trusted":true,"id":"Yvz69XKX0BoC","colab_type":"code","colab":{}},"source":["with tf.device('/gpu:0'):\n","    y_mse=[]\n","    y_r2score = []\n","    for k in ['linear','poly','rbf','sigmoid']:\n","        print('kernel = ',k)\n","        mo_svr = MultiOutputRegressor(SVR(kernel=k,gamma='auto'))\n","        mo_svr.fit(x_train, y_train)\n","        y_pred = mo_svr.predict(x_test)\n","        pred_mean = pd.DataFrame(y_pred.mean(axis=0))\n","        y_mse.append(mean_squared_error(y_test, y_pred))\n","        y_r2score.append(r2_score(actual_mean, pred_mean))"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"trusted":true,"id":"c-ICBluk0BoE","colab_type":"code","colab":{}},"source":["print(\"Mean Squared Error: \", y_mse)\n","print(\"r2 Score (y_test_mean Vs. y_pred_mean): \", y_r2score)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"BXGpN6Vh0BoG","colab_type":"text"},"source":["Plotting first 100 features"]},{"cell_type":"code","metadata":{"trusted":true,"id":"MEUvOBqb0BoH","colab_type":"code","colab":{}},"source":["act=actual_mean[0:100].values.flatten()\n","pred=pred_mean[0:100].values.flatten()\n","\n","s1 = pd.Series(act)\n","s2 = pd.Series(pred)\n","\n","plt.figure(figsize=(10,5))\n","ax = plt.subplot(111)\n","plt.title('PCA-RF with 250 features and linear kernel')\n","plt.xlabel('No. of features (genes)')\n","plt.ylabel('Average of gene expression values across samples')\n","ax.plot(s1, 'b--', label='Actual')\n","ax.plot(s2, 'r--', label='Predicted')\n","ax.legend()\n","plt.grid(True)\n","plt.show()"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"d_lQ7fJA0BoK","colab_type":"text"},"source":["# Comparison regression results from AE-MLP with PCA-MLP"]},{"cell_type":"markdown","metadata":{"id":"Uroy8EG20BoL","colab_type":"text"},"source":["Importing libraries"]},{"cell_type":"code","metadata":{"trusted":false,"id":"CuvDm03W0BoM","colab_type":"code","colab":{}},"source":["from sklearn.decomposition import PCA"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"DgMI_5sl0BoO","colab_type":"text"},"source":["PCA-MLP"]},{"cell_type":"code","metadata":{"trusted":false,"id":"6KM2qEmB0BoQ","colab_type":"code","colab":{}},"source":["n=100\n","with tf.device('/gpu:0'):\n","    #pca\n","    pca = PCA(n_components=n)\n","    pca.fit(x_train)\n","    x_train = pca.transform(x_train)\n","    x_test = pca.transform(x_test)\n","    \n","    # MLP Multi-output Regression code goes here...\n","    num = n\n","    input_data = Input(shape=(num,))\n","    x = Dropout(0.2)(input_data)             # adding 20% dropout\n","    h = Dense(int(num * 3), activation='relu', name='hidden1')(x)\n","    h = Dropout(0.5)(h)                        # adding 50% dropout\n","    h = Dense(int(num * 5), activation='relu', name='hidden2')(h)\n","    h = Dropout(0.5)(h)                        # adding 50% dropout\n","    y = Dense(num_out_neurons, activation='linear', name='prediction')(h)\n","    mlpRegressor = Model(inputs=input_data, outputs=y)\n","    \n","    # Compile model\n","    mlpRegressor.compile(loss='mse', optimizer='adam', metrics=['accuracy'])    # or loss='mae'\n","    # Fit the model\n","    print('training the MLP multi-output regressor')\n","    mlpRegressor.fit(x_train, y_train, epochs=50, batch_size=8)\n","    y_pred = mlpRegressor.predict(x_test)\n","    actual_mean = pd.DataFrame(y_test.mean(axis=0))\n","    pred_mean = pd.DataFrame(y_pred.mean(axis=0))"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"aUkxWs2U0BoR","colab_type":"text"},"source":["Printing results"]},{"cell_type":"code","metadata":{"trusted":true,"id":"0fbbI4US0BoS","colab_type":"code","colab":{}},"source":["print('MSE: (Actual Vs. Predicted)', mean_squared_error(y_test, y_pred))\n","print('r^2 value: (Mean of actual Vs. Mean of Predicted)', r2_score(actual_mean, pred_mean))"],"execution_count":0,"outputs":[]}]}