This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
cuiyiming-gradproj/Experiment/MarkovModel/markov_tofig.ipynb
2020-05-10 13:52:13 +08:00

616 lines
57 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 169,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"end2\n"
]
}
],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"#date = '2019-12-20_21'\n",
"date = 'noProxy/All'\n",
"root_dir = '/Users/Leo/Documents/github/GradProj/'\n",
"train_path = root_dir + 'Experiment/MarkovModel/CsvFile/' + date + '/train_15_0.8.csv'\n",
"test_path = root_dir + 'Experiment/MarkovModel/CsvFile/' + date + '/test_15_0.8.csv'\n",
"train_df = pd.read_csv(train_path,index_col=0)\n",
"test_df = pd.read_csv(test_path,index_col=0)\n",
"print('end2')"
]
},
{
"cell_type": "code",
"execution_count": 170,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from sklearn.linear_model import LogisticRegression\n",
"from sklearn.svm import SVC\n",
"from sklearn.naive_bayes import GaussianNB\n",
"from sklearn import tree\n",
"from sklearn.ensemble import RandomForestClassifier\n",
"from sklearn.metrics import f1_score,recall_score,precision_score\n",
"\n",
"%matplotlib inline\n",
"import os\n",
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 171,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" precision recall f1\n",
"LogisticRegression 0.447211 0.447211 0.447211\n",
"SVM 0.451245 0.451245 0.451245\n",
"GaussianNB 0.371946 0.371946 0.371946\n",
"tree 0.623329 0.623329 0.623329\n",
"RandomForest 0.626095 0.626095 0.626095\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1a1f0e6278>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#type markov\n",
"x_train = train_df.iloc[:,0:5].values.copy()\n",
"y_train = train_df['label'].values.copy()\n",
"x_test = test_df.iloc[:,0:5].values.copy()\n",
"y_test = test_df['label'].values.copy()\n",
"lr_classifer = LogisticRegression()\n",
"lr_classifer.fit(x_train, y_train)\n",
"y_pred = lr_classifer.predict(x_test)\n",
"lr_precision = precision_score(y_test, y_pred, average='micro')\n",
"lr_recall = recall_score(y_test, y_pred, average='micro')\n",
"lr_f1 = f1_score(y_test, y_pred, average='micro')\n",
"\n",
"svm_classifer = SVC()\n",
"svm_classifer.fit(x_train, y_train)\n",
"y_pred = svm_classifer.predict(x_test)\n",
"svm_precision = precision_score(y_test, y_pred, average='micro')\n",
"svm_recall = recall_score(y_test, y_pred, average='micro')\n",
"svm_f1 = f1_score(y_test, y_pred, average='micro')\n",
"\n",
"gn_classifer = GaussianNB()\n",
"gn_classifer.fit(x_train, y_train)\n",
"y_pred = gn_classifer.predict(x_test)\n",
"gn_precision = precision_score(y_test, y_pred, average='micro')\n",
"gn_recall = recall_score(y_test, y_pred, average='micro')\n",
"gn_f1 = f1_score(y_test, y_pred, average='micro')\n",
"\n",
"tr_classifer = tree.DecisionTreeClassifier()\n",
"tr_classifer.fit(x_train, y_train)\n",
"y_pred = tr_classifer.predict(x_test)\n",
"tr_precision = precision_score(y_test, y_pred, average='micro')\n",
"tr_recall = recall_score(y_test, y_pred, average='micro')\n",
"tr_f1 = f1_score(y_test, y_pred, average='micro')\n",
"\n",
"rf_classifer = RandomForestClassifier()\n",
"rf_classifer.fit(x_train, y_train)\n",
"y_pred = rf_classifer.predict(x_test)\n",
"rf_precision = precision_score(y_test, y_pred, average='micro')\n",
"rf_recall = recall_score(y_test, y_pred, average='micro')\n",
"rf_f1 = f1_score(y_test, y_pred, average='micro')\n",
"\n",
"score_df = pd.DataFrame(np.zeros((5,3)),index = ['LogisticRegression', 'SVM', 'GaussianNB', 'tree', 'RandomForest'], \\\n",
" columns = ['precision', 'recall', 'f1'])\n",
"score_df.loc['LogisticRegression'] = [lr_precision, lr_recall, lr_f1]\n",
"score_df.loc['SVM'] = [svm_precision, svm_recall, svm_f1]\n",
"score_df.loc['GaussianNB'] = [gn_precision, gn_recall, gn_f1]\n",
"score_df.loc['tree'] = [tr_precision, tr_recall, tr_f1]\n",
"score_df.loc['RandomForest'] = [rf_precision, rf_recall, rf_f1]\n",
"print(score_df)\n",
"ax = score_df.plot.bar(title='type markov')\n",
"fig = ax.get_figure()\n",
"#fig.savefig('../figure/type.svg')"
]
},
{
"cell_type": "code",
"execution_count": 172,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"LogisticRegression: \n",
"[ 0.81011609 0.86749717 0.9655914 0.46787479 0.75154004 0.72459016\n",
" 0.79276018 0.80684327 0.95348837 0.94557097]\n",
"[ 0.92782526 0.91408115 0.90707071 0.52592593 0.4187643 0.88844221\n",
" 0.89296636 0.73246493 0.95571096 0.848659 ]\n",
"[ 0.86498451 0.89018013 0.93541667 0.49520488 0.53783982 0.79819413\n",
" 0.83988495 0.76785714 0.95459837 0.89449773]\n",
"0.808587244328\n",
"0.801191080311\n",
"0.797865832655\n",
"SVM: \n",
"[ 0.85129118 0.8948626 0.91411043 0.4501992 0.43452958 0.62978723\n",
" 0.80304472 0.80848749 0.96424315 0.95048439]\n",
"[ 0.90788224 0.89379475 0.9030303 0.62777778 0.51258581 0.44623116\n",
" 0.86034659 0.74448898 0.94289044 0.84578544]\n",
"[ 0.87867647 0.89432836 0.90853659 0.52436195 0.47034121 0.52235294\n",
" 0.83070866 0.77516954 0.95344726 0.89508363]\n",
"0.770103998261\n",
"0.768481348614\n",
"0.765300659766\n",
"GaussianNB: \n",
"[ 0.76221198 0.76582278 0.86720322 0.2641844 0.36886633 0.83389831\n",
" 0.84943538 0.78398983 0.83895539 0.82690406]\n",
"[ 0.78537512 0.86634845 0.87070707 0.27592593 0.74828375 0.24723618\n",
" 0.69011213 0.61823647 0.8986014 0.80076628]\n",
"[ 0.77362021 0.81298992 0.86895161 0.26992754 0.49414431 0.38139535\n",
" 0.76152981 0.69131653 0.86775464 0.8136253 ]\n",
"0.716147167538\n",
"0.680159278335\n",
"0.673525522188\n",
"DecisionTree: \n",
"[ 0.79748823 0.86084142 0.95974576 0.48046875 0.91911765 0.95440085\n",
" 0.74148472 0.90111643 0.92674806 0.96805112]\n",
"[ 0.9648623 0.9522673 0.91515152 0.68333333 0.71510297 0.90452261\n",
" 0.86544343 0.56613226 0.97319347 0.87068966]\n",
"[ 0.87322733 0.90424929 0.9369183 0.56422018 0.8043758 0.92879257\n",
" 0.79868297 0.69538462 0.94940307 0.91679274]\n",
"0.850946297765\n",
"0.841069885565\n",
"0.837204688097\n",
"RandomForest: \n",
"[ 0.79686275 0.85353003 0.97494781 0.55539568 0.92587209 0.95278069\n",
" 0.77433628 0.92671756 0.94038245 0.97300104]\n",
"[ 0.9648623 0.96658711 0.94343434 0.71481481 0.72883295 0.91256281\n",
" 0.89194699 0.60821643 0.97435897 0.89750958]\n",
"[ 0.87285223 0.90654729 0.95893224 0.62510121 0.815621 0.93223819\n",
" 0.828991 0.73442226 0.95706926 0.93373194]\n",
"0.867382638472\n",
"0.860312631327\n",
"0.856550662602\n"
]
}
],
"source": [
"#type+length markov\n",
"\n",
"\n",
"def classify(classifer, name):\n",
" f1_score_list = list()\n",
" recall_score_list = list()\n",
" precision_score_list = list()\n",
" classifer.fit(x_train, y_train)\n",
" y_pred = classifer.predict(x_test)\n",
" precision_score_list.append(precision_score(y_test, y_pred, average=None))\n",
" recall_score_list.append(recall_score(y_test, y_pred, average=None))\n",
" f1_score_list.append(f1_score(y_test, y_pred, average=None))\n",
" scores = [np.mean(precision_score_list, axis=0), np.mean(recall_score_list, axis=0), np.mean(f1_score_list, axis=0)]\n",
" print(name + \": \")\n",
" for score in scores:\n",
" print(score)\n",
" print(np.mean(np.mean(precision_score_list, axis=0)))\n",
" print(np.mean(np.mean(recall_score_list, axis=0)))\n",
" print(np.mean(np.mean(f1_score_list, axis=0)))\n",
" \n",
" \n",
"x_train = train_df.iloc[:,0:15].values.copy()\n",
"y_train = train_df['label'].values.copy()\n",
"x_test = test_df.iloc[:,0:15].values.copy()\n",
"y_test = test_df['label'].values.copy()\n",
"\n",
"\n",
"classifer = LogisticRegression()\n",
"classify(classifer, \"LogisticRegression\")\n",
"\n",
"classifer = SVC()\n",
"classify(classifer, \"SVM\")\n",
"\n",
"classifer = GaussianNB()\n",
"classify(classifer, \"GaussianNB\")\n",
"\n",
"classifer = tree.DecisionTreeClassifier()\n",
"classify(classifer, \"DecisionTree\")\n",
"\n",
"classifer = RandomForestClassifier()\n",
"classify(classifer, \"RandomForest\")\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 173,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" precision recall f1\n",
"LogisticRegression 0.767174 0.767174 0.767174\n",
"SVM 0.759451 0.759451 0.759451\n",
"GaussianNB 0.657561 0.657561 0.657561\n",
"tree 0.837137 0.837137 0.837137\n",
"RandomForest 0.843707 0.843707 0.843707\n"
]
}
],
"source": [
"#type+burst markov\n",
"x_train = np.append(train_df.iloc[:,0:5].values.copy(), train_df.iloc[:,10:15].values.copy(), axis = 1)\n",
"y_train = train_df['label'].values.copy()\n",
"x_test = np.append(test_df.iloc[:,0:5].values.copy(), test_df.iloc[:,10:15].values.copy(), axis = 1)\n",
"y_test = test_df['label'].values.copy()\n",
"\n",
"\n",
"lr_classifer = LogisticRegression()\n",
"lr_classifer.fit(x_train, y_train)\n",
"y_pred = lr_classifer.predict(x_test)\n",
"lr_precision = precision_score(y_test, y_pred, average='micro')\n",
"lr_recall = recall_score(y_test, y_pred, average='micro')\n",
"lr_f1 = f1_score(y_test, y_pred, average='micro')\n",
"\n",
"svm_classifer = SVC()\n",
"svm_classifer.fit(x_train, y_train)\n",
"y_pred = svm_classifer.predict(x_test)\n",
"svm_precision = precision_score(y_test, y_pred, average='micro')\n",
"svm_recall = recall_score(y_test, y_pred, average='micro')\n",
"svm_f1 = f1_score(y_test, y_pred, average='micro')\n",
"\n",
"gn_classifer = GaussianNB()\n",
"gn_classifer.fit(x_train, y_train)\n",
"y_pred = gn_classifer.predict(x_test)\n",
"gn_precision = precision_score(y_test, y_pred, average='micro')\n",
"gn_recall = recall_score(y_test, y_pred, average='micro')\n",
"gn_f1 = f1_score(y_test, y_pred, average='micro')\n",
"\n",
"tr_classifer = tree.DecisionTreeClassifier()\n",
"tr_classifer.fit(x_train, y_train)\n",
"y_pred = tr_classifer.predict(x_test)\n",
"tr_precision = precision_score(y_test, y_pred, average='micro')\n",
"tr_recall = recall_score(y_test, y_pred, average='micro')\n",
"tr_f1 = f1_score(y_test, y_pred, average='micro')\n",
"\n",
"rf_classifer = RandomForestClassifier()\n",
"rf_classifer.fit(x_train, y_train)\n",
"y_pred = rf_classifer.predict(x_test)\n",
"rf_precision = precision_score(y_test, y_pred, average='micro')\n",
"rf_recall = recall_score(y_test, y_pred, average='micro')\n",
"rf_f1 = f1_score(y_test, y_pred, average='micro')\n",
"\n",
"score_df = pd.DataFrame(np.zeros((5,3)),index = ['LogisticRegression', 'SVM', 'GaussianNB', 'tree', 'RandomForest'], \\\n",
" columns = ['precision', 'recall', 'f1'])\n",
"score_df.loc['LogisticRegression'] = [lr_precision, lr_recall, lr_f1]\n",
"score_df.loc['SVM'] = [svm_precision, svm_recall, svm_f1]\n",
"score_df.loc['GaussianNB'] = [gn_precision, gn_recall, gn_f1]\n",
"score_df.loc['tree'] = [tr_precision, tr_recall, tr_f1]\n",
"score_df.loc['RandomForest'] = [rf_precision, rf_recall, rf_f1]\n",
"print(score_df)\n",
"#ax = score_df.plot.bar(title='type+length markov')\n",
"#fig = ax.get_figure()\n",
"#fig.savefig('../figure/type_length.svg')\n",
"#print(score_df.loc['RandomForest']) "
]
},
{
"cell_type": "code",
"execution_count": 174,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[ 0.83686527 0.72249169 0.65245721 0.71014108 0.63185015 0.69424787\n",
" 0.68489078 0.52464035 0.82587551 0.84851884]\n",
"[ 0.83686527 0.72249169 0.65245721 0.71014108 0.63185015 0.42307153\n",
" 0. 0.15176948 0. 0. ]\n"
]
}
],
"source": [
"\n",
"x_train = train_df.iloc[:,0:10].values.copy()\n",
"y_train = train_df['label'].values.copy()\n",
"x_test = test_df.iloc[:,0:15].values.copy()\n",
"y_test = test_df['label'].values.copy()\n",
"\n",
"x1_train = np.append(train_df.iloc[:,0:5].values.copy(), train_df.iloc[:,10:15].values.copy(), axis = 1)\n",
"y1_train = train_df['label'].values.copy()\n",
"\n",
"print(x_train[10])\n",
"print(x1_train[10])"
]
},
{
"cell_type": "code",
"execution_count": 175,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" precision recall f1\n",
"LogisticRegression 0.509336 0.509336 0.509336\n",
"SVM 0.501153 0.501153 0.501153\n",
"GaussianNB 0.413439 0.413439 0.413439\n",
"tree 0.624020 0.624020 0.624020\n",
"RandomForest 0.627593 0.627593 0.627593\n"
]
},
{
"data": {
"image/png": "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\nbmaWM/8frXR72wnhVkcAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1135ff390>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#type+length markov\n",
"x_train = train_df.iloc[:,0:10].values.copy()\n",
"y_train = train_df['label'].values.copy()\n",
"x_test = test_df.iloc[:,0:10].values.copy()\n",
"y_test = test_df['label'].values.copy()\n",
"\n",
"\n",
"# x_test = np.append(test_df.iloc[:,0:5].values.copy(), test_df.iloc[:,5:10].values.copy(), axis = 1)\n",
"# y_test = test_df['label'].values.copy()\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",
" for i in range(rows):\n",
" temp = max(proba[i])\n",
" if temp < 0.5:\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=None)\n",
" recall = recall_score(y_test1, y_pred1, average=None)\n",
" precision = precision_score(y_test1, y_pred1, average=None)\n",
" print(precision)\n",
" print(recall)\n",
" print(f1)\n",
" print(np.mean(precision))\n",
" print(np.mean(recall))\n",
" print(np.mean(f1))\n",
" print(str(len(y_test)) + \": \" + str(len(y_test1)) + \": \" + str(len(y_test1) / len(y_test)))\n",
" \n",
"\n",
"lr_classifer = LogisticRegression()\n",
"lr_classifer.fit(x_train, y_train)\n",
"y_pred = lr_classifer.predict(x_test)\n",
"lr_precision = precision_score(y_test, y_pred, average='micro')\n",
"lr_recall = recall_score(y_test, y_pred, average='micro')\n",
"lr_f1 = f1_score(y_test, y_pred, average='micro')\n",
"\n",
"svm_classifer = SVC()\n",
"svm_classifer.fit(x_train, y_train)\n",
"y_pred = svm_classifer.predict(x_test)\n",
"svm_precision = precision_score(y_test, y_pred, average='micro')\n",
"svm_recall = recall_score(y_test, y_pred, average='micro')\n",
"svm_f1 = f1_score(y_test, y_pred, average='micro')\n",
"\n",
"gn_classifer = GaussianNB()\n",
"gn_classifer.fit(x_train, y_train)\n",
"y_pred = gn_classifer.predict(x_test)\n",
"gn_precision = precision_score(y_test, y_pred, average='micro')\n",
"gn_recall = recall_score(y_test, y_pred, average='micro')\n",
"gn_f1 = f1_score(y_test, y_pred, average='micro')\n",
"\n",
"tr_classifer = tree.DecisionTreeClassifier()\n",
"tr_classifer.fit(x_train, y_train)\n",
"y_pred = tr_classifer.predict(x_test)\n",
"tr_precision = precision_score(y_test, y_pred, average='micro')\n",
"tr_recall = recall_score(y_test, y_pred, average='micro')\n",
"tr_f1 = f1_score(y_test, y_pred, average='micro')\n",
"\n",
"\n",
"rf_classifer = RandomForestClassifier()\n",
"rf_classifer.fit(x_train, y_train)\n",
"y_pred = rf_classifer.predict(x_test)\n",
"proba = rf_classifer.predict_proba(x_test)\n",
"#my_pred(y_pred, y_test, proba)\n",
"\n",
"\n",
"rf_precision = precision_score(y_test, y_pred, average='micro')\n",
"rf_recall = recall_score(y_test, y_pred, average='micro')\n",
"rf_f1 = f1_score(y_test, y_pred, average='micro')\n",
"score_df = pd.DataFrame(np.zeros((5,3)),index = ['LogisticRegression', 'SVM', 'GaussianNB', 'tree', 'RandomForest'], \\\n",
" columns = ['precision', 'recall', 'f1'])\n",
"score_df.loc['LogisticRegression'] = [lr_precision, lr_recall, lr_f1]\n",
"score_df.loc['SVM'] = [svm_precision, svm_recall, svm_f1]\n",
"score_df.loc['GaussianNB'] = [gn_precision, gn_recall, gn_f1]\n",
"score_df.loc['tree'] = [tr_precision, tr_recall, tr_f1]\n",
"score_df.loc['RandomForest'] = [rf_precision, rf_recall, rf_f1]\n",
"ax = score_df.plot.bar(title='type+length+burst markov')\n",
"fig = ax.get_figure()\n",
"print(score_df)\n",
"fig.savefig('type_length_burst.svg')"
]
},
{
"cell_type": "code",
"execution_count": 176,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" precision recall f1\n",
"LogisticRegression 0.811319 0.811319 0.811319\n",
"SVM 0.767865 0.767865 0.767865\n",
"GaussianNB 0.683956 0.683956 0.683956\n",
"tree 0.826418 0.826418 0.826418\n",
"RandomForest 0.850161 0.850161 0.850161\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1a1f919da0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#type+length+burst markov\n",
"x_train = train_df.iloc[:,0:15].values.copy()\n",
"y_train = train_df['label'].values.copy()\n",
"x_test = test_df.iloc[:,0:15].values.copy()\n",
"y_test = test_df['label'].values.copy()\n",
"\n",
"\n",
"# x_test = np.append(test_df.iloc[:,0:5].values.copy(), test_df.iloc[:,5:10].values.copy(), axis = 1)\n",
"# y_test = test_df['label'].values.copy()\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",
" for i in range(rows):\n",
" temp = max(proba[i])\n",
" if temp < 0.5:\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=None)\n",
" recall = recall_score(y_test1, y_pred1, average=None)\n",
" precision = precision_score(y_test1, y_pred1, average=None)\n",
" print(precision)\n",
" print(recall)\n",
" print(f1)\n",
" print(np.mean(precision))\n",
" print(np.mean(recall))\n",
" print(np.mean(f1))\n",
" print(str(len(y_test)) + \": \" + str(len(y_test1)) + \": \" + str(len(y_test1) / len(y_test)))\n",
" \n",
"\n",
"lr_classifer = LogisticRegression()\n",
"lr_classifer.fit(x_train, y_train)\n",
"y_pred = lr_classifer.predict(x_test)\n",
"lr_precision = precision_score(y_test, y_pred, average='micro')\n",
"lr_recall = recall_score(y_test, y_pred, average='micro')\n",
"lr_f1 = f1_score(y_test, y_pred, average='micro')\n",
"\n",
"svm_classifer = SVC()\n",
"svm_classifer.fit(x_train, y_train)\n",
"y_pred = svm_classifer.predict(x_test)\n",
"svm_precision = precision_score(y_test, y_pred, average='micro')\n",
"svm_recall = recall_score(y_test, y_pred, average='micro')\n",
"svm_f1 = f1_score(y_test, y_pred, average='micro')\n",
"\n",
"gn_classifer = GaussianNB()\n",
"gn_classifer.fit(x_train, y_train)\n",
"y_pred = gn_classifer.predict(x_test)\n",
"gn_precision = precision_score(y_test, y_pred, average='micro')\n",
"gn_recall = recall_score(y_test, y_pred, average='micro')\n",
"gn_f1 = f1_score(y_test, y_pred, average='micro')\n",
"\n",
"tr_classifer = tree.DecisionTreeClassifier()\n",
"tr_classifer.fit(x_train, y_train)\n",
"y_pred = tr_classifer.predict(x_test)\n",
"tr_precision = precision_score(y_test, y_pred, average='micro')\n",
"tr_recall = recall_score(y_test, y_pred, average='micro')\n",
"tr_f1 = f1_score(y_test, y_pred, average='micro')\n",
"\n",
"\n",
"rf_classifer = RandomForestClassifier()\n",
"rf_classifer.fit(x_train, y_train)\n",
"y_pred = rf_classifer.predict(x_test)\n",
"proba = rf_classifer.predict_proba(x_test)\n",
"#my_pred(y_pred, y_test, proba)\n",
"\n",
"\n",
"rf_precision = precision_score(y_test, y_pred, average='micro')\n",
"rf_recall = recall_score(y_test, y_pred, average='micro')\n",
"rf_f1 = f1_score(y_test, y_pred, average='micro')\n",
"score_df = pd.DataFrame(np.zeros((5,3)),index = ['LogisticRegression', 'SVM', 'GaussianNB', 'tree', 'RandomForest'], \\\n",
" columns = ['precision', 'recall', 'f1'])\n",
"score_df.loc['LogisticRegression'] = [lr_precision, lr_recall, lr_f1]\n",
"score_df.loc['SVM'] = [svm_precision, svm_recall, svm_f1]\n",
"score_df.loc['GaussianNB'] = [gn_precision, gn_recall, gn_f1]\n",
"score_df.loc['tree'] = [tr_precision, tr_recall, tr_f1]\n",
"score_df.loc['RandomForest'] = [rf_precision, rf_recall, rf_f1]\n",
"ax = score_df.plot.bar(title='type+length+burst markov')\n",
"fig = ax.get_figure()\n",
"print(score_df)\n",
"fig.savefig('type_length_burst.svg')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"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,
"nbformat_minor": 2
}