{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"markdown","source":"Example functions you can pass to keras to monitoring f2 scores during training.   "},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true},"cell_type":"code","source":"from keras import backend as K\nimport tensorflow as tf\nimport numpy as np","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"e2eeacaf63db4d587b82273d1553ac5d6ca201aa"},"cell_type":"code","source":"def f2_micro(y_true, y_pred):\n    agreement = K.sum(K.round(K.clip(y_true * y_pred, 0, 1)))\n    total_true_positive = K.sum(K.round(K.clip(y_true, 0, 1)))\n    total_pred_positive = K.sum(K.round(K.clip(y_pred, 0, 1)))\n    recall = agreement / (total_true_positive + K.epsilon())\n    precision = agreement / (total_pred_positive + K.epsilon())\n    return (1+2**2)*((precision*recall)/(2**2*precision+recall+K.epsilon()))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"1159f771d3746ef0940d613fe6f7023493a5b41c"},"cell_type":"code","source":"y_true = kvar = K.variable(np.array([[1,1,0], [0,1,1], [0,0,0]]), dtype='float32')\ny_pred = kvar = K.variable(np.array([[0.6, 0.6, 0.4],[0.6, 0.2, 0.7], [0.2, 0.1, 1.1]]), dtype='float32')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"41c37e4362fb03000bff63c8f71ea51328dc4f5a"},"cell_type":"code","source":"K.eval(f2_micro(y_true, y_pred))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"99254eddbe5fc1e6c0eee3a8ff1d5465f2070c56"},"cell_type":"code","source":"def f2_mean_example(y_true, y_pred):\n    agreement = K.sum(K.round(K.clip(y_true * y_pred, 0, 1)), axis=1)\n    true_positive = K.sum(K.round(K.clip(y_true, 0, 1)), axis=1)\n    pred_positive = K.sum(K.round(K.clip(y_pred, 0, 1)), axis=1)\n    recall = agreement / (true_positive + K.epsilon())\n    precision = agreement / (pred_positive + K.epsilon())\n    f2score = (1+2**2)*((precision*recall)/(2**2*precision+recall+K.epsilon()))\n    return K.mean(f2score)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"a2c8e032663b1a0293e092d17ba47aaa1212e471"},"cell_type":"code","source":"K.eval(f2_mean_example(y_true, y_pred))","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}