diff options
Diffstat (limited to 'Experiment/ExpertFeature/tls_cert_length.ipynb')
| -rw-r--r-- | Experiment/ExpertFeature/tls_cert_length.ipynb | 97 |
1 files changed, 75 insertions, 22 deletions
diff --git a/Experiment/ExpertFeature/tls_cert_length.ipynb b/Experiment/ExpertFeature/tls_cert_length.ipynb index 4abb0e6..e25e45f 100644 --- a/Experiment/ExpertFeature/tls_cert_length.ipynb +++ b/Experiment/ExpertFeature/tls_cert_length.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 13, + "execution_count": 38, "metadata": {}, "outputs": [ { @@ -16,7 +16,7 @@ "Name: 4, dtype: int64" ] }, - "execution_count": 13, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } @@ -32,7 +32,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 39, "metadata": { "collapsed": true }, @@ -46,7 +46,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 40, "metadata": { "collapsed": true }, @@ -181,7 +181,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 41, "metadata": { "collapsed": true }, @@ -227,8 +227,10 @@ }, { "cell_type": "code", - "execution_count": 17, - "metadata": {}, + "execution_count": 42, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "#TODO: 加入cipher suites,extensions特征\n", @@ -248,7 +250,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 43, "metadata": { "collapsed": true }, @@ -359,7 +361,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 44, "metadata": { "collapsed": true }, @@ -374,7 +376,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 82, "metadata": {}, "outputs": [ { @@ -382,19 +384,23 @@ "output_type": "stream", "text": [ "164\n", - " precision recall f1\n", - "LogisticRegression 0.886296 0.886296 0.886296\n", - "SVM 0.897751 0.897751 0.897751\n", - "GaussianNB 0.694103 0.694103 0.694103\n", - "tree 0.911328 0.911328 0.911328\n", - "RandomForest 0.905388 0.905388 0.905388\n" + "[2357, 5]\n", + "0.999400838826\n", + "0.999400838826\n", + "0.999400838826\n", + " precision recall f1\n", + "LogisticRegression 0.00000 0.00000 0.00000\n", + "SVM 0.00000 0.00000 0.00000\n", + "GaussianNB 0.00000 0.00000 0.00000\n", + "tree 0.00000 0.00000 0.00000\n", + "RandomForest 0.89563 0.89563 0.89563\n" ] }, { "data": { - "image/png": "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\ndr1wf+KJJ/jyl7/MVlttBcBXvvIVHn/8cYYPH07v3r3XtN93332pq6ur8G9uReAzdyusxqNOGrYb\nAveTTz5h2223ZebMmWu+XnjhhbKe++CDD+axxx6je/fufPOb31zzRtBgY4vkdOzYcc3jmpoaVq3y\ncqzWcg53K6xXX32Vp59+GoAbb7yRAw88cJ3jXbp0oXfv3tx6661AEsizZs0CYNiwYUycOBFILrwu\nWbJkne9duHAh22+/PaeddhqnnnoqM2bMWOf4wQcfzB133MEHH3zA8uXLuf322znooIM2y+9pxdSm\nu2XcFWGfRt++fbnmmmv4zne+Q58+fTjjjDO45JJL1mlz/fXXc8YZZ/Czn/2MlStXMnLkSPr378+E\nCRMYPXo0V111FTU1NUycOJGhQ4eu+b5HHnmEX/7yl7Rv357OnTuvd+Y+YMAATj75ZAYPHgwkF1T3\n2Wcfd8FYxbTpcLd8qNTQxZZq164dl19++bq1NArX3r17c9999633vTvssAN33nnnevuXLVsGwEkn\nncRJJ5203vHS5x83bhzjxo1b53htbS3PP//8mu3vf//7zf4eZk1xt4yZWQ453K2QGp8hm+WNw93M\nLIcc7mZmOeRwNzPLIYe7mVkOOdzNKqSuro499tgDSMa5H3300RlXZEXmce6WvXO3ab5Ni57v/RY1\njwgignbtfK5j+eF/zVZIdXV19O3blzFjxjBgwACuu+46hg4dyoABA/jqV7+65makqVOnsv/++9O/\nf38GDx7M0qVLqaur46CDDmLAgAEMGDCg2TnczbLgcLfCmjdvHieeeCIPPPAAV111FQ8++CAzZsxg\n4MCBXHTRRaxYsYIRI0YwYcIEZs2axYMPPsiWW27J9ttvzwMPPMCMGTO4+eabOeuss7L+VczW424Z\nK6xevXoxZMgQ7rnnHubOnbtm+t8VK1YwdOhQ5s2bx4477sigQYOAZCIxgOXLlzN27FhmzpxJTU0N\nL730Uma/g9mGONytsBqm9o0IDj/8cG688cZ1js+ePbvJxagvvvhidthhB2bNmsUnn3xCp06dWqVe\ns5Zwt4wV3pAhQ3jyySeZP38+AB988AEvvfQSu+++O4sWLWLq1KkALF26lFWrVvH++++z44470q5d\nO6677jpWr16dZflmTXK4W+F169aNq6++mlGjRrHXXnsxZMgQXnzxRTp06MDNN9/Md7/7Xfr378/h\n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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAFcCAYAAAAzq/4LAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xu8VXWd//HXmyMXQ5FG0VG5HDIvIHIHwQuWZJk/Q00L\nKFPLYBLNSudCU9M4NjNl46hUmlmGZt5zNHQsL4l3cbgIKCCKeNATXknlpnLx8/tjrQObw4Gzwc1Z\n+6z1fj4e58Fea33PPp+zgfde+7u+6/tVRGBmZvnSJusCzMys8hzuZmY55HA3M8shh7uZWQ453M3M\ncsjhbmaWQw53q2qSaiWFpJ220ubfJb0p6VVJ3SWtlFTTknVuL0n/LOnXWddh+SOPc7dqJqkWeBFo\nGxHrmjjeDXgO6BERr7dsdS1L0gXAxyPi1KxrsernM3dr7XoAy7IO9q19sqjk95iVy+FuLU7SP0n6\ni6QVkhZKGilpqKQZkpZLek3SJWU8z6eA+4B90q6Yaxp340h6UNIPJT2W/rx7Je1R8hynSVoiaZmk\nf5FUlz4vktpImijphfT4LZL+Jj3W8HPOlPQS8EDJvvGSlkp6RdL5JT/rAkm/l/Q7ScuBM9J9v2v0\nnKdLeintavpeeuxY4J+B0envOqdSfx+WTw53a1GSDgTOAYZExK7AZ4A6YBIwKSI6AfsBtzT3XBFx\nP/BZYGlE7BIRZ2yh6ZeArwJ7Au2Av09r6Q1cAXwZ2BvYDdi35PvOBU4EjgL2Ad4CLm/03EcBvdLf\no8Engf2BTwMTG94sUicAvwc6A9dvod4jgAOBkcAPJPWKiD8B/wncnP6u/bbwvWaAw91a3nqgPdBb\nUtuIqIuIF4C1wMcl7RERKyNiWgV/5uSIeC4i3iV50+if7j8FuDMiHo2INcAPgNKLUH8HfC8i6iPi\nfeAC4JRG3SkXRMSq9Lkb/Fu672lgMjC25NgTEXFHRHzQ6Hto9P3vRsQcYA7gILdt5nC3FhURi4Bv\nkwTl65JukrQPcCZwAPCspOmSjm/8vZKOTLskVkqatw0/9tWSx6uBXdLH+wAvl9S2GlhW0rYHcLuk\ntyW9DSwgeXPaq6TNy2yudN+S9OdsrX259ZqVzeFuLS4iboiII0jCM4CLIuL5iBhL0nVyEfB7SR0b\nfd8jaZfELhFxcAVKeQXo2rAhaWdg95LjLwOfjYjOJV8dIuIvpWU18bzdSh53B5Y2075cHtpmZXO4\nW4uSdKCkoyW1B94D3gXWSzpVUpeI+AB4O22+fgeX83vgc5IOk9QO+DdAJcevBP5DUo+09i6STijj\nef9F0kckHUzS139zhep9DaiV5P+31iz/I7GW1h74MfAmSffDniSjQI4F5klaSXJxdUxEvLcjC4mI\necA3gZtIzuJXAK8D76dNJgFTgHslrQCmAYeW8dQPAYuAPwMXR8S9FSr51vTPZZJmVeg5Lad8E5NZ\nStIuJJ8a9o+IF7fj+2vZyg1XZi3JZ+5WaJI+l3ahdAQuBp4mGZpp1qo53K3oTiC54LmUZGz6mPDH\nWcsBd8uYmeWQz9zNzHLI4W5mlkOZzUq3xx57RG1tbVY/3sysVZo5c+abEdGluXaZhXttbS0zZszI\n6sebmbVKkpaU087dMmZmOeRwNzPLIYe7mVkOVdUyX2vXrqW+vp733tuhU4rkVocOHejatStt27bN\nuhQzy1hVhXt9fT277rortbW1SGr+G2yDiGDZsmXU19fTs2fPrMsxs4xVVbfMe++9x+677+5g3w6S\n2H333f2px8yAKgt3wMH+Ifi1M7MGVRfueXXYYYdt9fhxxx3H22+/vdU2Zmblqqo+98ZqJ/5vRZ+v\n7sf/ryLPs379empqarbpex5//PGtHr/77rs/TElm1oxtyZO6Dl8qu+0hPbuX3fbp058uu+2H5TP3\nRurq6jjooIM4/fTT6du3L6eccgqrV6+mtraWCy+8kCOOOIJbb72VF154gWOPPZZBgwZx5JFH8uyz\nzwLw2muvcdJJJ9GvXz/69eu3IdR32SVZ4/iVV15hxIgR9O/fnz59+vDII48AyR27b775JgCXXHIJ\nffr0oU+fPlx22WUb6urVqxfjxo3j4IMP5tOf/jTvvvtuS788ZtZKONybsHDhQsaPH8/cuXPp1KkT\nV1xxBZAMNXz00UcZM2YM48eP52c/+xkzZ87k4osvZsKECQCce+65HHXUUcyZM4dZs2Zx8MGbruN8\nww038JnPfIbZs2czZ84c+vfvv8nxmTNnMnnyZJ588kmmTZvGr371K5566ikAnn/+ec4++2zmzZtH\n586due2221rg1TCz1qiqu2Wy0q1bNw4//HAATj31VH76058CMHr0aABWrlzJ448/zhe+8IUN3/P+\n+8mymw888AC//e1vAaipqWG33Xbb5LmHDBnC1772NdauXcuJJ564Wbg/+uijnHTSSXTs2BGAz3/+\n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\n", "text/plain": [ - "<matplotlib.figure.Figure at 0x1110cfe80>" + "<matplotlib.figure.Figure at 0x10c611ac8>" ] }, "metadata": {}, @@ -413,6 +419,30 @@ "print(len(examples[0]))\n", "score_df = pd.DataFrame(np.zeros((5,3)),index = ['LogisticRegression', 'SVM', 'GaussianNB', 'tree', 'RandomForest'], \\\n", " columns = ['precision', 'recall', 'f1'])\n", + "\n", + "\n", + "def my_pred(y_pred, y_test, proba):\n", + " y_pred1 = list()\n", + " y_test1 = list()\n", + " [rows, clos] = proba.shape\n", + " print([rows, clos])\n", + " right_count = 0\n", + " wrong_count = 0\n", + " for i in range(rows):\n", + " temp = max(proba[i])\n", + " if temp < 0.95:\n", + " continue\n", + " y_pred1.append(y_pred[i])\n", + " y_test1.append(y_test[i])\n", + " f1 = f1_score(y_test1, y_pred1, average='micro')\n", + " recall = recall_score(y_test1, y_pred1, average='micro')\n", + " precision = precision_score(y_test1, y_pred1, average='micro')\n", + " print(precision)\n", + " print(recall)\n", + " print(f1)\n", + " \n", + "\n", + "'''\n", "#def a():\n", "f1_score_list = list()\n", "recall_score_list = list()\n", @@ -493,12 +523,13 @@ " precision_score_list.append(precision_score(y_test, y_pred, average='micro'))\n", "scores = [np.mean(precision_score_list), np.mean(recall_score_list), np.mean(f1_score_list)]\n", "score_df.loc['tree'] = scores\n", + "'''\n", "\n", "f1_score_list = list()\n", "recall_score_list = list()\n", "precision_score_list = list()\n", "for i in range(1):\n", - " #np.random.shuffle(examples)\n", + " np.random.shuffle(examples)\n", " examples_train = examples[:int(len(examples)*0.75)]\n", " examples_test = examples[int(len(examples)*0.75):]\n", " x_train = examples_train[:,0:-1]\n", @@ -510,14 +541,15 @@ " y_pred = classifer.predict(x_test)\n", " f1_score_list.append(f1_score(y_test, y_pred, average='micro'))\n", " recall_score_list.append(recall_score(y_test, y_pred, average='micro'))\n", - " precision_score_list.append(precision_score(y_test, y_pred, average='micro'))\n", - " \n", + " precision_score_list.append(precision_score(y_test, y_pred, average='micro')) \n", + " proba = classifer.predict_proba(x_test)\n", + " my_pred(y_pred, y_test, proba)\n", "scores = [np.mean(precision_score_list), np.mean(recall_score_list), np.mean(f1_score_list)]\n", "score_df.loc['RandomForest'] = scores\n", "print(score_df)\n", "ax = score_df.plot.bar(title='ssl-fingerprint')\n", "fig = ax.get_figure()\n", - "#fig.savefig('../figure/ssl.svg')" + "#fig.savefig('../figure/ssl.svg')\n" ] }, { @@ -528,6 +560,15 @@ }, "outputs": [], "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] } ], "metadata": { @@ -535,6 +576,18 @@ "display_name": "Python 3", "language": "python", "name": "python3" + }, + "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.2" } }, "nbformat": 4, |
