{"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":"# código completo em Python para um modelo de machine learning usando visão computacional \n## e redes neurais convolucionais capaz de identificar o sexo de um paciente através da análise de \n### radiografias de tórax, à partir de um dataset genérico \"sample_submission_gender.csv\" e de um banco de imagens genérico \"train_gender.csv\"\n\n# Instalando as bibliotecas\npip install tensorflow pandas opencv-python\nimport pandas as pd\nimport numpy as np\nimport cv2\nimport os\nfrom tensorflow.keras.models import Sequential\nfrom tensorflow.keras.layers import Conv2D, MaxPooling2D, Dense, Flatten, Dropout\nfrom tensorflow.keras.optimizers import Adam\nfrom tensorflow.keras.preprocessing.image import ImageDataGenerator\nfrom sklearn.model_selection import train_test_split\n\n# Carregando o dataset\ndata = pd.read_csv('sample_submission_gender.csv')\n\n# Carregando o banco de imagens\nimages = []\nfor img_path in data['image_path']:\n    img = cv2.imread(os.path.join('train_gender.csv', img_path))\n    img = cv2.resize(img, (64, 64))\n    images.append(img)\n\nimages = np.array(images)\n\n# Dividindo o dataset em treino e teste\nX_train, X_test, y_train, y_test = train_test_split(images, data['gender'], test_size=0.2, random_state=42)\n\n# Criando o modelo de rede neural convolucional\nmodel = Sequential([\n    Conv2D(32, (3, 3), activation='relu', input_shape=(64, 64, 3)),\n    MaxPooling2D((2, 2)),\n    Conv2D(64, (3, 3), activation='relu'),\n    MaxPooling2D((2, 2)),\n    Flatten(),\n    Dense(64, activation='relu'),\n    Dropout(0.5),\n    Dense(1, activation='sigmoid')\n])\n\nmodel.compile(optimizer=Adam(), loss='binary_crossentropy', metrics=['accuracy'])\n\n# Treinando o modelo\ntrain_datagen = ImageDataGenerator(rescale=1./255, horizontal_flip=True)\ntest_datagen = ImageDataGenerator(rescale=1./255)\n\ntrain_generator = train_datagen.flow(X_train, y_train, batch_size=32)\ntest_generator = test_datagen.flow(X_test, y_test, batch_size=32)\n\nhistory = model.fit(train_generator, epochs=10, validation_data=test_generator)\n\n# Salvando o modelo treinado\nmodel.save('gender_classification_model.h5')","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"execution_count":null,"outputs":[]}]}