Skip to content

Instantly share code, notes, and snippets.

@welschma
Created October 27, 2016 08:00
Show Gist options
  • Save welschma/4e4059fd9c94aecf9a3fa1d31be5a7be to your computer and use it in GitHub Desktop.
Save welschma/4e4059fd9c94aecf9a3fa1d31be5a7be to your computer and use it in GitHub Desktop.
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Umsetzung Neuronales Netz"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"from __future__ import absolute_import, division, print_function\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"from tf_classifier.binary_mlp import BinaryMLP\n",
"from dataframe.dataframe import Dataframe\n",
"from sklearn.metrics import roc_auc_score, roc_curve"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Lade konvertiertes Numpy Array"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"data = np.load('tree2array/converted_trees/UCIlikedata_2/UCIlikedata_2.npy')\n",
"n_test = int(0.8*data.shape[0])\n",
"n_val = int(0.2*data.shape[0])\n",
"\n",
"train_data_all = Dataframe(data[:n_test, 1:], data[:n_test, :1])\n",
"val_data_all = Dataframe(\n",
" data[-n_val:-int(n_val/2), 1:], data[-n_val:-int(n_val/2), :1])\n",
"test_data_all = Dataframe(\n",
" data[-int(n_val/2):, 1:], data[-int(n_val/2):, :1])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Initialisiere Neuronales Netz und trainiere gegebenenfalls"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"cfall = BinaryMLP(train_data_all.x.shape[1], [300 for i in range(6)], '6_300_catall')\n",
"#cfall.train(train_data_all, val_data_all, epochs=60, keep_prob=0.7, batch_size=1000)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Teste NN"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"labels = test_data_all.y.reshape(-1)\n",
"pred = cfall.predict_prob(test_data_all).reshape(-1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Schöner Plot"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n0LBhw7jlllviDiPt9ekDTz4Jjz8ebomeL+78qqhIWLduHXl5eTz44IN07Ngx7nBEJGbLli3j3HPP\nZaGiKBIAAB+lSURBVN26dSoqUki5TI38NH7zDfz4I9Ssmd8eb35VVBTRsWNHzQ4REYnI5ZdfHncI\nGaF7d6hTBzZvDutV/PKXoT3u/GqgpoiISJqpUQP23Tfsf/hhvLEUpKJCREQkDbVvHx6r0j1AVFSI\niEilWV7c2tKSlBYtwmPBoiLu/KqoEBGRSjN8+PC4Q8gY+Qti16ixrS3u/KqoEKkkL774IllZWSws\n8J8V5557Lu3z+zBFqoEpU6bEHULGOPvs8Dh//rYCI+78qqioRj755BMuueQS9t57b+rWrUvjxo3p\n3r07kyZNYvPmzeV+v7vvvpsZM2ZEEGl6Ou2008jKyuKGG24o8Rgz2+550bZkTJo0iaysLI444ohi\nX//444/Jyspi0qRJxb4+fvx4srKyWLVq1XavPfHEE5x44onstttu1K5dm5YtW3LWWWfx8ssvJx2v\nuzNu3Djatm1L3bp16dKlC4899liZz//3v/9Nr169aN68OY0aNaJLly7cddddbN26tdBxDz/88M+F\nW1ZWFj179kw6ZkmNuKc8ZpL999+2n/8/3bjzq6Kimvjb3/7G/vvvz+OPP052djZTpkxh/Pjx7LXX\nXgwfPpyrrrqq3O85depUFRUJGzZs4O9//ztt2rRh1qxZlf75s2bNok2bNixcuJAVK1aU+/ziiht3\np3///vTt25d169ZxzTXXcO+99zJo0CA+/PBDjj32WN58882k4h02bBijRo3ixBNPZMqUKey55570\n69eP2bNn7/DcN954g+7du7Nq1SpGjhzJn/70J1q3bs3ll1/OiBEjCh1711138eyzz9K6dWt2LnjX\nJZEM0KABNGsW9pP8n2LquXu12IADAV+0aJEXZ9GiRV7a6+ns008/9YYNG/p+++3na9as2e71jz/+\n2CdNmlTu9/3lL3/pxxxzTCpCjNSmTZsi/4w///nPXqdOHZ83b56bmS9cuHC7Y+bOnetZWVn+6quv\n/tx27rnnevv27Sv02R988IGbmT/zzDPetGlTHzt27HbHfPTRR25mfueddxb7HuPHj/esrCz//PPP\nf24bN26cm5mPGDGi2HNmzJjhixcvLne8ubm5XqtWLb/66qsLtR9++OHepk2bHZ4/YMAAr1evnm/c\nuLFQe/fu3b1p06aF2lauXPnzfocOHfw3v/lNmePM5P9PkMwRLny4T5kS7efk/+8BONBL+Vurnopq\nYMKECWzatIlp06ax++67b/d627ZtCy2YMn36dHr06EGzZs2oU6cO++23H/fcc0+hc9q0acO7777L\nSy+9RFZWFllZWRx77LE/v75hwwauuuoqWrVqRZ06dWjfvj0TJ07ML/B+9uWXX3LeeefRuHFjmjRp\nwoABA1i6dClZWVnMnDmz0LHz5s3jiCOOoEGDBjRp0oRTTz11u5HOY8aMISsri2XLlnH22Wezyy67\ncMQRRzB9+nSysrJYsmTJdt9/7Nix1KxZk9WrVwPw3Xff8f777/Pll1+WMcOhp+DEE0/kmGOOYZ99\n9uGhhx4q87kV9dBDD9G0aVN69erFaaedlpLPzsvLY+LEiXTu3Jnx48cXe0z//v3p2rXrz88/+eQT\nPv300x2+95NPPslPP/3EZZddVqj9sssuY8WKFbzxxhulnv/NN99Qt25dGjZsWKi9efPm1K1bt1Db\nnnvuucN4pHJNmDAh7hAyyjHHhMc1a8Jj3PlVUVENPPvss7Rt25ZDDz20TMffc889tG7dmlGjRnHb\nbbfRqlUrBg0axN0FFpi/8847admyJR07duShhx7iwQcfZNSoUUD4o3zkkUfy0EMPccEFFzB58mS6\nd+/OyJEjueaaa35+D3fn5JNP5pFHHmHAgAGMHTuW1atXc/7552/XFT937lxOOOEE1q1bxx//+Eeu\nueYaFi5cSPfu3cnNzf35uPzz+vbty+bNmxk3bhwXXXQRffv2pW7dusX+wZ01axbHHnssLRLzsxYu\nXEjHjh23K6RKsnLlSl555RXOOussAM4880weffRRfvrppzKdX1E5OTn07duXrKwszjrrLJYtW1Zs\n8VQer7zyCl9//TVn548EK4MjjzyS448/fofHvf322zRq1Ih27doVav/Vr36Fu/PWW2+Vev7RRx/N\nV199xWWXXcb777/PihUrmDp1Kk8//TQjR44sc7wSD91fKbXyi4oXXgiPsee3tG6MTNpI4eWPrVvd\nv/02+m3r1h2GskMbN250M/M+ffqU+ZzNmzdv13bCCSd4u3btCrWVdPnjpptu8oYNG/rHH39cqH3k\nyJFeq1atn7ukn3jiCTcznzx5cqHjevTo4VlZWT5jxoyf27p06eLNmzf3r7/++ue2pUuXeo0aNfyC\n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\nycnJet111+kf/vAHnT17tl511VXaokWLqot1RUWFnnPOOZqcnKw33XSTzp8/X4cNG6ZnnHGGejye\ngBEZKSkpmpeXpw8++KBOmzZNs7OzNTMzUz/77LOqcnVJKmbPnq0ioh6PR999992A7X/+859VRHT6\n9Ok1xvTaa6/VlJQUv0TH19/+9je/0S3e49aWVIwdO1ZFxO9BVNUtW7ZMRUSff/75oNsrKiq0TZs2\n+vOf/7xq3UcffaTp6emalZWld955py5cuFCnTJmibdq00datW+uWLVsCjpGfn68ej0fPOussnTlz\npi5evFhnzJihZ599tno8Hn3vvfeqynfo0KHOCdKtt96qSUlJesMNN2hhYaEOHz5cPR6PPvnkk7XG\nYsmSJerxeLRLly76wAMP6Ny5c/Wcc85Rj8ejDzzwgN/+r732mhYUFOh9992nWVlZ2qVLFy0oKNCC\nggJ94403aqxjon8nmMQxYYJzNf/FL6J3DksqLKkIsHXrVr3++uu1U6dOmpqaqhkZGdq/f39dsGCB\nHj16tKrcc889p7169dK0tDTt1KmTPvjgg7p48eKApOLLL7/UkSNHakZGhno8Hr/hpd9//73eeeed\n2rVrV01NTdXs7Gzt16+fPvTQQ1peXl5Vbt++fZqfn68ZGRnaqlUrveaaa/Stt95SEdEVK1b41X/d\nunXav39/bdasmbZs2VJHjx6tpaWlfmXqklTs3r1bmzRponl5eUG312VI6ZEjR7RVq1Z6wQUXhCyj\nqnrKKadonz59/I5bPamoPgxz9OjR2rx5cz148GDI444YMUJbtGihR44cCVnmyiuv1NTUVL9f9Js2\nbdJf/vKX2q5dO01JSdH27dtrfn5+QELh66mnntJhw4ZpZmampqSkaMeOHXXMmDF+70O17kNKVZ07\nUjNmzNDc3FxNTU3VHj16BPz3VnXik5SUFJBgvfDCCzpw4EDNysrS1NRU7d27ty5atChg/7vuuks9\nHk/Qpbak8UT4TjCJYdo052reqVP0zmFJhSUVceuZZ55Rj8cT9FHXkbB3715NTk6u9aISK947CSa2\n7DvBxIulS52recuW0TuHPafCxIUjR474/V1ZWcm8efNIT0/njDPOiMo5Fy9eTGVl5XGN+oiWDz/8\nkPLycm677bZYV8WYqFi0aFGsq5BwvM+q2L8fFi6MbXxt9IeJqZtuuomysjL69u3LkSNHWLlyJcXF\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f0ba8433c10>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fpr, tpr, thresh = roc_curve(labels, pred)\n",
"auc = roc_auc_score(labels, pred)\n",
"plt.plot(tpr, np.ones(len(fpr)) - fpr,\n",
" lw=1.5,label='Category: {}, AUC: {:0.2f}'.format('All', auc))\n",
"plt.xlim([0.0, 1.05])\n",
"plt.ylim([0.0, 1.05])\n",
"plt.grid()\n",
"plt.xlabel('Signal Efficiency')\n",
"plt.ylabel('Background Rejection')\n",
"plt.title('ROC Curve')\n",
"plt.legend(loc=\"lower left\")\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.12"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment