{"cells":[{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"import tensorflow as tf\nimport numpy as np\nimport random\nimport os\nimport pandas as pd\nfrom sklearn.model_selection import train_test_split\nfrom keras.utils.np_utils import to_categorical\nfrom keras.models import Sequential\nfrom keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPool2D, BatchNormalization\nfrom keras.preprocessing.image import ImageDataGenerator\nfrom keras.callbacks import LearningRateScheduler\nfrom keras import models\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nfrom tensorflow.keras import models, layers\nfrom tensorflow.keras.models import Sequential\nfrom tensorflow.keras.layers import Dense, Flatten\nfrom tensorflow.keras.layers import Conv2D, MaxPooling2D, BatchNormalization\nfrom tensorflow.keras.layers import Dropout, Flatten, Input, Dense","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train_dir='/kaggle/input/siim-isic-melanoma-classification/jpeg/train/'\ntest_dir='/kaggle/input/siim-isic-melanoma-classification/jpeg/test/'\ntrain=pd.read_csv('/kaggle/input/siim-isic-melanoma-classification/train.csv')\ntest=pd.read_csv('/kaggle/input/siim-isic-melanoma-classification/test.csv')\nsubmission=pd.read_csv('/kaggle/input/siim-isic-melanoma-classification/sample_submission.csv')\ntrain.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"ttrain = train.copy()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train1 = train[train['target']==1]\ntrain0 = train[train['target']==0]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train = pd.concat([train0.iloc[0:2836,:],train1,train1,train1,train1,train1])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"labels=[]\ndata=[]\nfor i in range(train.shape[0]):\n    data.append(train_dir + train['image_name'].iloc[i]+'.jpg')\n    labels.append(train['target'].iloc[i])\ndf=pd.DataFrame(data)\ndf.columns=['images']\ndf['target']=labels\n\ntest_data=[]\nfor i in range(test.shape[0]):\n    test_data.append(test_dir + test['image_name'].iloc[i]+'.jpg')\ndf_test=pd.DataFrame(test_data)\ndf_test.columns=['images']\n\nX_train, X_val, y_train, y_val = train_test_split(df['images'],df['target'], test_size=0.2, random_state=1234)\n\ntrain=pd.DataFrame(X_train)\ntrain.columns=['images']\ntrain['target']=y_train\n\nvalidation=pd.DataFrame(X_val)\nvalidation.columns=['images']\nvalidation['target']=y_val\n\ntrain_datagen = ImageDataGenerator(rescale=1./255,rotation_range=20,\n    width_shift_range=0.2,\n    height_shift_range=0.2,horizontal_flip=True)\nval_datagen=ImageDataGenerator(rescale=1./255)\ntrain_generator = train_datagen.flow_from_dataframe(\n    train,\n    x_col='images',\n    y_col='target',\n    target_size=(224, 224),\n    batch_size=8,\n    shuffle=True,\n    class_mode='raw')\n\nvalidation_generator = val_datagen.flow_from_dataframe(\n    validation,\n    x_col='images',\n    y_col='target',\n    target_size=(224, 224),\n    shuffle=False,\n    batch_size=8,\n    class_mode='raw')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df_test.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model = models.Sequential()\neff = tf.keras.applications.EfficientNetB5(\n    include_top=False,\n    weights=\"imagenet\",\n    input_shape=(224,224,3) )\nmodel.add(eff)\nmodel.add(layers.Flatten())\nmodel.add(layers.Dense(units=1000, activation='relu'))\nmodel.add(layers.Dense(units=1000, activation='relu'))\nmodel.add(layers.Dense(units=500, activation='relu'))\nmodel.add(layers.Dense(units=1, activation='sigmoid'))\nmodel.summary()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model.compile(optimizer='adam',\n              loss='binary_crossentropy',\n              metrics=['accuracy'])\nfit = model.fit_generator(train_generator, steps_per_epoch=10, epochs=40,\n                         validation_data=validation_generator, validation_steps=10)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_datagen = ImageDataGenerator(rescale=1./255)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"start = 0\nend=500","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"pred2 = np.array([])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# 1\ntest_generator = test_datagen.flow_from_dataframe(\n    df_test[start:end],\n    x_col='images',\n    y_col='target',\n    target_size=(224, 224),\n    shuffle=False,\n    batch_size=8,\n    class_mode=None)\npred1= np.ravel(model.predict_generator(test_generator))\npred2 = np.append(pred2,pred1)\nstart= end\nend = start+500","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# 2\ntest_generator = test_datagen.flow_from_dataframe(\n    df_test[start:end],\n    x_col='images',\n    y_col='target',\n    target_size=(224, 224),\n    shuffle=False,\n    batch_size=8,\n    class_mode=None)\npred1= np.ravel(model.predict_generator(test_generator))\npred2 = np.append(pred2,pred1)\nstart= end\nend = start+500\n\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# 3\ntest_generator = test_datagen.flow_from_dataframe(\n    df_test[start:end],\n    x_col='images',\n    y_col='target',\n    target_size=(224, 224),\n    shuffle=False,\n    batch_size=8,\n    class_mode=None)\npred1= np.ravel(model.predict_generator(test_generator))\npred2 = np.append(pred2,pred1)\nstart= end\nend = start+500","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# 4\ntest_generator = test_datagen.flow_from_dataframe(\n    df_test[start:end],\n    x_col='images',\n    y_col='target',\n    target_size=(224, 224),\n    shuffle=False,\n    batch_size=8,\n    class_mode=None)\npred1= np.ravel(model.predict_generator(test_generator))\npred2 = np.append(pred2,pred1)\nstart= end\nend = start+500","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# 5\ntest_generator = test_datagen.flow_from_dataframe(\n    df_test[start:end],\n    x_col='images',\n    y_col='target',\n    target_size=(224, 224),\n    shuffle=False,\n    batch_size=8,\n    class_mode=None)\npred1= np.ravel(model.predict_generator(test_generator))\npred2 = np.append(pred2,pred1)\nstart= end\nend = start+500","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# 6\ntest_generator = test_datagen.flow_from_dataframe(\n    df_test[start:end],\n    x_col='images',\n    y_col='target',\n    target_size=(224, 224),\n    shuffle=False,\n    batch_size=8,\n    class_mode=None)\npred1= np.ravel(model.predict_generator(test_generator))\npred2 = np.append(pred2,pred1)\nstart= end\nend = start+500","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# 7\ntest_generator = test_datagen.flow_from_dataframe(\n    df_test[start:end],\n    x_col='images',\n    y_col='target',\n    target_size=(224, 224),\n    shuffle=False,\n    batch_size=8,\n    class_mode=None)\npred1= np.ravel(model.predict_generator(test_generator))\npred2 = np.append(pred2,pred1)\nstart= end\nend = start+500","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# 8\ntest_generator = test_datagen.flow_from_dataframe(\n    df_test[start:end],\n    x_col='images',\n    y_col='target',\n    target_size=(224, 224),\n    shuffle=False,\n    batch_size=8,\n    class_mode=None)\npred1= np.ravel(model.predict_generator(test_generator))\npred2 = np.append(pred2,pred1)\nstart= end\nend = start+500","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# 9\ntest_generator = test_datagen.flow_from_dataframe(\n    df_test[start:end],\n    x_col='images',\n    y_col='target',\n    target_size=(224, 224),\n    shuffle=False,\n    batch_size=8,\n    class_mode=None)\npred1= np.ravel(model.predict_generator(test_generator))\npred2 = np.append(pred2,pred1)\nstart= end\nend = start+500","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# 10\ntest_generator = test_datagen.flow_from_dataframe(\n    df_test[start:end],\n    x_col='images',\n    y_col='target',\n    target_size=(224, 224),\n    shuffle=False,\n    batch_size=8,\n    class_mode=None)\npred1= np.ravel(model.predict_generator(test_generator))\npred2 = np.append(pred2,pred1)\nstart= end\nend = start+500","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# 11\ntest_generator = test_datagen.flow_from_dataframe(\n    df_test[start:end],\n    x_col='images',\n    y_col='target',\n    target_size=(224, 224),\n    shuffle=False,\n    batch_size=8,\n    class_mode=None)\npred1= np.ravel(model.predict_generator(test_generator))\npred2 = np.append(pred2,pred1)\nstart= end\nend = start+500","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# 12\ntest_generator = test_datagen.flow_from_dataframe(\n    df_test[start:end],\n    x_col='images',\n    y_col='target',\n    target_size=(224, 224),\n    shuffle=False,\n    batch_size=8,\n    class_mode=None)\npred1= np.ravel(model.predict_generator(test_generator))\npred2 = np.append(pred2,pred1)\nstart= end\nend = start+500","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# 13\ntest_generator = test_datagen.flow_from_dataframe(\n    df_test[start:end],\n    x_col='images',\n    y_col='target',\n    target_size=(224, 224),\n    shuffle=False,\n    batch_size=8,\n    class_mode=None)\npred1= np.ravel(model.predict_generator(test_generator))\npred2 = np.append(pred2,pred1)\nstart= end\nend = start+500","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# 14\ntest_generator = test_datagen.flow_from_dataframe(\n    df_test[start:end],\n    x_col='images',\n    y_col='target',\n    target_size=(224, 224),\n    shuffle=False,\n    batch_size=8,\n    class_mode=None)\npred1= np.ravel(model.predict_generator(test_generator))\npred2 = np.append(pred2,pred1)\nstart= end\nend = start+500","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# 15\ntest_generator = test_datagen.flow_from_dataframe(\n    df_test[start:end],\n    x_col='images',\n    y_col='target',\n    target_size=(224, 224),\n    shuffle=False,\n    batch_size=8,\n    class_mode=None)\npred1= np.ravel(model.predict_generator(test_generator))\npred2 = np.append(pred2,pred1)\nstart= end\nend = start+500","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# 16\ntest_generator = test_datagen.flow_from_dataframe(\n    df_test[start:end],\n    x_col='images',\n    y_col='target',\n    target_size=(224, 224),\n    shuffle=False,\n    batch_size=8,\n    class_mode=None)\npred1= np.ravel(model.predict_generator(test_generator))\npred2 = np.append(pred2,pred1)\nstart= end\nend = start+500","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# 17\ntest_generator = test_datagen.flow_from_dataframe(\n    df_test[start:end],\n    x_col='images',\n    y_col='target',\n    target_size=(224, 224),\n    shuffle=False,\n    batch_size=8,\n    class_mode=None)\npred1= np.ravel(model.predict_generator(test_generator))\npred2 = np.append(pred2,pred1)\nstart= end\nend = start+500","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# 18\ntest_generator = test_datagen.flow_from_dataframe(\n    df_test[start:end],\n    x_col='images',\n    y_col='target',\n    target_size=(224, 224),\n    shuffle=False,\n    batch_size=8,\n    class_mode=None)\npred1= np.ravel(model.predict_generator(test_generator))\npred2 = np.append(pred2,pred1)\nstart= end\nend = start+500","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# 19\ntest_generator = test_datagen.flow_from_dataframe(\n    df_test[start:end],\n    x_col='images',\n    y_col='target',\n    target_size=(224, 224),\n    shuffle=False,\n    batch_size=8,\n    class_mode=None)\npred1= np.ravel(model.predict_generator(test_generator))\npred2 = np.append(pred2,pred1)\nstart= end\nend = start+500","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# 20\ntest_generator = test_datagen.flow_from_dataframe(\n    df_test[start:end],\n    x_col='images',\n    y_col='target',\n    target_size=(224, 224),\n    shuffle=False,\n    batch_size=8,\n    class_mode=None)\npred1= np.ravel(model.predict_generator(test_generator))\npred2 = np.append(pred2,pred1)\nstart= end\nend = start+500","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df_test.shape","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# 21\ntest_generator = test_datagen.flow_from_dataframe(\n    df_test[start:end],\n    x_col='images',\n    y_col='target',\n    target_size=(224, 224),\n    shuffle=False,\n    batch_size=8,\n    class_mode=None)\npred1= np.ravel(model.predict_generator(test_generator))\npred2 = np.append(pred2,pred1)\nstart= end\nend = start+500","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# 22\ntest_generator = test_datagen.flow_from_dataframe(\n    df_test[start:],\n    x_col='images',\n    y_col='target',\n    target_size=(224, 224),\n    shuffle=False,\n    batch_size=8,\n    class_mode=None)\npred1= np.ravel(model.predict_generator(test_generator))\npred2 = np.append(pred2,pred1)\nstart= end\nend = start+500","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df_test.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"submission['target']= pred2","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"submission.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}