{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ " *排卵试纸机器学习算法验证*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**import moudle**" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd \n", "import seaborn as sns\n", "from IPython.display import display\n", "import matplotlib.pyplot as plt\n", "from mpl_toolkits.mplot3d import Axes3D\n", "\n", "%matplotlib inline\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**load data**" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "load data successful !!!!!\n" ] } ], "source": [ "try :\n", "# data_iphone6p_75_10 = pd.read_csv(\"20170912.pm.csv\")\n", "# data_iphone6p_1234 = pd.read_csv(\"20170920.pm.csv\")\n", "# data_iphone6p_5 = pd.read_csv(\"20170922.pm.csv\")\n", "# data_iphone6p_0 = pd.read_csv(\"20170925.am.csv\")\n", "# data_iphone6p_0_0 = pd.read_csv(\"20170925.pm.csv\")\n", "# data_iphone6p_246 = pd.read_csv(\"20171011.pm.csv\")\n", " \n", " data1 = pd.read_csv(\"./newData/10_25.csv\")\n", " data2 = pd.read_csv(\"./newData/5_10_25_50_70.csv\")\n", " data_test1 = pd.read_csv(\"./newData/test.csv\")\n", " data_test2 = pd.read_csv(\"./newData/nubia_test.csv\")\n", " \n", " print \"load data successful !!!!!\"\n", "except :\n", " print \"load data error !!!!!!!!!!\"" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "load data successful !!!!!\n" ] } ], "source": [ "try :\n", "# data_iphone6p_75_10 = pd.read_csv(\"20170912.pm.csv\")\n", "# data_iphone6p_1234 = pd.read_csv(\"20170920.pm.csv\")\n", "# data_iphone6p_5 = pd.read_csv(\"20170922.pm.csv\")\n", "# data_iphone6p_0 = pd.read_csv(\"20170925.am.csv\")\n", "# data_iphone6p_0_0 = pd.read_csv(\"20170925.pm.csv\")\n", "# data_iphone6p_246 = pd.read_csv(\"20171011.pm.csv\")\n", " \n", " data1 = pd.read_csv(\"./10_25.csv\")\n", " data2 = pd.read_csv(\"./0_5_10_50_70.csv\")\n", " data3 = pd.read_csv(\"./5_10_25_50_70.csv\")\n", " data4 = pd.read_csv(\"./25.csv\")\n", " data_test1 = pd.read_csv(\"./test.csv\")\n", " data_test2 = pd.read_csv(\"./nubia_test.csv\")\n", " \n", " print (\"load data successful !!!!!\")\n", "except :\n", " print (\"load data error !!!!!!!!!!\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 分析数据" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "load new data error !!!!!!!!!!\n" ] } ], "source": [ "try :\n", " data2020 = pd.read_csv(\"./ov_data_2020.csv\")\n", " data2019 = pd.read_csv(\"./ov_data_2019.csv\")\n", " print (\"load new data successful !!!!!\")\n", "except :\n", " print (\"load new data error !!!!!!!!!!\")" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
left_block_Rleft_block_Gleft_block_Bleft_block_Hleft_block_Sleft_block_Vleft_block_lleft_block_aleft_block_bleft_block_R_stddev...right_grayHistright_grayMaxright_grayMinwhite_grayValuewhite_grayStddevValuewhite_grayHistwhite_grayMaxwhite_grayMinwhiteBalanceindex
count9472.0000009472.0000009472.0000009472.0000009472.0000009472.0000009472.0000009472.0000009472.0000009472.000000...9472.0000009472.0000009472.0000009472.0000009472.0000009472.0000009472.0000009472.0000009472.0000009472.000000
mean177.537162154.988809160.795291173.65984036.343644177.787584168.331609136.974240127.6163438.358003...140.150549182.139147129.284628191.1976350.808594191.766892193.921875187.9849030.5000003.899071
std23.05590627.12024024.25757185.81673815.10320123.21155624.1829895.5393673.7474355.360384...21.65624821.95143120.72518223.0393981.81233323.59962723.14418024.4595490.5000262.263115
min112.00000093.00000092.0000002.0000000.000000112.000000106.000000124.000000117.0000000.000000...92.000000122.00000083.000000130.0000000.0000000.000000131.000000100.0000000.0000000.000000
25%166.000000140.000000147.000000116.00000025.000000166.000000155.750000133.000000125.0000003.000000...126.000000166.000000116.000000173.0000000.000000173.000000174.000000172.0000000.0000002.000000
50%173.000000152.000000155.000000222.00000035.000000174.000000166.000000138.000000127.0000008.000000...139.000000181.000000129.000000194.0000000.000000195.000000197.000000190.0000000.5000004.000000
75%187.000000162.000000170.000000234.00000049.000000187.000000174.000000142.000000130.00000012.000000...152.000000195.000000142.000000205.0000001.000000206.000000208.000000203.0000001.0000006.000000
max254.000000255.000000255.000000251.00000074.000000255.000000255.000000148.000000139.00000020.000000...254.000000255.000000228.000000255.00000014.000000254.000000255.000000255.0000001.0000007.000000
\n", "

8 rows × 152 columns

\n", "
" ], "text/plain": [ " left_block_R left_block_G left_block_B left_block_H left_block_S \\\n", "count 9472.000000 9472.000000 9472.000000 9472.000000 9472.000000 \n", "mean 177.537162 154.988809 160.795291 173.659840 36.343644 \n", "std 23.055906 27.120240 24.257571 85.816738 15.103201 \n", "min 112.000000 93.000000 92.000000 2.000000 0.000000 \n", "25% 166.000000 140.000000 147.000000 116.000000 25.000000 \n", "50% 173.000000 152.000000 155.000000 222.000000 35.000000 \n", "75% 187.000000 162.000000 170.000000 234.000000 49.000000 \n", "max 254.000000 255.000000 255.000000 251.000000 74.000000 \n", "\n", " left_block_V left_block_l left_block_a left_block_b \\\n", "count 9472.000000 9472.000000 9472.000000 9472.000000 \n", "mean 177.787584 168.331609 136.974240 127.616343 \n", "std 23.211556 24.182989 5.539367 3.747435 \n", "min 112.000000 106.000000 124.000000 117.000000 \n", "25% 166.000000 155.750000 133.000000 125.000000 \n", "50% 174.000000 166.000000 138.000000 127.000000 \n", "75% 187.000000 174.000000 142.000000 130.000000 \n", "max 255.000000 255.000000 148.000000 139.000000 \n", "\n", " left_block_R_stddev ... right_grayHist right_grayMax right_grayMin \\\n", "count 9472.000000 ... 9472.000000 9472.000000 9472.000000 \n", "mean 8.358003 ... 140.150549 182.139147 129.284628 \n", "std 5.360384 ... 21.656248 21.951431 20.725182 \n", "min 0.000000 ... 92.000000 122.000000 83.000000 \n", "25% 3.000000 ... 126.000000 166.000000 116.000000 \n", "50% 8.000000 ... 139.000000 181.000000 129.000000 \n", "75% 12.000000 ... 152.000000 195.000000 142.000000 \n", "max 20.000000 ... 254.000000 255.000000 228.000000 \n", "\n", " white_grayValue white_grayStddevValue white_grayHist white_grayMax \\\n", "count 9472.000000 9472.000000 9472.000000 9472.000000 \n", "mean 191.197635 0.808594 191.766892 193.921875 \n", "std 23.039398 1.812333 23.599627 23.144180 \n", "min 130.000000 0.000000 0.000000 131.000000 \n", "25% 173.000000 0.000000 173.000000 174.000000 \n", "50% 194.000000 0.000000 195.000000 197.000000 \n", "75% 205.000000 1.000000 206.000000 208.000000 \n", "max 255.000000 14.000000 254.000000 255.000000 \n", "\n", " white_grayMin whiteBalance index \n", "count 9472.000000 9472.000000 9472.000000 \n", "mean 187.984903 0.500000 3.899071 \n", "std 24.459549 0.500026 2.263115 \n", "min 100.000000 0.000000 0.000000 \n", "25% 172.000000 0.000000 2.000000 \n", "50% 190.000000 0.500000 4.000000 \n", "75% 203.000000 1.000000 6.000000 \n", "max 255.000000 1.000000 7.000000 \n", "\n", "[8 rows x 152 columns]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_test = data_test1.append(data_test2)\n", "data_test.describe()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
left_block_Rleft_block_Gleft_block_Bleft_block_Hleft_block_Sleft_block_Vleft_block_lleft_block_aleft_block_bleft_block_R_stddev...right_grayHistright_grayMaxright_grayMinwhite_grayValuewhite_grayStddevValuewhite_grayHistwhite_grayMaxwhite_grayMinwhiteBalanceindex
count219668.000000219668.000000219668.000000219668.000000219668.000000219668.000000219668.000000219668.000000219668.000000219668.000000...219668.000000219668.000000219668.000000219668.000000219668.000000219668.000000219668.000000219668.000000219668.000000219668.000000
mean179.667881155.290593161.699264179.54181338.023927179.740722168.910938137.786783127.54596010.123272...141.056098188.058220128.681497196.4212541.044790192.939877200.057787192.4498200.5000004.194229
std26.69143030.91959927.82663769.55544714.69733526.73845228.0932074.6434592.8353035.845276...26.99039025.47354326.35306425.6350390.75665234.90356925.00580926.0825080.5000012.465278
min101.00000082.00000090.0000007.0000000.000000101.00000095.000000124.000000121.0000000.000000...68.000000109.00000058.000000105.0000000.0000000.000000121.00000066.0000000.0000000.000000
25%159.000000130.000000140.000000145.00000027.000000159.000000146.000000134.000000125.0000004.000000...123.000000169.000000110.000000177.0000001.000000176.000000181.000000173.0000000.0000002.000000
50%178.000000153.000000160.000000214.00000040.000000178.000000167.000000140.000000128.00000011.000000...140.000000187.000000127.000000196.0000001.000000196.000000199.000000191.0000000.5000006.000000
75%197.000000175.000000179.000000232.00000049.000000197.000000188.000000141.000000129.00000015.000000...156.000000203.000000143.000000213.0000001.000000212.000000216.000000208.0000001.0000006.000000
max254.000000254.000000254.000000246.00000078.000000254.000000254.000000146.000000136.00000022.000000...254.000000255.000000221.000000255.00000022.000000254.000000255.000000255.0000001.0000007.000000
\n", "

8 rows × 152 columns

\n", "
" ], "text/plain": [ " left_block_R left_block_G left_block_B left_block_H \\\n", "count 219668.000000 219668.000000 219668.000000 219668.000000 \n", "mean 179.667881 155.290593 161.699264 179.541813 \n", "std 26.691430 30.919599 27.826637 69.555447 \n", "min 101.000000 82.000000 90.000000 7.000000 \n", "25% 159.000000 130.000000 140.000000 145.000000 \n", "50% 178.000000 153.000000 160.000000 214.000000 \n", "75% 197.000000 175.000000 179.000000 232.000000 \n", "max 254.000000 254.000000 254.000000 246.000000 \n", "\n", " left_block_S left_block_V left_block_l left_block_a \\\n", "count 219668.000000 219668.000000 219668.000000 219668.000000 \n", "mean 38.023927 179.740722 168.910938 137.786783 \n", "std 14.697335 26.738452 28.093207 4.643459 \n", "min 0.000000 101.000000 95.000000 124.000000 \n", "25% 27.000000 159.000000 146.000000 134.000000 \n", "50% 40.000000 178.000000 167.000000 140.000000 \n", "75% 49.000000 197.000000 188.000000 141.000000 \n", "max 78.000000 254.000000 254.000000 146.000000 \n", "\n", " left_block_b left_block_R_stddev ... right_grayHist \\\n", "count 219668.000000 219668.000000 ... 219668.000000 \n", "mean 127.545960 10.123272 ... 141.056098 \n", "std 2.835303 5.845276 ... 26.990390 \n", "min 121.000000 0.000000 ... 68.000000 \n", "25% 125.000000 4.000000 ... 123.000000 \n", "50% 128.000000 11.000000 ... 140.000000 \n", "75% 129.000000 15.000000 ... 156.000000 \n", "max 136.000000 22.000000 ... 254.000000 \n", "\n", " right_grayMax right_grayMin white_grayValue white_grayStddevValue \\\n", "count 219668.000000 219668.000000 219668.000000 219668.000000 \n", "mean 188.058220 128.681497 196.421254 1.044790 \n", "std 25.473543 26.353064 25.635039 0.756652 \n", "min 109.000000 58.000000 105.000000 0.000000 \n", "25% 169.000000 110.000000 177.000000 1.000000 \n", "50% 187.000000 127.000000 196.000000 1.000000 \n", "75% 203.000000 143.000000 213.000000 1.000000 \n", "max 255.000000 221.000000 255.000000 22.000000 \n", "\n", " white_grayHist white_grayMax white_grayMin whiteBalance \\\n", "count 219668.000000 219668.000000 219668.000000 219668.000000 \n", "mean 192.939877 200.057787 192.449820 0.500000 \n", "std 34.903569 25.005809 26.082508 0.500001 \n", "min 0.000000 121.000000 66.000000 0.000000 \n", "25% 176.000000 181.000000 173.000000 0.000000 \n", "50% 196.000000 199.000000 191.000000 0.500000 \n", "75% 212.000000 216.000000 208.000000 1.000000 \n", "max 254.000000 255.000000 255.000000 1.000000 \n", "\n", " index \n", "count 219668.000000 \n", "mean 4.194229 \n", "std 2.465278 \n", "min 0.000000 \n", "25% 2.000000 \n", "50% 6.000000 \n", "75% 6.000000 \n", "max 7.000000 \n", "\n", "[8 rows x 152 columns]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# data4 = data_iphone6p_246[data_iphone6p_246[\"whiteBalance\"] == 0]\n", "# data2= data_iphone6p_1234[data_iphone6p_1234[\"whiteBalance\"] == 0 ]\n", "# data1 = data_iphone6p_75_10[data_iphone6p_75_10[\"whiteBalance\"] == 0 ]\n", "# data3 = data_iphone6p_5[data_iphone6p_5[\"whiteBalance\"] == 0]\n", "# data0 = data_iphone6p_0[data_iphone6p_0[\"whiteBalance\"] == 0]\n", "# data0_0 = data_iphone6p_0_0[data_iphone6p_0_0[\"whiteBalance\"] == 0]\n", "\n", "\n", "#data_all = data2.append(data1[data1[\"index\"] == 5 ]).append(data3).append(data1[data1[\"index\"] == 7 ]).append(data1[data1[\"index\"] == 8 ]).append(data0).append(data0_0).append(data4)\n", "\n", "data1_0 = data1[data1[\"whiteBalance\"] == 1]\n", "data2_0 = data2[data2[\"whiteBalance\"] == 1]\n", "data_test_0 = data_test\n", "\n", "#data_all =data1_0.append(data2_0);\n", "data_all =data1.append(data2);\n", "#data_all = train_features_9\n", "whiteBlock_R_one =data_all[data_all[\"index\"] == 0 ][\"right_block_l_min\"]\n", "whiteBlock_G_one = data_all[data_all[\"index\"] == 0 ][\"right_block_a_min\"]\n", "whiteBlock_B_one = data_all[data_all[\"index\"] == 0 ][\"right_block_b_min\"]\n", "\n", "whiteBlock_R_two = data_all[data_all[\"index\"] == 1 ][\"right_block_l_min\"]\n", "whiteBlock_G_two = data_all[data_all[\"index\"] == 1 ][\"right_block_a_min\"]\n", "whiteBlock_B_two = data_all[data_all[\"index\"] == 1 ][\"right_block_b_min\"]\n", "\n", "whiteBlock_R_three = data_all[data_all[\"index\"] == 2 ][\"right_block_l_min\"]\n", "whiteBlock_G_three = data_all[data_all[\"index\"] == 2 ][\"right_block_a_min\"]\n", "whiteBlock_B_three = data_all[data_all[\"index\"] == 2 ][\"right_block_b_min\"]\n", "\n", "whiteBlock_R_four = data_all[data_all[\"index\"] == 4 ][\"right_block_l_min\"]\n", "whiteBlock_G_four = data_all[data_all[\"index\"] == 4 ][\"right_block_a_min\"]\n", "whiteBlock_B_four = data_all[data_all[\"index\"] == 4 ][\"right_block_b_min\"]\n", "\n", "\n", "whiteBlock_R_five = data_all[data_all[\"index\"] == 6 ][\"right_block_l_min\"]\n", "whiteBlock_G_five = data_all[data_all[\"index\"] == 6 ][\"right_block_a_min\"]\n", "whiteBlock_B_five = data_all[data_all[\"index\"] == 6 ][\"right_block_b_min\"]\n", "\n", "whiteBlock_R_six = data_all[data_all[\"index\"] == 7 ][\"right_block_l_min\"]\n", "whiteBlock_G_six = data_all[data_all[\"index\"] == 7 ][\"right_block_a_min\"]\n", "whiteBlock_B_six = data_all[data_all[\"index\"] == 7 ][\"right_block_b_min\"]\n", "\n", "data_all.describe()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "count 20060.000000\n", "mean 148.478714\n", "std 17.843052\n", "min 77.000000\n", "25% 135.000000\n", "50% 153.000000\n", "75% 160.000000\n", "max 189.000000\n", "Name: right_block_l_min, dtype: float64" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "whiteBlock_R_one.describe()\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAb4AAAEuCAYAAADx63eqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXeYHWXZ/z/TTt/dbJJN74UQSCghQCI1IKIICIg0lSAY\nhKAgMURpCmJABQUEjFQpL77oi4Vi+CG8KCKKEciLBCFACAmEkJ5tp8/M74/ZOWdOr3N2ds98risX\n7Ckzz8yZeb5z389dBF3XcXFxcXFxaRbE/h6Ai4uLi4tLI3GFz8XFxcWlqXCFz8XFxcWlqXCFz8XF\nxcWlqXCFz8XFxcWlqXCFz8XFxcWlqZCLvbltW7eb6+Di4uLiMuDo6GgRCr3nWnwuLi4uLk2FK3wu\nLi4uLk2FK3wuLi4uLk2FK3wuLi4uLk2FK3wuLi4uLk2FK3wuLi4uLk2FK3wuLi4uLk2FK3wuLi4u\nLk2FK3yDgEMPncvu3bszXlu58gmWLftm6u+HH36Ac845i4ULz+TLXz6N22+/hUQiwUcfbeLII+ex\nbdvWnO0uXHgGzz//XM3jW778Gn71q4dq3k5/88or/+Ib3/gaZ5xxMgsXnsk3v7mY115bDVDzeXzr\nrf9w1VXLSo4h328N0NPTw8UXX5D3O8XOf6HtlcPXv34+f/7zs1V91wkM9PG7VI8rfE3Ac889y1//\n+hfuvPM+Hnjgv7nnnofYuPF97rvvLsaMGctBB81j5conMr6zZs2/6e7u5tBDj+inUTuLv/3teX78\n4+V87WsX8cgjv+eBB/6br371Qr7//av5xz/+VvN53HPPvfjBD35c9fi6u7t48803qv6+i0szUbRk\nmcvgYMeO7WiaSiwWw+v14fV6ufTSZezatROAk08+lVtuuYmzzz4XQTCq/Dz++O/53OdOQZKknO09\n+eRjPPLIw0iSSFvbEK688hpGjhzFY4/9jkcffQRRlBg6dCiXXrqMCRMmZnz3tddWc8cdtxKLRZFl\nhUWLLmTevE+wcuUTPPnkY0SjEYLBENdcs5wf/OB7dHYa1sj8+YeyaNGFrFz5BM8++zSaprF9+zaG\nD+/gqquuZfjwDtaseZ0VK35GPB5nx47tHHjgwVx++XcBePHFF7j77hXouobP52fp0suZPn0PXn/9\nNVasuI1oNIIgiJx77vkccshhOcd8xx238s1vXsasWfukXps1azYXX/wt7rjjZ8yff2hF5/HVV1/m\n1lt/gt/vJxKJsHjxxdx++8089NBv2LVrFzfccC2bNn1Ia2sbw4YNY/LkqZx33tcAuPfeO3njjdfp\n6urkzDO/zOc/fxrXX38tsViMc845i3vvfShnf6+//n+cf/7/Eg73cuCB87jookuQ5czb//777+HZ\nZ59GkiTGj5/ApZcuY9iw4ezYsZ2bbrqBDRveRxRFPve5z/OFL5yR+l4ymeTaa69ClmWuvPKajO2u\nXPkEf/nLc8RiMT7++CNGjhzFKad8gd/+9jd88MFGTj/9i5x55peIRCLcdNMNfPDBRrq6uggEAlxz\nzQ8YOXIU5513Nqec8gVOOeULPPnkY/zmN7/irrsewOfzpfZzwQXncvrpZ7FgwScBWLHiNnRd5ytf\nWZR3uxMmTEp9d/Pmjzj77NN55pkX8v795JN/4He/exRd12htHcKSJcuYODH9fZeBhyt8g4SLL/4a\nopie7Lq6Opk2bToAn/nM8fz97y9w4onHMmPGTGbN2ofDDjuC/fabA8DBB38CXddZvfoV5syZS09P\nDy+88Dy/+tWjOft55523+cUvbuPee/+LkSNH8Zvf/IoHH7yPo446hl/96kF+8Ytf0t7ezsqVT3DF\nFUt56KHfpL7b2bmbq676Nj/84U/Ze+9ZvPfeOr7xjfO5++4HAVi//j0effRxgsEQ999/D2PGjOXm\nm+8gEonwwx9+n56eHgBef/017r33v5gwYSIrVtzGLbfcyA9+8GP+53/+m/PO+xpz5swlHA5z2mkn\n8tZbbzJixAiuu+5qbrvtTqZPn8Hzzz/HL35xO9/73g+4/vpr+elPb2f06DFs376N888/h6lTpzNq\n1KiMcX/wwcbU+bJy4IEHceWVl9HV1VXReTSOdx2/+c1jjBo1mldffTn1+i233MikSVP48Y9vYfv2\n7Zx33peYPHlq6v0xY8byrW99m7fffosLLjiXz33uFK644nucffbp3H//r/Lua+vWrdx++13IssyS\nJV/niSf+wMknn5p6/49/fJyXXvo7d9/9IH6/n3vvvZPly6/lpz+9jZ/85EeMHz+BG274CT09PVx4\n4bnMn38IAIlEkquv/g4dHR1ceumylOBb+fe/V/PAA4/Q0TGCs88+g2ef/RO33rqCdeve5Wtf+wqn\nn34WL730Ii0tLdx11/0A3Hjj9fz2t7/h0kuXce2113PxxV9j9OjR3HXXz7n99jszRA/ghBNO4qmn\nnmTBgk+iqip/+tNT/Oxnvyi63XJYvfoVnnrqj/z85/fg8/lYteolrrzyMv7rv/6nrO+7OBNX+AYJ\nP/vZnQwZMiT1t/Gk/b8AhEIhbr75DjZt+pDVq19m9epXuOyyb3LyyaeyePHFiKLISSd9nj/+8XHm\nzJnL00+vZP78Q2hvH5qzn1deWcVBB81n5EhDGE477SwAfv7zWznqqGNob28H4LjjTuDWW29i8+aP\nUt/9z3/WMG7cOPbeexYAU6ZMZfbsfVm9+hUEQWDq1GkEgyEADj54PpdddglbtnzM3LkHccEF3yAU\nMt478MB5KUvyxBNP5pxzjDFcddW1/OMfL/Lgg/exYcP7RKNRIpEwr7/+GpMnT2X69BkAHHHEURxx\nxFH84x9/Y8eOHVx++dKMY1y37p0M4TNJJpM5r8XjCQAEQajoPAKMGDGSUaNG57z+0ksvct99DwMw\nfPhwFiw4OuP9Y475NADTp88gHo/T29uTd/tWjj32OPx+f9//f4a///3FDOF76aW/c9xxJ6Q+84Uv\nnMmDDx5DIpHg5ZdXsXjxxYBxLVkfZu6442bC4TC//vUf8ooeGG5c83oZM2YMBx00D1EUGTt2HPF4\njGg0yoIFn2TMmHE8+ugjfPjhh6xe/UrKup46dRpf+coili27lCuvvCbDWjM56qhjuOOOW9mxYztv\nv/0WY8eOY/z4CYwfP6HgdsvhH//4Gx9++AEXXHBu6rWuri66ujppbW0rezsuzsIVvibg4YcfYJ99\n9mP27H0ZO3Ycxx9/Eq+99n8sXfqN1IT22c+eyJlnfp7e3h6eeOIPLF16ed5tSZKMdX6LxaJ8/PHH\naJpOtldU1zPFQtNym31omk4ymURRFAKBQOr1mTP35je/eZyXX17Fq6/+i0WLFnLDDTf1jUGyfF9D\nkoyl6sWLv8q0aXswb958jjrqGP7znzXouo4kSRmTsq7rrFv3LqqqMXHiJO6++4HUe9u3b2PIkPaM\nMba1DWHChImsXv0Khx9+ZMZ7r776MpMmTaalpaWi8wikRCYbSZLR9fS5EsXMpXjTlWgek15GDxXz\nHJmfz3Zz6rqW87eqqnnP36ZNH6Yeso499jh0HX70ox/wox/dnHffHo8n7/it/P73j/L447/j858/\njWOO+TStra0ZD03r17/H0KFDeeONNXz605/N+b7f72fBgqN55pn/x5o1r3PiiSeXtV0wzqP1fCcS\n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\nSUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "\n", "fig = plt.figure()\n", "#plt.rcParams[\"figure.figsize\"] = 20,20\n", "ax = Axes3D(fig)\n", "\n", "ax.set_xlim(0,255)\n", "ax.set_ylim(0,255)\n", "ax.set_zlim(0,255)\n", "ax.set_xlabel('H')\n", "ax.set_ylabel('S')\n", "ax.set_zlabel('V')\n", "ax.set_title('HSV colorspace OV right block max value')\n", "# ax.scatter(whiteBlock_R_zero, whiteBlock_G_zero, whiteBlock_B_zero,s = 15,c='y')\n", "ax.scatter(whiteBlock_R_one, whiteBlock_G_one, whiteBlock_B_one,s = 15,c='r')\n", "\n", "ax.scatter(whiteBlock_R_two, whiteBlock_G_two, whiteBlock_B_two,s = 15,c='g')\n", "ax.scatter(whiteBlock_R_three, whiteBlock_G_three, whiteBlock_B_three,s = 15,c='b')\n", "\n", "ax.scatter(whiteBlock_R_four, whiteBlock_G_four, whiteBlock_B_four,s = 15,c='y')\n", "ax.scatter(whiteBlock_R_five, whiteBlock_G_five, whiteBlock_B_five,s = 15,c='pink')\n", "ax.scatter(whiteBlock_R_six, whiteBlock_G_six, whiteBlock_B_six,s = 15,c='c')\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*把档位从数据中分割出来,去掉蛋白质的标记*" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": true }, "outputs": [], "source": [ "\n", "\n", "\n", "# label_1 = data3[\"index\"]\n", "# feature_1 = data3.drop(\"dateTime\",axis=1)\n", "# feature_1 = feature_1.drop(\"index\",axis=1)\n", "\n", "# feature_1 = feature_1.drop(\"right_block_R\",axis=1)\n", "# feature_1 = feature_1.drop(\"right_block_G\",axis=1)\n", "# feature_1 = feature_1.drop(\"right_block_B\",axis=1)\n", "# feature_1 = feature_1.drop(\"right_block_H\",axis=1)\n", "# feature_1 = feature_1.drop(\"right_block_S\",axis=1)\n", "# feature_1 = feature_1.drop(\"right_block_V\",axis=1)\n", "# feature_1 = feature_1.drop(\"right_block_l\",axis=1)\n", "# feature_1 = feature_1.drop(\"right_block_a\",axis=1)\n", "# feature_1 = feature_1.drop(\"right_block_b\",axis=1)\n", "\n", "\n", "# label_2 = data4[\"index\"]\n", "# feature_2 = data4.drop(\"dateTime\",axis=1)\n", "# feature_2 = feature_2.drop(\"index\",axis=1)\n", "\n", "# feature_2 = feature_2.drop(\"left_block_R\",axis=1)\n", "# feature_2 = feature_2.drop(\"left_block_G\",axis=1)\n", "# feature_2 = feature_2.drop(\"left_block_B\",axis=1)\n", "# feature_2 = feature_2.drop(\"left_block_H\",axis=1)\n", "# feature_2 = feature_2.drop(\"left_block_S\",axis=1)\n", "# feature_2 = feature_2.drop(\"left_block_V\",axis=1)\n", "# feature_2 = feature_2.drop(\"left_block_l\",axis=1)\n", "# feature_2 = feature_2.drop(\"left_block_a\",axis=1)\n", "# feature_2 = feature_2.drop(\"left_block_b\",axis=1)\n", "\n", "# label_3 = data3[\"index\"]\n", "# feature_3 = data3.drop(\"dateTime\",axis=1)\n", "# feature_3 = feature_3.drop(\"index\",axis=1)\n", "#sns.heatmap(feature_iphone6p)\n", "\n", "# feature_3.describe()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
left_block_Rleft_block_Gleft_block_Bleft_block_Hleft_block_Sleft_block_Vleft_block_lleft_block_aleft_block_bleft_block_R_stddev...right_grayValueright_grayStddevValueright_grayHistright_grayMaxright_grayMinwhite_grayValuewhite_grayStddevValuewhite_grayHistwhite_grayMaxwhite_grayMin
count9472.0000009472.0000009472.0000009472.0000009472.0000009472.0000009472.0000009472.0000009472.0000009472.000000...9472.0000009472.0000009472.0000009472.0000009472.0000009472.0000009472.0000009472.0000009472.0000009472.000000
mean177.537162154.988809160.795291173.65984036.343644177.787584168.331609136.974240127.6163438.358003...151.31936214.077914140.150549182.139147129.284628191.1976350.808594191.766892193.921875187.984903
std23.05590627.12024024.25757185.81673815.10320123.21155624.1829895.5393673.7474355.360384...20.2995443.76363921.65624821.95143120.72518223.0393981.81233323.59962723.14418024.459549
min112.00000093.00000092.0000002.0000000.000000112.000000106.000000124.000000117.0000000.000000...104.0000006.00000092.000000122.00000083.000000130.0000000.0000000.000000131.000000100.000000
25%166.000000140.000000147.000000116.00000025.000000166.000000155.750000133.000000125.0000003.000000...137.00000011.000000126.000000166.000000116.000000173.0000000.000000173.000000174.000000172.000000
50%173.000000152.000000155.000000222.00000035.000000174.000000166.000000138.000000127.0000008.000000...148.00000014.000000139.000000181.000000129.000000194.0000000.000000195.000000197.000000190.000000
75%187.000000162.000000170.000000234.00000049.000000187.000000174.000000142.000000130.00000012.000000...163.00000017.000000152.000000195.000000142.000000205.0000001.000000206.000000208.000000203.000000
max254.000000255.000000255.000000251.00000074.000000255.000000255.000000148.000000139.00000020.000000...245.00000027.000000254.000000255.000000228.000000255.00000014.000000254.000000255.000000255.000000
\n", "

8 rows × 150 columns

\n", "
" ], "text/plain": [ " left_block_R left_block_G left_block_B left_block_H left_block_S \\\n", "count 9472.000000 9472.000000 9472.000000 9472.000000 9472.000000 \n", "mean 177.537162 154.988809 160.795291 173.659840 36.343644 \n", "std 23.055906 27.120240 24.257571 85.816738 15.103201 \n", "min 112.000000 93.000000 92.000000 2.000000 0.000000 \n", "25% 166.000000 140.000000 147.000000 116.000000 25.000000 \n", "50% 173.000000 152.000000 155.000000 222.000000 35.000000 \n", "75% 187.000000 162.000000 170.000000 234.000000 49.000000 \n", "max 254.000000 255.000000 255.000000 251.000000 74.000000 \n", "\n", " left_block_V left_block_l left_block_a left_block_b \\\n", "count 9472.000000 9472.000000 9472.000000 9472.000000 \n", "mean 177.787584 168.331609 136.974240 127.616343 \n", "std 23.211556 24.182989 5.539367 3.747435 \n", "min 112.000000 106.000000 124.000000 117.000000 \n", "25% 166.000000 155.750000 133.000000 125.000000 \n", "50% 174.000000 166.000000 138.000000 127.000000 \n", "75% 187.000000 174.000000 142.000000 130.000000 \n", "max 255.000000 255.000000 148.000000 139.000000 \n", "\n", " left_block_R_stddev ... right_grayValue \\\n", "count 9472.000000 ... 9472.000000 \n", "mean 8.358003 ... 151.319362 \n", "std 5.360384 ... 20.299544 \n", "min 0.000000 ... 104.000000 \n", "25% 3.000000 ... 137.000000 \n", "50% 8.000000 ... 148.000000 \n", "75% 12.000000 ... 163.000000 \n", "max 20.000000 ... 245.000000 \n", "\n", " right_grayStddevValue right_grayHist right_grayMax right_grayMin \\\n", "count 9472.000000 9472.000000 9472.000000 9472.000000 \n", "mean 14.077914 140.150549 182.139147 129.284628 \n", "std 3.763639 21.656248 21.951431 20.725182 \n", "min 6.000000 92.000000 122.000000 83.000000 \n", "25% 11.000000 126.000000 166.000000 116.000000 \n", "50% 14.000000 139.000000 181.000000 129.000000 \n", "75% 17.000000 152.000000 195.000000 142.000000 \n", "max 27.000000 254.000000 255.000000 228.000000 \n", "\n", " white_grayValue white_grayStddevValue white_grayHist white_grayMax \\\n", "count 9472.000000 9472.000000 9472.000000 9472.000000 \n", "mean 191.197635 0.808594 191.766892 193.921875 \n", "std 23.039398 1.812333 23.599627 23.144180 \n", "min 130.000000 0.000000 0.000000 131.000000 \n", "25% 173.000000 0.000000 173.000000 174.000000 \n", "50% 194.000000 0.000000 195.000000 197.000000 \n", "75% 205.000000 1.000000 206.000000 208.000000 \n", "max 255.000000 14.000000 254.000000 255.000000 \n", "\n", " white_grayMin \n", "count 9472.000000 \n", "mean 187.984903 \n", "std 24.459549 \n", "min 100.000000 \n", "25% 172.000000 \n", "50% 190.000000 \n", "75% 203.000000 \n", "max 255.000000 \n", "\n", "[8 rows x 150 columns]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\n", "\n", "from sklearn.utils import shuffle\n", "\n", "\n", "data_shuffle = shuffle(data_all)\n", "#data_shuffle = data_all;\n", "train_labels = data_shuffle[\"index\"]\n", "train_features = data_shuffle.drop(\"dateTime\",axis=1)\n", "train_features = train_features.drop(\"index\",axis=1)\n", "train_features = train_features.drop(\"whiteBalance\",axis=1)\n", "\n", "data_shuffle_test = shuffle(data_test_0)\n", "test_labels = data_shuffle_test[\"index\"]\n", "test_features = data_shuffle_test.drop(\"dateTime\",axis=1)\n", "test_features = test_features.drop(\"index\",axis=1)\n", "test_features = test_features.drop(\"whiteBalance\",axis=1)\n", "\n", "\n", "# feature = feature.drop(\"left_block_H_hist\",axis=1)\n", "# feature = feature.drop(\"right_block_H_hist\",axis=1)\n", "# feature = feature.drop(\"whiteBlock_H_hist\",axis=1)\n", "test_features.describe()\n" ] }, { "cell_type": "code", "execution_count": 87, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
left_block_Rleft_block_Gleft_block_Bleft_block_lleft_block_aleft_block_bleft_block_R_stddevleft_block_G_stddevleft_block_B_stddevleft_block_l_stddev...lelf_right_G_minlelf_right_B_minlelf_right_l_minlelf_right_a_minlelf_right_b_minlelf_right_gray_valuelelf_right_gray_stddevlelf_right_gray_histlelf_right_gray_maxlelf_right_gray_min
count219668.000000219668.000000219668.000000219668.000000219668.000000219668.000000219668.000000219668.000000219668.000000219668.000000...219668.000000219668.000000219668.000000219668.000000219668.000000219668.000000219668.000000219668.000000219668.000000219668.000000
mean179.667881155.290593161.699264168.910938137.786783127.54596010.12327217.50857213.63772614.757001...8.8092173.4114035.210745-1.1100750.9693089.572245-0.83015729.4200572.0501625.112643
std26.69143030.91959927.82663728.0932074.6434592.8353035.8452768.6939907.2344097.682226...37.18181431.28390332.6666182.4586542.07879120.1567967.92929125.4371867.41147032.491219
min101.00000082.00000090.00000095.000000124.000000121.0000000.0000000.0000000.0000000.000000...-46.000000-48.000000-46.000000-11.000000-8.000000-23.000000-17.000000-78.000000-17.000000-46.000000
25%159.000000130.000000140.000000146.000000134.000000125.0000004.0000009.0000007.0000007.000000...-24.000000-24.000000-24.000000-3.000000-1.000000-7.000000-9.00000022.000000-4.000000-23.000000
50%178.000000153.000000160.000000167.000000140.000000128.00000011.00000020.00000016.00000017.000000...-11.000000-11.000000-11.000000-1.0000001.000000-1.0000003.00000033.0000000.000000-11.000000
75%197.000000175.000000179.000000188.000000141.000000129.00000015.00000025.00000020.00000021.000000...45.00000034.00000037.0000001.0000002.00000030.0000006.00000045.0000009.00000037.000000
max254.000000254.000000254.000000254.000000146.000000136.00000022.00000034.00000027.00000029.000000...79.00000067.00000067.0000007.00000011.00000051.00000012.00000088.00000024.00000068.000000
\n", "

8 rows × 140 columns

\n", "
" ], "text/plain": [ " left_block_R left_block_G left_block_B left_block_l \\\n", "count 219668.000000 219668.000000 219668.000000 219668.000000 \n", "mean 179.667881 155.290593 161.699264 168.910938 \n", "std 26.691430 30.919599 27.826637 28.093207 \n", "min 101.000000 82.000000 90.000000 95.000000 \n", "25% 159.000000 130.000000 140.000000 146.000000 \n", "50% 178.000000 153.000000 160.000000 167.000000 \n", "75% 197.000000 175.000000 179.000000 188.000000 \n", "max 254.000000 254.000000 254.000000 254.000000 \n", "\n", " left_block_a left_block_b left_block_R_stddev left_block_G_stddev \\\n", "count 219668.000000 219668.000000 219668.000000 219668.000000 \n", "mean 137.786783 127.545960 10.123272 17.508572 \n", "std 4.643459 2.835303 5.845276 8.693990 \n", "min 124.000000 121.000000 0.000000 0.000000 \n", "25% 134.000000 125.000000 4.000000 9.000000 \n", "50% 140.000000 128.000000 11.000000 20.000000 \n", "75% 141.000000 129.000000 15.000000 25.000000 \n", "max 146.000000 136.000000 22.000000 34.000000 \n", "\n", " left_block_B_stddev left_block_l_stddev ... \\\n", "count 219668.000000 219668.000000 ... \n", "mean 13.637726 14.757001 ... \n", "std 7.234409 7.682226 ... \n", "min 0.000000 0.000000 ... \n", "25% 7.000000 7.000000 ... \n", "50% 16.000000 17.000000 ... \n", "75% 20.000000 21.000000 ... \n", "max 27.000000 29.000000 ... \n", "\n", " lelf_right_G_min lelf_right_B_min lelf_right_l_min lelf_right_a_min \\\n", "count 219668.000000 219668.000000 219668.000000 219668.000000 \n", "mean 8.809217 3.411403 5.210745 -1.110075 \n", "std 37.181814 31.283903 32.666618 2.458654 \n", "min -46.000000 -48.000000 -46.000000 -11.000000 \n", "25% -24.000000 -24.000000 -24.000000 -3.000000 \n", "50% -11.000000 -11.000000 -11.000000 -1.000000 \n", "75% 45.000000 34.000000 37.000000 1.000000 \n", "max 79.000000 67.000000 67.000000 7.000000 \n", "\n", " lelf_right_b_min lelf_right_gray_value lelf_right_gray_stddev \\\n", "count 219668.000000 219668.000000 219668.000000 \n", "mean 0.969308 9.572245 -0.830157 \n", "std 2.078791 20.156796 7.929291 \n", "min -8.000000 -23.000000 -17.000000 \n", "25% -1.000000 -7.000000 -9.000000 \n", "50% 1.000000 -1.000000 3.000000 \n", "75% 2.000000 30.000000 6.000000 \n", "max 11.000000 51.000000 12.000000 \n", "\n", " lelf_right_gray_hist lelf_right_gray_max lelf_right_gray_min \n", "count 219668.000000 219668.000000 219668.000000 \n", "mean 29.420057 2.050162 5.112643 \n", "std 25.437186 7.411470 32.491219 \n", "min -78.000000 -17.000000 -46.000000 \n", "25% 22.000000 -4.000000 -23.000000 \n", "50% 33.000000 0.000000 -11.000000 \n", "75% 45.000000 9.000000 37.000000 \n", "max 88.000000 24.000000 68.000000 \n", "\n", "[8 rows x 140 columns]" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_features = train_features.drop(\"left_block_H\",axis=1)\n", "train_features = train_features.drop(\"left_block_S\",axis=1)\n", "train_features = train_features.drop(\"left_block_V\",axis=1)\n", "\n", "train_features = train_features.drop(\"right_block_H\",axis=1)\n", "train_features = train_features.drop(\"right_block_S\",axis=1)\n", "train_features = train_features.drop(\"right_block_V\",axis=1)\n", "\n", "train_features = train_features.drop(\"whiteBlock_H\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_S\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_V\",axis=1)\n", "\n", "\n", "train_features = train_features.drop(\"left_block_H_stddev\",axis=1)\n", "train_features = train_features.drop(\"left_block_S_stddev\",axis=1)\n", "train_features = train_features.drop(\"left_block_V_stddev\",axis=1)\n", "\n", "train_features = train_features.drop(\"right_block_H_stddev\",axis=1)\n", "train_features = train_features.drop(\"right_block_S_stddev\",axis=1)\n", "train_features = train_features.drop(\"right_block_V_stddev\",axis=1)\n", "\n", "train_features = train_features.drop(\"whiteBlock_H_stddev\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_S_stddev\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_V_stddev\",axis=1)\n", "\n", "train_features = train_features.drop(\"left_block_H_hist\",axis=1)\n", "train_features = train_features.drop(\"left_block_S_hist\",axis=1)\n", "train_features = train_features.drop(\"left_block_V_hist\",axis=1)\n", "\n", "train_features = train_features.drop(\"right_block_H_hist\",axis=1)\n", "train_features = train_features.drop(\"right_block_S_hist\",axis=1)\n", "train_features = train_features.drop(\"right_block_V_hist\",axis=1)\n", "\n", "train_features = train_features.drop(\"whiteBlock_H_hist\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_S_hist\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_V_hist\",axis=1)\n", "\n", "train_features = train_features.drop(\"left_block_H_max\",axis=1)\n", "train_features = train_features.drop(\"left_block_S_max\",axis=1)\n", "train_features = train_features.drop(\"left_block_V_max\",axis=1)\n", "\n", "train_features = train_features.drop(\"right_block_H_max\",axis=1)\n", "train_features = train_features.drop(\"right_block_S_max\",axis=1)\n", "train_features = train_features.drop(\"right_block_V_max\",axis=1)\n", "\n", "train_features = train_features.drop(\"whiteBlock_H_max\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_S_max\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_V_max\",axis=1)\n", "\n", "train_features = train_features.drop(\"left_block_H_min\",axis=1)\n", "train_features = train_features.drop(\"left_block_S_min\",axis=1)\n", "train_features = train_features.drop(\"left_block_V_min\",axis=1)\n", "\n", "train_features = train_features.drop(\"right_block_H_min\",axis=1)\n", "train_features = train_features.drop(\"right_block_S_min\",axis=1)\n", "train_features = train_features.drop(\"right_block_V_min\",axis=1)\n", "\n", "train_features = train_features.drop(\"whiteBlock_H_min\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_S_min\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_V_min\",axis=1)\n", "\n", "\n", "\n", "train_features['lelf_right_R'] = train_features['left_block_R'] - train_features['right_block_R']\n", "train_features['lelf_right_G'] = train_features['left_block_G'] - train_features['right_block_G']\n", "train_features['lelf_right_B'] = train_features['left_block_B'] - train_features['right_block_B']\n", "\n", "# train_features['lelf_right_H'] = train_features['left_block_H'] - train_features['right_block_H']\n", "# train_features['lelf_right_S'] = train_features['left_block_S'] - train_features['right_block_S']\n", "# train_features['lelf_right_V'] = train_features['left_block_V'] - train_features['right_block_V']\n", "\n", "train_features['lelf_right_l'] = train_features['left_block_l'] - train_features['right_block_l']\n", "train_features['lelf_right_a'] = train_features['left_block_a'] - train_features['right_block_a']\n", "train_features['lelf_right_b'] = train_features['left_block_b'] - train_features['right_block_b']\n", "\n", "train_features['lelf_right_R_stddev'] = train_features['left_block_R_stddev'] - train_features['right_block_R_stddev']\n", "train_features['lelf_right_G_stddev'] = train_features['left_block_G_stddev'] - train_features['right_block_G_stddev']\n", "train_features['lelf_right_B_stddev'] = train_features['left_block_B_stddev'] - train_features['right_block_B_stddev']\n", "\n", "# train_features['lelf_right_H_stddev'] = train_features['left_block_H_stddev'] - train_features['right_block_H_stddev']\n", "# train_features['lelf_right_S_stddev'] = train_features['left_block_S_stddev'] - train_features['right_block_S_stddev']\n", "# train_features['lelf_right_V_stddev'] = train_features['left_block_V_stddev'] - train_features['right_block_V_stddev']\n", "\n", "train_features['lelf_right_l_stddev'] = train_features['left_block_l_stddev'] - train_features['right_block_l_stddev']\n", "train_features['lelf_right_a_stddev'] = train_features['left_block_a_stddev'] - train_features['right_block_a_stddev']\n", "train_features['lelf_right_b_stddev'] = train_features['left_block_b_stddev'] - train_features['right_block_b_stddev']\n", "\n", "train_features['lelf_right_R_hist'] = train_features['left_block_R_hist'] - train_features['right_block_R_hist']\n", "train_features['lelf_right_G_hist'] = train_features['left_block_G_hist'] - train_features['right_block_G_hist']\n", "train_features['lelf_right_B_hist'] = train_features['left_block_B_hist'] - train_features['right_block_B_hist']\n", "\n", "# train_features['lelf_right_H_hist'] = train_features['left_block_H_hist'] - train_features['right_block_H_hist']\n", "# train_features['lelf_right_S_hist'] = train_features['left_block_S_hist'] - train_features['right_block_S_hist']\n", "# train_features['lelf_right_V_hist'] = train_features['left_block_V_hist'] - train_features['right_block_V_hist']\n", "\n", "train_features['lelf_right_l_hist'] = train_features['left_block_l_hist'] - train_features['right_block_l_hist']\n", "train_features['lelf_right_a_hist'] = train_features['left_block_a_hist'] - train_features['right_block_a_hist']\n", "train_features['lelf_right_b_hist'] = train_features['left_block_b_hist'] - train_features['right_block_b_hist']\n", "\n", "train_features['lelf_right_R_max'] = train_features['left_block_R_max'] - train_features['right_block_R_max']\n", "train_features['lelf_right_G_max'] = train_features['left_block_G_max'] - train_features['right_block_G_max']\n", "train_features['lelf_right_B_max'] = train_features['left_block_B_max'] - train_features['right_block_B_max']\n", "\n", "# train_features['lelf_right_H_max'] = train_features['left_block_H_max'] - train_features['right_block_H_max']\n", "# train_features['lelf_right_S_max'] = train_features['left_block_S_max'] - train_features['right_block_S_max']\n", "# train_features['lelf_right_V_max'] = train_features['left_block_V_max'] - train_features['right_block_V_max']\n", "\n", "train_features['lelf_right_l_max'] = train_features['left_block_l_max'] - train_features['right_block_l_max']\n", "train_features['lelf_right_a_max'] = train_features['left_block_a_max'] - train_features['right_block_a_max']\n", "train_features['lelf_right_b_max'] = train_features['left_block_b_max'] - train_features['right_block_b_max']\n", "\n", "\n", "\n", "train_features['lelf_right_R_min'] = train_features['left_block_R_min'] - train_features['right_block_R_min']\n", "train_features['lelf_right_G_min'] = train_features['left_block_G_min'] - train_features['right_block_G_min']\n", "train_features['lelf_right_B_min'] = train_features['left_block_B_min'] - train_features['right_block_B_min']\n", "\n", "# train_features['lelf_right_H_min'] = train_features['left_block_H_min'] - train_features['right_block_H_min']\n", "# train_features['lelf_right_S_min'] = train_features['left_block_S_min'] - train_features['right_block_S_min']\n", "# train_features['lelf_right_V_min'] = train_features['left_block_V_min'] - train_features['right_block_V_min']\n", "\n", "train_features['lelf_right_l_min'] = train_features['left_block_l_min'] - train_features['right_block_l_min']\n", "train_features['lelf_right_a_min'] = train_features['left_block_a_min'] - train_features['right_block_a_min']\n", "train_features['lelf_right_b_min'] = train_features['left_block_b_min'] - train_features['right_block_b_min']\n", "\n", "train_features['lelf_right_gray_value'] = train_features['left_grayValue'] - train_features['right_grayValue']\n", "train_features['lelf_right_gray_stddev'] = train_features['left_grayStddevValue'] - train_features['right_grayStddevValue']\n", "train_features['lelf_right_gray_hist'] = train_features['left_grayHist'] - train_features['right_grayHist']\n", "train_features['lelf_right_gray_max'] = train_features['left_grayMax'] - train_features['right_grayMax']\n", "train_features['lelf_right_gray_min'] = train_features['left_grayMin'] - train_features['right_grayMin']\n", "train_features.describe()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
lelf_right_Rlelf_right_Glelf_right_Blelf_right_Hlelf_right_Slelf_right_Vlelf_right_llelf_right_alelf_right_blelf_right_R_stddev...lelf_right_V_minlelf_right_l_minlelf_right_a_minlelf_right_b_minlelf_right_gray_valuelelf_right_gray_stddevlelf_right_gray_histlelf_right_gray_maxlelf_right_gray_minindex
count219668.000000219668.000000219668.00000219668.000000219668.000000219668.000000219668.000000219668.000000219668.000000219668.000000...219668.000000219668.000000219668.000000219668.000000219668.000000219668.000000219668.000000219668.000000219668.000000219668.000000
mean3.54806812.8542948.55517-39.083817-12.4518463.6152289.708856-4.3216900.8129220.675670...-1.4125095.210745-1.1100750.9693089.572245-0.83015729.4200572.0501625.1126434.194229
std13.66680323.86320718.7530862.91389417.27578713.75240620.0855355.1928791.2828086.162921...24.53489332.6666182.4586542.07879120.1567967.92929125.4371867.41147032.4912192.465278
min-22.000000-24.000000-23.00000-228.000000-54.000000-22.000000-23.000000-17.000000-3.000000-13.000000...-47.000000-46.000000-11.000000-8.000000-23.000000-17.000000-78.000000-17.000000-46.0000000.000000
25%-8.000000-8.000000-7.00000-76.000000-29.000000-8.000000-7.000000-9.0000000.000000-5.000000...-23.000000-24.000000-3.000000-1.000000-7.000000-9.00000022.000000-4.000000-23.0000002.000000
50%-2.0000000.000000-1.00000-4.000000-3.000000-2.000000-1.000000-2.0000001.0000003.000000...-10.000000-11.000000-1.0000001.000000-1.0000003.00000033.0000000.000000-11.0000006.000000
75%17.00000037.00000027.000001.0000003.00000017.00000030.0000000.0000002.0000006.000000...23.00000037.0000001.0000002.00000030.0000006.00000045.0000009.00000037.0000006.000000
max36.00000061.00000051.0000064.00000014.00000036.00000050.0000005.0000006.00000012.000000...51.00000067.0000007.00000011.00000051.00000012.00000088.00000024.00000068.0000007.000000
\n", "

8 rows × 51 columns

\n", "
" ], "text/plain": [ " lelf_right_R lelf_right_G lelf_right_B lelf_right_H \\\n", "count 219668.000000 219668.000000 219668.00000 219668.000000 \n", "mean 3.548068 12.854294 8.55517 -39.083817 \n", "std 13.666803 23.863207 18.75308 62.913894 \n", "min -22.000000 -24.000000 -23.00000 -228.000000 \n", "25% -8.000000 -8.000000 -7.00000 -76.000000 \n", "50% -2.000000 0.000000 -1.00000 -4.000000 \n", "75% 17.000000 37.000000 27.00000 1.000000 \n", "max 36.000000 61.000000 51.00000 64.000000 \n", "\n", " lelf_right_S lelf_right_V lelf_right_l lelf_right_a \\\n", "count 219668.000000 219668.000000 219668.000000 219668.000000 \n", "mean -12.451846 3.615228 9.708856 -4.321690 \n", "std 17.275787 13.752406 20.085535 5.192879 \n", "min -54.000000 -22.000000 -23.000000 -17.000000 \n", "25% -29.000000 -8.000000 -7.000000 -9.000000 \n", "50% -3.000000 -2.000000 -1.000000 -2.000000 \n", "75% 3.000000 17.000000 30.000000 0.000000 \n", "max 14.000000 36.000000 50.000000 5.000000 \n", "\n", " lelf_right_b lelf_right_R_stddev ... lelf_right_V_min \\\n", "count 219668.000000 219668.000000 ... 219668.000000 \n", "mean 0.812922 0.675670 ... -1.412509 \n", "std 1.282808 6.162921 ... 24.534893 \n", "min -3.000000 -13.000000 ... -47.000000 \n", "25% 0.000000 -5.000000 ... -23.000000 \n", "50% 1.000000 3.000000 ... -10.000000 \n", "75% 2.000000 6.000000 ... 23.000000 \n", "max 6.000000 12.000000 ... 51.000000 \n", "\n", " lelf_right_l_min lelf_right_a_min lelf_right_b_min \\\n", "count 219668.000000 219668.000000 219668.000000 \n", "mean 5.210745 -1.110075 0.969308 \n", "std 32.666618 2.458654 2.078791 \n", "min -46.000000 -11.000000 -8.000000 \n", "25% -24.000000 -3.000000 -1.000000 \n", "50% -11.000000 -1.000000 1.000000 \n", "75% 37.000000 1.000000 2.000000 \n", "max 67.000000 7.000000 11.000000 \n", "\n", " lelf_right_gray_value lelf_right_gray_stddev lelf_right_gray_hist \\\n", "count 219668.000000 219668.000000 219668.000000 \n", "mean 9.572245 -0.830157 29.420057 \n", "std 20.156796 7.929291 25.437186 \n", "min -23.000000 -17.000000 -78.000000 \n", "25% -7.000000 -9.000000 22.000000 \n", "50% -1.000000 3.000000 33.000000 \n", "75% 30.000000 6.000000 45.000000 \n", "max 51.000000 12.000000 88.000000 \n", "\n", " lelf_right_gray_max lelf_right_gray_min index \n", "count 219668.000000 219668.000000 219668.000000 \n", "mean 2.050162 5.112643 4.194229 \n", "std 7.411470 32.491219 2.465278 \n", "min -17.000000 -46.000000 0.000000 \n", "25% -4.000000 -23.000000 2.000000 \n", "50% 0.000000 -11.000000 6.000000 \n", "75% 9.000000 37.000000 6.000000 \n", "max 24.000000 68.000000 7.000000 \n", "\n", "[8 rows x 51 columns]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_features_9 = pd.DataFrame()\n", "train_features_9['lelf_right_R'] = train_features['left_block_R'] - train_features['right_block_R']\n", "train_features_9['lelf_right_G'] = train_features['left_block_G'] - train_features['right_block_G']\n", "train_features_9['lelf_right_B'] = train_features['left_block_B'] - train_features['right_block_B']\n", "\n", "train_features_9['lelf_right_H'] = train_features['left_block_H'] - train_features['right_block_H']\n", "train_features_9['lelf_right_S'] = train_features['left_block_S'] - train_features['right_block_S']\n", "train_features_9['lelf_right_V'] = train_features['left_block_V'] - train_features['right_block_V']\n", "\n", "train_features_9['lelf_right_l'] = train_features['left_block_l'] - train_features['right_block_l']\n", "train_features_9['lelf_right_a'] = train_features['left_block_a'] - train_features['right_block_a']\n", "train_features_9['lelf_right_b'] = train_features['left_block_b'] - train_features['right_block_b']\n", "\n", "train_features_9['lelf_right_R_stddev'] = train_features['left_block_R_stddev'] - train_features['right_block_R_stddev']\n", "train_features_9['lelf_right_G_stddev'] = train_features['left_block_G_stddev'] - train_features['right_block_G_stddev']\n", "train_features_9['lelf_right_B_stddev'] = train_features['left_block_B_stddev'] - train_features['right_block_B_stddev']\n", "\n", "train_features_9['lelf_right_H_stddev'] = train_features['left_block_H_stddev'] - train_features['right_block_H_stddev']\n", "train_features_9['lelf_right_S_stddev'] = train_features['left_block_S_stddev'] - train_features['right_block_S_stddev']\n", "train_features_9['lelf_right_V_stddev'] = train_features['left_block_V_stddev'] - train_features['right_block_V_stddev']\n", "\n", "train_features_9['lelf_right_l_stddev'] = train_features['left_block_l_stddev'] - train_features['right_block_l_stddev']\n", "train_features_9['lelf_right_a_stddev'] = train_features['left_block_a_stddev'] - train_features['right_block_a_stddev']\n", "train_features_9['lelf_right_b_stddev'] = train_features['left_block_b_stddev'] - train_features['right_block_b_stddev']\n", "\n", "train_features_9['lelf_right_R_hist'] = train_features['left_block_R_hist'] - train_features['right_block_R_hist']\n", "train_features_9['lelf_right_G_hist'] = train_features['left_block_G_hist'] - train_features['right_block_G_hist']\n", "train_features_9['lelf_right_B_hist'] = train_features['left_block_B_hist'] - train_features['right_block_B_hist']\n", "\n", "train_features_9['lelf_right_H_hist'] = train_features['left_block_H_hist'] - train_features['right_block_H_hist']\n", "train_features_9['lelf_right_S_hist'] = train_features['left_block_S_hist'] - train_features['right_block_S_hist']\n", "train_features_9['lelf_right_V_hist'] = train_features['left_block_V_hist'] - train_features['right_block_V_hist']\n", "\n", "train_features_9['lelf_right_l_hist'] = train_features['left_block_l_hist'] - train_features['right_block_l_hist']\n", "train_features_9['lelf_right_a_hist'] = train_features['left_block_a_hist'] - train_features['right_block_a_hist']\n", "train_features_9['lelf_right_b_hist'] = train_features['left_block_b_hist'] - train_features['right_block_b_hist']\n", "\n", "train_features_9['lelf_right_R_max'] = train_features['left_block_R_max'] - train_features['right_block_R_max']\n", "train_features_9['lelf_right_G_max'] = train_features['left_block_G_max'] - train_features['right_block_G_max']\n", "train_features_9['lelf_right_B_max'] = train_features['left_block_B_max'] - train_features['right_block_B_max']\n", "\n", "train_features_9['lelf_right_H_max'] = train_features['left_block_H_max'] - train_features['right_block_H_max']\n", "train_features_9['lelf_right_S_max'] = train_features['left_block_S_max'] - train_features['right_block_S_max']\n", "train_features_9['lelf_right_V_max'] = train_features['left_block_V_max'] - train_features['right_block_V_max']\n", "\n", "train_features_9['lelf_right_l_max'] = train_features['left_block_l_max'] - train_features['right_block_l_max']\n", "train_features_9['lelf_right_a_max'] = train_features['left_block_a_max'] - train_features['right_block_a_max']\n", "train_features_9['lelf_right_b_max'] = train_features['left_block_b_max'] - train_features['right_block_b_max']\n", "\n", "train_features_9['lelf_right_R_min'] = train_features['left_block_R_min'] - train_features['right_block_R_min']\n", "train_features_9['lelf_right_G_min'] = train_features['left_block_G_min'] - train_features['right_block_G_min']\n", "train_features_9['lelf_right_B_min'] = train_features['left_block_B_min'] - train_features['right_block_B_min']\n", "\n", "train_features_9['lelf_right_H_min'] = train_features['left_block_H_min'] - train_features['right_block_H_min']\n", "train_features_9['lelf_right_S_min'] = train_features['left_block_S_min'] - train_features['right_block_S_min']\n", "train_features_9['lelf_right_V_min'] = train_features['left_block_V_min'] - train_features['right_block_V_min']\n", "\n", "train_features_9['lelf_right_l_min'] = train_features['left_block_l_min'] - train_features['right_block_l_min']\n", "train_features_9['lelf_right_a_min'] = train_features['left_block_a_min'] - train_features['right_block_a_min']\n", "train_features_9['lelf_right_b_min'] = train_features['left_block_b_min'] - train_features['right_block_b_min']\n", "\n", "# train_features_9['left_grayValue']= train_features['left_grayValue'];\n", "# train_features_9['left_grayStddevValue']= train_features['left_grayStddevValue'];\n", "# train_features_9['left_grayHist']= train_features['left_grayHist'];\n", "# train_features_9['left_grayMax']= train_features['left_grayMax'];\n", "# train_features_9['left_grayMin']= train_features['left_grayMin'];\n", "\n", "# train_features_9['right_grayValue']= train_features['right_grayValue'];\n", "# train_features_9['right_grayStddevValue']= train_features['right_grayStddevValue'];\n", "# train_features_9['right_grayHist']= train_features['right_grayHist'];\n", "# train_features_9['right_grayMax']= train_features['right_grayMax'];\n", "# train_features_9['right_grayMin']= train_features['right_grayMin'];\n", "\n", "# train_features_9['lelf_R_stddev'] = train_features['left_block_R_stddev'] \n", "# train_features_9['lelf_G_stddev'] = train_features['left_block_G_stddev'] \n", "# train_features_9['lelf_B_stddev'] = train_features['left_block_B_stddev'] \n", "\n", "# train_features_9['left_block_R_min'] = train_features['left_block_R_min'] \n", "# train_features_9['left_block_G_min'] = train_features['left_block_G_min'] \n", "# train_features_9['left_block_B_min'] = train_features['left_block_B_min'] \n", "\n", "\n", "train_features_9['lelf_right_gray_value'] = train_features['left_grayValue'] - train_features['right_grayValue']\n", "train_features_9['lelf_right_gray_stddev'] = train_features['left_grayStddevValue'] - train_features['right_grayStddevValue']\n", "train_features_9['lelf_right_gray_hist'] = train_features['left_grayHist'] - train_features['right_grayHist']\n", "train_features_9['lelf_right_gray_max'] = train_features['left_grayMax'] - train_features['right_grayMax']\n", "train_features_9['lelf_right_gray_min'] = train_features['left_grayMin'] - train_features['right_grayMin']\n", "train_features_9['index'] = train_labels\n", "train_features_9.describe()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**去掉左边块的方差和白块和右边块的特征**" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
left_block_Rleft_block_Gleft_block_Bleft_block_R_histleft_block_G_histleft_block_B_histleft_block_R_maxleft_block_G_maxleft_block_B_maxright_block_Rright_block_Gright_block_Bright_block_R_histright_block_G_histright_block_B_histright_block_R_maxright_block_G_maxright_block_B_max
count151086.000000151086.000000151086.000000151086.000000151086.000000151086.000000151086.000000151086.000000151086.000000151086.000000151086.000000151086.000000151086.000000151086.000000151086.000000151086.000000151086.000000151086.000000
mean178.697470149.211462156.498504184.695405155.233132163.526025199.778027182.282382182.766180175.436182134.494487146.433846171.109646122.180043137.949731199.220391176.936189178.925115
std24.04650531.72936828.74144323.74023335.58419729.30519419.17407721.95309420.30443919.89415419.78433221.17715221.05993123.46596523.95993918.23906418.64065818.174246
min15.00000067.00000036.00000013.00000030.00000036.00000031.00000087.00000045.000000110.00000076.00000078.000000108.00000065.00000069.000000129.000000109.000000106.000000
25%164.000000124.000000135.000000171.000000132.000000145.000000192.000000171.000000171.000000165.000000123.000000136.000000159.000000105.000000125.000000192.000000168.000000170.000000
50%180.000000147.000000158.000000189.000000161.000000168.000000201.000000182.000000184.000000178.000000136.000000149.000000173.000000123.000000140.000000199.000000176.000000180.000000
75%194.000000173.000000177.000000198.000000181.000000183.000000209.000000195.000000195.000000187.000000148.000000159.000000185.000000138.000000154.000000208.000000187.000000189.000000
max253.000000235.000000244.000000254.000000254.000000254.000000255.000000255.000000255.000000253.000000220.000000226.000000254.000000233.000000232.000000255.000000255.000000254.000000
\n", "
" ], "text/plain": [ " left_block_R left_block_G left_block_B left_block_R_hist \\\n", "count 151086.000000 151086.000000 151086.000000 151086.000000 \n", "mean 178.697470 149.211462 156.498504 184.695405 \n", "std 24.046505 31.729368 28.741443 23.740233 \n", "min 15.000000 67.000000 36.000000 13.000000 \n", "25% 164.000000 124.000000 135.000000 171.000000 \n", "50% 180.000000 147.000000 158.000000 189.000000 \n", "75% 194.000000 173.000000 177.000000 198.000000 \n", "max 253.000000 235.000000 244.000000 254.000000 \n", "\n", " left_block_G_hist left_block_B_hist left_block_R_max \\\n", "count 151086.000000 151086.000000 151086.000000 \n", "mean 155.233132 163.526025 199.778027 \n", "std 35.584197 29.305194 19.174077 \n", "min 30.000000 36.000000 31.000000 \n", "25% 132.000000 145.000000 192.000000 \n", "50% 161.000000 168.000000 201.000000 \n", "75% 181.000000 183.000000 209.000000 \n", "max 254.000000 254.000000 255.000000 \n", "\n", " left_block_G_max left_block_B_max right_block_R right_block_G \\\n", "count 151086.000000 151086.000000 151086.000000 151086.000000 \n", "mean 182.282382 182.766180 175.436182 134.494487 \n", "std 21.953094 20.304439 19.894154 19.784332 \n", "min 87.000000 45.000000 110.000000 76.000000 \n", "25% 171.000000 171.000000 165.000000 123.000000 \n", "50% 182.000000 184.000000 178.000000 136.000000 \n", "75% 195.000000 195.000000 187.000000 148.000000 \n", "max 255.000000 255.000000 253.000000 220.000000 \n", "\n", " right_block_B right_block_R_hist right_block_G_hist \\\n", "count 151086.000000 151086.000000 151086.000000 \n", "mean 146.433846 171.109646 122.180043 \n", "std 21.177152 21.059931 23.465965 \n", "min 78.000000 108.000000 65.000000 \n", "25% 136.000000 159.000000 105.000000 \n", "50% 149.000000 173.000000 123.000000 \n", "75% 159.000000 185.000000 138.000000 \n", "max 226.000000 254.000000 233.000000 \n", "\n", " right_block_B_hist right_block_R_max right_block_G_max \\\n", "count 151086.000000 151086.000000 151086.000000 \n", "mean 137.949731 199.220391 176.936189 \n", "std 23.959939 18.239064 18.640658 \n", "min 69.000000 129.000000 109.000000 \n", "25% 125.000000 192.000000 168.000000 \n", "50% 140.000000 199.000000 176.000000 \n", "75% 154.000000 208.000000 187.000000 \n", "max 232.000000 255.000000 255.000000 \n", "\n", " right_block_B_max \n", "count 151086.000000 \n", "mean 178.925115 \n", "std 18.174246 \n", "min 106.000000 \n", "25% 170.000000 \n", "50% 180.000000 \n", "75% 189.000000 \n", "max 254.000000 " ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# train_features = train_features.drop(\"left_block_R\",axis=1)\n", "# train_features = train_features.drop(\"left_block_G\",axis=1)\n", "# train_features = train_features.drop(\"left_block_B\",axis=1)\n", "\n", "# train_features = train_features.drop(\"left_block_R_hist\",axis=1)\n", "# train_features = train_features.drop(\"left_block_G_hist\",axis=1)\n", "# train_features = train_features.drop(\"left_block_B_hist\",axis=1)\n", "\n", "train_features = train_features.drop(\"left_block_R_stddev\",axis=1)\n", "train_features = train_features.drop(\"left_block_G_stddev\",axis=1)\n", "train_features = train_features.drop(\"left_block_B_stddev\",axis=1)\n", "\n", "# train_features = train_features.drop(\"left_block_R_max\",axis=1)\n", "# train_features = train_features.drop(\"left_block_G_max\",axis=1)\n", "# train_features = train_features.drop(\"left_block_B_max\",axis=1)\n", "\n", "train_features = train_features.drop(\"left_block_H\",axis=1)\n", "train_features = train_features.drop(\"left_block_S\",axis=1)\n", "train_features = train_features.drop(\"left_block_V\",axis=1)\n", "\n", "train_features = train_features.drop(\"left_block_H_stddev\",axis=1)\n", "train_features = train_features.drop(\"left_block_S_stddev\",axis=1)\n", "train_features = train_features.drop(\"left_block_V_stddev\",axis=1)\n", "\n", "train_features = train_features.drop(\"left_block_H_hist\",axis=1)\n", "train_features = train_features.drop(\"left_block_S_hist\",axis=1)\n", "train_features = train_features.drop(\"left_block_V_hist\",axis=1)\n", "\n", "train_features = train_features.drop(\"left_block_H_max\",axis=1)\n", "train_features = train_features.drop(\"left_block_S_max\",axis=1)\n", "train_features = train_features.drop(\"left_block_V_max\",axis=1)\n", "\n", "train_features = train_features.drop(\"left_block_l\",axis=1)\n", "train_features = train_features.drop(\"left_block_a\",axis=1)\n", "train_features = train_features.drop(\"left_block_b\",axis=1)\n", "\n", "train_features = train_features.drop(\"left_block_l_stddev\",axis=1)\n", "train_features = train_features.drop(\"left_block_a_stddev\",axis=1)\n", "train_features = train_features.drop(\"left_block_b_stddev\",axis=1)\n", "\n", "train_features = train_features.drop(\"left_block_l_hist\",axis=1)\n", "train_features = train_features.drop(\"left_block_a_hist\",axis=1)\n", "train_features = train_features.drop(\"left_block_b_hist\",axis=1)\n", "\n", "train_features = train_features.drop(\"left_block_l_max\",axis=1)\n", "train_features = train_features.drop(\"left_block_a_max\",axis=1)\n", "train_features = train_features.drop(\"left_block_b_max\",axis=1)\n", "##################################################################\n", "\n", "# train_features = train_features.drop(\"right_block_R\",axis=1)\n", "# train_features = train_features.drop(\"right_block_G\",axis=1)\n", "# train_features = train_features.drop(\"right_block_B\",axis=1)\n", "\n", "train_features = train_features.drop(\"right_block_R_stddev\",axis=1)\n", "train_features = train_features.drop(\"right_block_G_stddev\",axis=1)\n", "train_features = train_features.drop(\"right_block_B_stddev\",axis=1)\n", "\n", "# train_features = train_features.drop(\"right_block_R_hist\",axis=1)\n", "# train_features = train_features.drop(\"right_block_G_hist\",axis=1)\n", "# train_features = train_features.drop(\"right_block_B_hist\",axis=1)\n", "\n", "# train_features = train_features.drop(\"right_block_R_max\",axis=1)\n", "# train_features = train_features.drop(\"right_block_G_max\",axis=1)\n", "# train_features = train_features.drop(\"right_block_B_max\",axis=1)\n", "\n", "train_features = train_features.drop(\"right_block_H\",axis=1)\n", "train_features = train_features.drop(\"right_block_S\",axis=1)\n", "train_features = train_features.drop(\"right_block_V\",axis=1)\n", "\n", "train_features = train_features.drop(\"right_block_H_stddev\",axis=1)\n", "train_features = train_features.drop(\"right_block_S_stddev\",axis=1)\n", "train_features = train_features.drop(\"right_block_V_stddev\",axis=1)\n", "\n", "train_features = train_features.drop(\"right_block_H_hist\",axis=1)\n", "train_features = train_features.drop(\"right_block_S_hist\",axis=1)\n", "train_features = train_features.drop(\"right_block_V_hist\",axis=1)\n", "\n", "train_features = train_features.drop(\"right_block_H_max\",axis=1)\n", "train_features = train_features.drop(\"right_block_S_max\",axis=1)\n", "train_features = train_features.drop(\"right_block_V_max\",axis=1)\n", "\n", "train_features = train_features.drop(\"right_block_l\",axis=1)\n", "train_features = train_features.drop(\"right_block_a\",axis=1)\n", "train_features = train_features.drop(\"right_block_b\",axis=1)\n", "\n", "train_features = train_features.drop(\"right_block_l_stddev\",axis=1)\n", "train_features = train_features.drop(\"right_block_a_stddev\",axis=1)\n", "train_features = train_features.drop(\"right_block_b_stddev\",axis=1)\n", "\n", "train_features = train_features.drop(\"right_block_l_hist\",axis=1)\n", "train_features = train_features.drop(\"right_block_a_hist\",axis=1)\n", "train_features = train_features.drop(\"right_block_b_hist\",axis=1)\n", "\n", "train_features = train_features.drop(\"right_block_l_max\",axis=1)\n", "train_features = train_features.drop(\"right_block_a_max\",axis=1)\n", "train_features = train_features.drop(\"right_block_b_max\",axis=1)\n", "\n", "####################################################################\n", "\n", "train_features = train_features.drop(\"whiteBlock_R\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_G\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_B\",axis=1)\n", "\n", "train_features = train_features.drop(\"whiteBlock_R_stddev\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_G_stddev\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_B_stddev\",axis=1)\n", "\n", "train_features = train_features.drop(\"whiteBlock_R_hist\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_G_hist\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_B_hist\",axis=1)\n", "\n", "train_features = train_features.drop(\"whiteBlock_R_max\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_G_max\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_B_max\",axis=1)\n", "\n", "\n", "train_features = train_features.drop(\"whiteBlock_H\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_S\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_V\",axis=1)\n", "\n", "train_features = train_features.drop(\"whiteBlock_H_stddev\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_S_stddev\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_V_stddev\",axis=1)\n", "\n", "train_features = train_features.drop(\"whiteBlock_H_hist\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_S_hist\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_V_hist\",axis=1)\n", "\n", "train_features = train_features.drop(\"whiteBlock_H_max\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_S_max\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_V_max\",axis=1)\n", "\n", "\n", "\n", "train_features = train_features.drop(\"whiteBlock_l\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_a\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_b\",axis=1)\n", "\n", "train_features = train_features.drop(\"whiteBlock_l_stddev\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_a_stddev\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_b_stddev\",axis=1)\n", "\n", "train_features = train_features.drop(\"whiteBlock_l_hist\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_a_hist\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_b_hist\",axis=1)\n", "\n", "train_features = train_features.drop(\"whiteBlock_l_max\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_a_max\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_b_max\",axis=1)\n", "\n", "##################################################################\n", "\n", "\n", "\n", "train_features.describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**去掉所有块的方差特征**" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": true }, "outputs": [], "source": [ "\n", "train_features = train_features.drop(\"left_block_R_stddev\",axis=1)\n", "train_features = train_features.drop(\"left_block_G_stddev\",axis=1)\n", "train_features = train_features.drop(\"left_block_B_stddev\",axis=1)\n", "\n", "train_features = train_features.drop(\"left_block_H_stddev\",axis=1)\n", "train_features = train_features.drop(\"left_block_S_stddev\",axis=1)\n", "train_features = train_features.drop(\"left_block_V_stddev\",axis=1)\n", "\n", "train_features = train_features.drop(\"left_block_l_stddev\",axis=1)\n", "train_features = train_features.drop(\"left_block_a_stddev\",axis=1)\n", "train_features = train_features.drop(\"left_block_b_stddev\",axis=1)\n", "\n", "train_features = train_features.drop(\"right_block_R_stddev\",axis=1)\n", "train_features = train_features.drop(\"right_block_G_stddev\",axis=1)\n", "train_features = train_features.drop(\"right_block_B_stddev\",axis=1)\n", "\n", "train_features = train_features.drop(\"right_block_H_stddev\",axis=1)\n", "train_features = train_features.drop(\"right_block_S_stddev\",axis=1)\n", "train_features = train_features.drop(\"right_block_V_stddev\",axis=1)\n", "\n", "train_features = train_features.drop(\"right_block_l_stddev\",axis=1)\n", "train_features = train_features.drop(\"right_block_a_stddev\",axis=1)\n", "train_features = train_features.drop(\"right_block_b_stddev\",axis=1)\n", "\n", "train_features = train_features.drop(\"whiteBlock_R_stddev\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_G_stddev\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_B_stddev\",axis=1)\n", "\n", "train_features = train_features.drop(\"whiteBlock_H_stddev\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_S_stddev\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_V_stddev\",axis=1)\n", "\n", "train_features = train_features.drop(\"whiteBlock_l_stddev\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_a_stddev\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_b_stddev\",axis=1)\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# train_features = train_features.drop(\"left_block_R\",axis=1)\n", "# train_features = train_features.drop(\"left_block_G\",axis=1)\n", "# train_features = train_features.drop(\"left_block_B\",axis=1)\n", "\n", "# train_features = train_features.drop(\"left_block_H\",axis=1)\n", "# train_features = train_features.drop(\"left_block_S\",axis=1)\n", "# train_features = train_features.drop(\"left_block_V\",axis=1)\n", "\n", "# train_features = train_features.drop(\"left_block_l\",axis=1)\n", "# train_features = train_features.drop(\"left_block_a\",axis=1)\n", "# train_features = train_features.drop(\"left_block_b\",axis=1)\n", "\n", "# train_features = train_features.drop(\"right_block_R\",axis=1)\n", "# train_features = train_features.drop(\"right_block_G\",axis=1)\n", "# train_features = train_features.drop(\"right_block_B\",axis=1)\n", "\n", "# train_features = train_features.drop(\"right_block_H\",axis=1)\n", "# train_features = train_features.drop(\"right_block_S\",axis=1)\n", "# train_features = train_features.drop(\"right_block_V\",axis=1)\n", "\n", "# train_features = train_features.drop(\"right_block_l\",axis=1)\n", "# train_features = train_features.drop(\"right_block_a\",axis=1)\n", "# train_features = train_features.drop(\"right_block_b\",axis=1)\n", "\n", "# train_features = train_features.drop(\"whiteBlock_R\",axis=1)\n", "# train_features = train_features.drop(\"whiteBlock_G\",axis=1)\n", "# train_features = train_features.drop(\"whiteBlock_B\",axis=1)\n", "\n", "# train_features = train_features.drop(\"whiteBlock_H\",axis=1)\n", "# train_features = train_features.drop(\"whiteBlock_S\",axis=1)\n", "# train_features = train_features.drop(\"whiteBlock_V\",axis=1)\n", "\n", "# train_features = train_features.drop(\"whiteBlock_l\",axis=1)\n", "# train_features = train_features.drop(\"whiteBlock_a\",axis=1)\n", "# train_features = train_features.drop(\"whiteBlock_b\",axis=1)\n", "\n", "# train_features = train_features.drop(\"left_block_R_hist\",axis=1)\n", "# train_features = train_features.drop(\"left_block_G_hist\",axis=1)\n", "# train_features = train_features.drop(\"left_block_B_hist\",axis=1)\n", "\n", "# train_features = train_features.drop(\"left_block_H_hist\",axis=1)\n", "# train_features = train_features.drop(\"left_block_S_hist\",axis=1)\n", "# train_features = train_features.drop(\"left_block_V_hist\",axis=1)\n", "\n", "# train_features = train_features.drop(\"left_block_l_hist\",axis=1)\n", "# train_features = train_features.drop(\"left_block_a_hist\",axis=1)\n", "# train_features = train_features.drop(\"left_block_b_hist\",axis=1)\n", "\n", "# train_features = train_features.drop(\"right_block_R_hist\",axis=1)\n", "# train_features = train_features.drop(\"right_block_G_hist\",axis=1)\n", "# train_features = train_features.drop(\"right_block_B_hist\",axis=1)\n", "\n", "# train_features = train_features.drop(\"right_block_H_hist\",axis=1)\n", "# train_features = train_features.drop(\"right_block_S_hist\",axis=1)\n", "# train_features = train_features.drop(\"right_block_V_hist\",axis=1)\n", "\n", "# train_features = train_features.drop(\"right_block_l_hist\",axis=1)\n", "# train_features = train_features.drop(\"right_block_a_hist\",axis=1)\n", "# train_features = train_features.drop(\"right_block_b_hist\",axis=1)\n", "\n", "# train_features = train_features.drop(\"whiteBlock_R_hist\",axis=1)\n", "# train_features = train_features.drop(\"whiteBlock_G_hist\",axis=1)\n", "# train_features = train_features.drop(\"whiteBlock_B_hist\",axis=1)\n", "\n", "# train_features = train_features.drop(\"whiteBlock_H_hist\",axis=1)\n", "# train_features = train_features.drop(\"whiteBlock_S_hist\",axis=1)\n", "# train_features = train_features.drop(\"whiteBlock_V_hist\",axis=1)\n", "\n", "# train_features = train_features.drop(\"whiteBlock_l_hist\",axis=1)\n", "# train_features = train_features.drop(\"whiteBlock_a_hist\",axis=1)\n", "# train_features = train_features.drop(\"whiteBlock_b_hist\",axis=1)\n", "\n", "train_features = train_features.drop(\"left_block_R_stddev\",axis=1)\n", "train_features = train_features.drop(\"left_block_G_stddev\",axis=1)\n", "train_features = train_features.drop(\"left_block_B_stddev\",axis=1)\n", "\n", "train_features = train_features.drop(\"left_block_H_stddev\",axis=1)\n", "train_features = train_features.drop(\"left_block_S_stddev\",axis=1)\n", "train_features = train_features.drop(\"left_block_V_stddev\",axis=1)\n", "\n", "train_features = train_features.drop(\"left_block_l_stddev\",axis=1)\n", "train_features = train_features.drop(\"left_block_a_stddev\",axis=1)\n", "train_features = train_features.drop(\"left_block_b_stddev\",axis=1)\n", "\n", "train_features = train_features.drop(\"right_block_R_stddev\",axis=1)\n", "train_features = train_features.drop(\"right_block_G_stddev\",axis=1)\n", "train_features = train_features.drop(\"right_block_B_stddev\",axis=1)\n", "\n", "train_features = train_features.drop(\"right_block_H_stddev\",axis=1)\n", "train_features = train_features.drop(\"right_block_S_stddev\",axis=1)\n", "train_features = train_features.drop(\"right_block_V_stddev\",axis=1)\n", "\n", "train_features = train_features.drop(\"right_block_l_stddev\",axis=1)\n", "train_features = train_features.drop(\"right_block_a_stddev\",axis=1)\n", "train_features = train_features.drop(\"right_block_b_stddev\",axis=1)\n", "\n", "train_features = train_features.drop(\"whiteBlock_R_stddev\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_G_stddev\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_B_stddev\",axis=1)\n", "\n", "train_features = train_features.drop(\"whiteBlock_H_stddev\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_S_stddev\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_V_stddev\",axis=1)\n", "\n", "train_features = train_features.drop(\"whiteBlock_l_stddev\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_a_stddev\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_b_stddev\",axis=1)\n", "\n", "train_features = train_features.drop(\"left_block_R_max\",axis=1)\n", "train_features = train_features.drop(\"left_block_G_max\",axis=1)\n", "train_features = train_features.drop(\"left_block_B_max\",axis=1)\n", "\n", "train_features = train_features.drop(\"left_block_H_max\",axis=1)\n", "train_features = train_features.drop(\"left_block_S_max\",axis=1)\n", "train_features = train_features.drop(\"left_block_V_max\",axis=1)\n", "\n", "train_features = train_features.drop(\"left_block_l_max\",axis=1)\n", "train_features = train_features.drop(\"left_block_a_max\",axis=1)\n", "train_features = train_features.drop(\"left_block_b_max\",axis=1)\n", "\n", "train_features = train_features.drop(\"right_block_R_max\",axis=1)\n", "train_features = train_features.drop(\"right_block_G_max\",axis=1)\n", "train_features = train_features.drop(\"right_block_B_max\",axis=1)\n", "\n", "train_features = train_features.drop(\"right_block_H_max\",axis=1)\n", "train_features = train_features.drop(\"right_block_S_max\",axis=1)\n", "train_features = train_features.drop(\"right_block_V_max\",axis=1)\n", "\n", "train_features = train_features.drop(\"right_block_l_max\",axis=1)\n", "train_features = train_features.drop(\"right_block_a_max\",axis=1)\n", "train_features = train_features.drop(\"right_block_b_max\",axis=1)\n", "\n", "train_features = train_features.drop(\"whiteBlock_R_max\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_G_max\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_B_max\",axis=1)\n", "\n", "train_features = train_features.drop(\"whiteBlock_H_max\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_S_max\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_V_max\",axis=1)\n", "\n", "train_features = train_features.drop(\"whiteBlock_l_max\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_a_max\",axis=1)\n", "train_features = train_features.drop(\"whiteBlock_b_max\",axis=1)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
left_block_Rleft_block_Gleft_block_Bleft_block_Hleft_block_Sleft_block_Vleft_block_lleft_block_aleft_block_bleft_block_R_hist...whiteBlock_b_histwhiteBlock_R_maxwhiteBlock_G_maxwhiteBlock_B_maxwhiteBlock_H_maxwhiteBlock_S_maxwhiteBlock_V_maxwhiteBlock_l_maxwhiteBlock_a_maxwhiteBlock_b_max
count151086.000000151086.000000151086.000000151086.000000151086.000000151086.000000151086.000000151086.000000151086.000000151086.000000...151086.000000151086.000000151086.000000151086.000000151086.000000151086.000000151086.000000151086.000000151086.000000151086.000000
mean178.697470149.211462156.498504179.57886248.304482180.058682164.499669140.003925127.971162184.695405...130.782197202.084376192.246787189.16585385.14000025.093086203.718994200.058430132.367804131.734747
std24.04650531.72936828.74144376.69621419.14897623.79665328.0734815.9342904.50578023.740233...4.66287419.94039921.28380321.17684698.77958611.14424018.42738319.2612192.7451614.569725
min15.00000067.00000036.0000006.0000002.00000078.00000073.00000097.000000105.00000013.000000...107.000000125.000000116.000000107.0000000.0000000.000000125.000000125.000000127.000000108.000000
25%164.000000124.000000135.000000149.00000035.000000165.000000143.000000136.000000127.000000171.000000...130.000000193.000000182.000000179.00000019.00000017.000000197.000000190.000000130.000000131.000000
50%180.000000147.000000158.000000217.00000049.000000181.000000165.000000142.000000128.000000189.000000...131.000000205.000000196.000000193.00000027.00000022.000000205.000000203.000000132.000000132.000000
75%194.000000173.000000177.000000239.00000065.000000196.000000184.000000145.000000130.000000198.000000...133.000000212.000000204.000000201.000000199.00000032.000000212.000000210.000000134.000000134.000000
max253.000000235.000000244.000000247.000000206.000000253.000000241.000000151.000000150.000000254.000000...150.000000255.000000255.000000255.000000255.000000123.000000255.000000255.000000158.000000153.000000
\n", "

8 rows × 81 columns

\n", "
" ], "text/plain": [ " left_block_R left_block_G left_block_B left_block_H \\\n", "count 151086.000000 151086.000000 151086.000000 151086.000000 \n", "mean 178.697470 149.211462 156.498504 179.578862 \n", "std 24.046505 31.729368 28.741443 76.696214 \n", "min 15.000000 67.000000 36.000000 6.000000 \n", "25% 164.000000 124.000000 135.000000 149.000000 \n", "50% 180.000000 147.000000 158.000000 217.000000 \n", "75% 194.000000 173.000000 177.000000 239.000000 \n", "max 253.000000 235.000000 244.000000 247.000000 \n", "\n", " left_block_S left_block_V left_block_l left_block_a \\\n", "count 151086.000000 151086.000000 151086.000000 151086.000000 \n", "mean 48.304482 180.058682 164.499669 140.003925 \n", "std 19.148976 23.796653 28.073481 5.934290 \n", "min 2.000000 78.000000 73.000000 97.000000 \n", "25% 35.000000 165.000000 143.000000 136.000000 \n", "50% 49.000000 181.000000 165.000000 142.000000 \n", "75% 65.000000 196.000000 184.000000 145.000000 \n", "max 206.000000 253.000000 241.000000 151.000000 \n", "\n", " left_block_b left_block_R_hist ... whiteBlock_b_hist \\\n", "count 151086.000000 151086.000000 ... 151086.000000 \n", "mean 127.971162 184.695405 ... 130.782197 \n", "std 4.505780 23.740233 ... 4.662874 \n", "min 105.000000 13.000000 ... 107.000000 \n", "25% 127.000000 171.000000 ... 130.000000 \n", "50% 128.000000 189.000000 ... 131.000000 \n", "75% 130.000000 198.000000 ... 133.000000 \n", "max 150.000000 254.000000 ... 150.000000 \n", "\n", " whiteBlock_R_max whiteBlock_G_max whiteBlock_B_max whiteBlock_H_max \\\n", "count 151086.000000 151086.000000 151086.000000 151086.000000 \n", "mean 202.084376 192.246787 189.165853 85.140000 \n", "std 19.940399 21.283803 21.176846 98.779586 \n", "min 125.000000 116.000000 107.000000 0.000000 \n", "25% 193.000000 182.000000 179.000000 19.000000 \n", "50% 205.000000 196.000000 193.000000 27.000000 \n", "75% 212.000000 204.000000 201.000000 199.000000 \n", "max 255.000000 255.000000 255.000000 255.000000 \n", "\n", " whiteBlock_S_max whiteBlock_V_max whiteBlock_l_max whiteBlock_a_max \\\n", "count 151086.000000 151086.000000 151086.000000 151086.000000 \n", "mean 25.093086 203.718994 200.058430 132.367804 \n", "std 11.144240 18.427383 19.261219 2.745161 \n", "min 0.000000 125.000000 125.000000 127.000000 \n", "25% 17.000000 197.000000 190.000000 130.000000 \n", "50% 22.000000 205.000000 203.000000 132.000000 \n", "75% 32.000000 212.000000 210.000000 134.000000 \n", "max 123.000000 255.000000 255.000000 158.000000 \n", "\n", " whiteBlock_b_max \n", "count 151086.000000 \n", "mean 131.734747 \n", "std 4.569725 \n", "min 108.000000 \n", "25% 131.000000 \n", "50% 132.000000 \n", "75% 134.000000 \n", "max 153.000000 \n", "\n", "[8 rows x 81 columns]" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_features.describe()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from sklearn.model_selection import KFold\n", "from sklearn.ensemble import RandomForestClassifier\n", "from sklearn.metrics import accuracy_score\n", "from sklearn.svm import SVC\n", "from sklearn.metrics import f1_score\n", "from sklearn.metrics import precision_score\n", "from sklearn.metrics import recall_score\n", "\n", "\n", "from sklearn.ensemble import ExtraTreesClassifier\n", "from sklearn.ensemble import AdaBoostClassifier\n", "\n", "from sklearn.cross_validation import train_test_split\n", "X_train ,X_test,y_train,y_test = train_test_split(train_features,train_labels,test_size = 0.002, random_state = 20)\n" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "KFold(n_splits=5, random_state=None, shuffle=False)\n", "('TRAIN:', array([ 21967, 21968, 21969, ..., 109831, 109832, 109833]), 'TEST:', array([ 0, 1, 2, ..., 21964, 21965, 21966]))\n", "svm linear accuracy score: 0.99995447717\n", "f1 score: 0.99995447717\n", "runing time: 0:00:09.607839\n", "('TRAIN:', array([ 0, 1, 2, ..., 109831, 109832, 109833]), 'TEST:', array([21967, 21968, 21969, ..., 43931, 43932, 43933]))\n", "svm linear accuracy score: 1.0\n", "f1 score: 1.0\n", "runing time: 0:00:08.782720\n", "('TRAIN:', array([ 0, 1, 2, ..., 109831, 109832, 109833]), 'TEST:', array([43934, 43935, 43936, ..., 65898, 65899, 65900]))\n", "svm linear accuracy score: 0.999817908681\n", "f1 score: 0.999817908681\n", "runing time: 0:00:07.788273\n", "('TRAIN:', array([ 0, 1, 2, ..., 109831, 109832, 109833]), 'TEST:', array([65901, 65902, 65903, ..., 87865, 87866, 87867]))\n", "svm linear accuracy score: 0.999863431511\n", "f1 score: 0.999863431511\n", "runing time: 0:00:07.821979\n", "('TRAIN:', array([ 0, 1, 2, ..., 87865, 87866, 87867]), 'TEST:', array([ 87868, 87869, 87870, ..., 109831, 109832, 109833]))\n", "svm linear accuracy score: 0.999908950196\n", "f1 score: 0.999908950196\n", "runing time: 0:00:08.742652\n" ] } ], "source": [ "\n", "\n", "X = train_features.values\n", "y = train_labels.values\n", "\n", "kf = KFold(n_splits=5)\n", "kf.get_n_splits(X)\n", "\n", "print(kf) \n", "\n", "for train_index, test_index in kf.split(X):\n", " print(\"TRAIN:\", train_index, \"TEST:\", test_index)\n", " X_train, X_test = X[train_index], X[test_index]\n", " y_train, y_test = y[train_index], y[test_index]\n", " \n", " \n", " from datetime import datetime\n", " trarining_start_time = datetime.now()\n", "\n", " clf_svm_linear = SVC(kernel = 'linear',gamma=0.00001,C=0.1)\n", " clf_svm_linear = clf_svm_linear.fit(X_train, y_train)\n", " pred = clf_svm_linear.predict(X_test)\n", " print \"svm linear accuracy score:\" , accuracy_score(y_test,pred)\n", " print \"f1 score:\" , f1_score(y_test,pred,average='micro')\n", "\n", "\n", " training_stop_time = datetime.now()\n", "\n", " print \"runing time:\",(training_stop_time - trarining_start_time)\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true, "scrolled": true }, "outputs": [], "source": [ "X_train = train_features_9\n", "y_train = train_labels\n", "\n", "# X_test = test_features\n", "# y_test = test_labels\n", "\n", "#clf_svm_linear = SVC(kernel = 'linear',gamma=0.00001,C=0.01)\n", "clf_svm_linear = SVC(kernel = 'linear',gamma=0.00001,C=0.01)\n", "\n", "clf_svm_linear = clf_svm_linear.fit(X_train, y_train)\n", "# pred = clf_svm_linear.predict(X_test)\n", "# print \"svm linear accuracy score:\" , accuracy_score(y_test,pred)\n", "# print \"f1 score:\" , f1_score(y_test,pred,average='micro')" ] }, { "cell_type": "code", "execution_count": 66, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "svm linear accuracy score: 0.999125953712\n" ] } ], "source": [ "pred = clf_svm_linear.predict(X_train)\n", "print \"svm linear accuracy score:\" , accuracy_score(y_train,pred)" ] }, { "cell_type": "code", "execution_count": 67, "metadata": { "scrolled": false }, "outputs": [ { "ename": "ValueError", "evalue": "X.shape[1] = 150 should be equal to 35, the number of features at training time", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mpred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mclf_svm_linear\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX_test\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0;32mprint\u001b[0m \u001b[0;34m\"svm linear accuracy score:\"\u001b[0m \u001b[0;34m,\u001b[0m \u001b[0maccuracy_score\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my_test\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mpred\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mprint\u001b[0m \u001b[0;34m\"f1 score:\"\u001b[0m \u001b[0;34m,\u001b[0m \u001b[0mf1_score\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my_test\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mpred\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0maverage\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'micro'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"preds:\"\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mpred\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;32mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'trues:\\n'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0my_test\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/Users/panxiaochun/anaconda3/envs/python27/lib/python2.7/site-packages/sklearn/svm/base.pyc\u001b[0m in \u001b[0;36mpredict\u001b[0;34m(self, X)\u001b[0m\n\u001b[1;32m 571\u001b[0m \u001b[0mClass\u001b[0m \u001b[0mlabels\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0msamples\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 572\u001b[0m \"\"\"\n\u001b[0;32m--> 573\u001b[0;31m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msuper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mBaseSVC\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 574\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclasses_\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtake\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0masarray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mintp\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 575\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/Users/panxiaochun/anaconda3/envs/python27/lib/python2.7/site-packages/sklearn/svm/base.pyc\u001b[0m in \u001b[0;36mpredict\u001b[0;34m(self, X)\u001b[0m\n\u001b[1;32m 308\u001b[0m \u001b[0my_pred\u001b[0m \u001b[0;34m:\u001b[0m \u001b[0marray\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mshape\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mn_samples\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 309\u001b[0m \"\"\"\n\u001b[0;32m--> 310\u001b[0;31m \u001b[0mX\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_validate_for_predict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 311\u001b[0m \u001b[0mpredict\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sparse_predict\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sparse\u001b[0m \u001b[0;32melse\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_dense_predict\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 312\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mpredict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/Users/panxiaochun/anaconda3/envs/python27/lib/python2.7/site-packages/sklearn/svm/base.pyc\u001b[0m in \u001b[0;36m_validate_for_predict\u001b[0;34m(self, X)\u001b[0m\n\u001b[1;32m 477\u001b[0m raise ValueError(\"X.shape[1] = %d should be equal to %d, \"\n\u001b[1;32m 478\u001b[0m \u001b[0;34m\"the number of features at training time\"\u001b[0m \u001b[0;34m%\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 479\u001b[0;31m (n_features, self.shape_fit_[1]))\n\u001b[0m\u001b[1;32m 480\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 481\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mValueError\u001b[0m: X.shape[1] = 150 should be equal to 35, the number of features at training time" ] } ], "source": [ "pred = clf_svm_linear.predict(X_test)\n", "print \"svm linear accuracy score:\" , accuracy_score(y_test,pred)\n", "print \"f1 score:\" , f1_score(y_test,pred,average='micro')\n", "print(\"preds:\",pred[:10])\n", "print('trues:\\n',y_test[:10])\n" ] }, { "cell_type": "code", "execution_count": 96, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from sklearn_porter import Porter\n", "\n", "porter_clf_svm_linear = Porter(clf_svm_linear, language='c').export()\n", "#porter_clf_svm_poly = Porter(clf_svm_poly, language='c').export()\n", "# porter_clf_forest = Porter(clf_randomForest, language='c').export()\n", "#porter_clf_extra_forest = Porter(clf_extra_forest, language='c').export()\n", "\n", "#print(porter_clf_svm_linear)\n", "f = open(\"clf/clf_svm_linear_45features_201710119.txt\",'wb')\n", "#f = open(\"clf_svm_linear_125100_low_feature_data.txt\",'wb')\n", "f.write(porter_clf_svm_linear)\n", "f.close()\n", "#f = open(\"clf_svm_poly_2457100_data.txt\",'wb')\n", "#f.write(porter_clf_svm_poly)\n", "#f.close()\n", "# f = open(\"clf/clf_randomForest_27features_stddev_c_0_01.txt\",'wb')\n", "# f.write(porter_clf_forest)\n", "# f.close()\n", "# f = open(\"oclf_extra_forest_2457100_data_0824.txt\",'wb')\n", "# f.write(porter_clf_extra_forest)\n", "# f.close()\n" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
lelf_right_Rlelf_right_Glelf_right_Blelf_right_Hlelf_right_Vlelf_right_llelf_right_alelf_right_blelf_right_R_stddevlelf_right_G_stddev...lelf_right_H_minlelf_right_V_minlelf_right_l_minlelf_right_a_minlelf_right_b_minlelf_right_gray_valuelelf_right_gray_stddevlelf_right_gray_histlelf_right_gray_maxlelf_right_gray_min
count9472.0000009472.0000009472.0000009472.0000009472.0000009472.0000009472.0000009472.0000009472.0000009472.000000...9472.0000009472.0000009472.0000009472.0000009472.0000009472.0000009472.0000009472.0000009472.0000009472.000000
mean4.99883914.26055710.544130-26.5350515.13682411.130912-4.2118880.506651-0.101668-2.332454...-24.4838470.6977418.245777-1.2251900.67778711.064189-1.53790125.8005702.9671668.171769
std12.45140922.42992118.34903554.74365112.61862618.7607795.0128311.0307075.7356428.606866...88.73896420.69937031.0934432.4201031.60154518.8880337.60592626.1956867.12998931.073313
min-18.000000-23.000000-22.000000-243.000000-18.000000-21.000000-16.000000-4.000000-15.000000-22.000000...-248.000000-68.000000-51.000000-11.000000-5.000000-21.000000-19.000000-61.000000-16.000000-50.000000
25%-6.000000-6.000000-7.000000-28.000000-6.000000-6.000000-7.0000000.000000-4.000000-9.000000...-3.000000-5.000000-20.000000-3.0000000.000000-6.000000-7.00000012.000000-3.000000-20.000000
50%7.00000016.00000013.000000-2.0000007.00000013.000000-4.0000000.000000-1.000000-3.000000...0.0000002.00000012.000000-1.0000000.00000013.000000-2.00000028.0000003.00000012.000000
75%14.00000027.00000022.0000003.00000014.00000023.0000001.0000001.0000005.0000006.000000...2.0000008.00000030.0000000.0000001.00000022.0000005.00000043.0000008.00000029.000000
max38.00000069.00000056.00000092.00000038.00000057.0000007.0000005.00000012.00000015.000000...241.00000053.00000073.0000005.0000007.00000058.00000014.00000093.00000026.00000073.000000
\n", "

8 rows × 45 columns

\n", "
" ], "text/plain": [ " lelf_right_R lelf_right_G lelf_right_B lelf_right_H lelf_right_V \\\n", "count 9472.000000 9472.000000 9472.000000 9472.000000 9472.000000 \n", "mean 4.998839 14.260557 10.544130 -26.535051 5.136824 \n", "std 12.451409 22.429921 18.349035 54.743651 12.618626 \n", "min -18.000000 -23.000000 -22.000000 -243.000000 -18.000000 \n", "25% -6.000000 -6.000000 -7.000000 -28.000000 -6.000000 \n", "50% 7.000000 16.000000 13.000000 -2.000000 7.000000 \n", "75% 14.000000 27.000000 22.000000 3.000000 14.000000 \n", "max 38.000000 69.000000 56.000000 92.000000 38.000000 \n", "\n", " lelf_right_l lelf_right_a lelf_right_b lelf_right_R_stddev \\\n", "count 9472.000000 9472.000000 9472.000000 9472.000000 \n", "mean 11.130912 -4.211888 0.506651 -0.101668 \n", "std 18.760779 5.012831 1.030707 5.735642 \n", "min -21.000000 -16.000000 -4.000000 -15.000000 \n", "25% -6.000000 -7.000000 0.000000 -4.000000 \n", "50% 13.000000 -4.000000 0.000000 -1.000000 \n", "75% 23.000000 1.000000 1.000000 5.000000 \n", "max 57.000000 7.000000 5.000000 12.000000 \n", "\n", " lelf_right_G_stddev ... lelf_right_H_min \\\n", "count 9472.000000 ... 9472.000000 \n", "mean -2.332454 ... -24.483847 \n", "std 8.606866 ... 88.738964 \n", "min -22.000000 ... -248.000000 \n", "25% -9.000000 ... -3.000000 \n", "50% -3.000000 ... 0.000000 \n", "75% 6.000000 ... 2.000000 \n", "max 15.000000 ... 241.000000 \n", "\n", " lelf_right_V_min lelf_right_l_min lelf_right_a_min lelf_right_b_min \\\n", "count 9472.000000 9472.000000 9472.000000 9472.000000 \n", "mean 0.697741 8.245777 -1.225190 0.677787 \n", "std 20.699370 31.093443 2.420103 1.601545 \n", "min -68.000000 -51.000000 -11.000000 -5.000000 \n", "25% -5.000000 -20.000000 -3.000000 0.000000 \n", "50% 2.000000 12.000000 -1.000000 0.000000 \n", "75% 8.000000 30.000000 0.000000 1.000000 \n", "max 53.000000 73.000000 5.000000 7.000000 \n", "\n", " lelf_right_gray_value lelf_right_gray_stddev lelf_right_gray_hist \\\n", "count 9472.000000 9472.000000 9472.000000 \n", "mean 11.064189 -1.537901 25.800570 \n", "std 18.888033 7.605926 26.195686 \n", "min -21.000000 -19.000000 -61.000000 \n", "25% -6.000000 -7.000000 12.000000 \n", "50% 13.000000 -2.000000 28.000000 \n", "75% 22.000000 5.000000 43.000000 \n", "max 58.000000 14.000000 93.000000 \n", "\n", " lelf_right_gray_max lelf_right_gray_min \n", "count 9472.000000 9472.000000 \n", "mean 2.967166 8.171769 \n", "std 7.129989 31.073313 \n", "min -16.000000 -50.000000 \n", "25% -3.000000 -20.000000 \n", "50% 3.000000 12.000000 \n", "75% 8.000000 29.000000 \n", "max 26.000000 73.000000 \n", "\n", "[8 rows x 45 columns]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.utils import shuffle\n", "\n", "\n", "# data_shuffle1 = shuffle(data1)\n", "# #data_shuffle = data_all;\n", "# test_labels = data_shuffle1[\"index\"]\n", "# test_features = data_shuffle1.drop(\"dateTime\",axis=1)\n", "# test_features = test_features.drop(\"index\",axis=1)\n", "# test_features = test_features.drop(\"whiteBalance\",axis=1)\n", "\n", "\n", "# test_features = test_features.drop(\"left_block_R_stddev\",axis=1)\n", "# test_features = test_features.drop(\"left_block_G_stddev\",axis=1)\n", "# test_features = test_features.drop(\"left_block_B_stddev\",axis=1)\n", "\n", "# test_features = test_features.drop(\"left_block_H_stddev\",axis=1)\n", "# test_features = test_features.drop(\"left_block_S_stddev\",axis=1)\n", "# test_features = test_features.drop(\"left_block_V_stddev\",axis=1)\n", "\n", "# test_features = test_features.drop(\"left_block_l_stddev\",axis=1)\n", "# test_features = test_features.drop(\"left_block_a_stddev\",axis=1)\n", "# test_features = test_features.drop(\"left_block_b_stddev\",axis=1)\n", "\n", "# test_features = test_features.drop(\"right_block_R_stddev\",axis=1)\n", "# test_features = test_features.drop(\"right_block_G_stddev\",axis=1)\n", "# test_features = test_features.drop(\"right_block_B_stddev\",axis=1)\n", "\n", "# test_features = test_features.drop(\"right_block_H_stddev\",axis=1)\n", "# test_features = test_features.drop(\"right_block_S_stddev\",axis=1)\n", "# test_features = test_features.drop(\"right_block_V_stddev\",axis=1)\n", "\n", "# test_features = test_features.drop(\"right_block_l_stddev\",axis=1)\n", "# test_features = test_features.drop(\"right_block_a_stddev\",axis=1)\n", "# test_features = test_features.drop(\"right_block_b_stddev\",axis=1)\n", "\n", "# test_features = test_features.drop(\"whiteBlock_R_stddev\",axis=1)\n", "# test_features = test_features.drop(\"whiteBlock_G_stddev\",axis=1)\n", "# test_features = test_features.drop(\"whiteBlock_B_stddev\",axis=1)\n", "\n", "# test_features = test_features.drop(\"whiteBlock_H_stddev\",axis=1)\n", "# test_features = test_features.drop(\"whiteBlock_S_stddev\",axis=1)\n", "# test_features = test_features.drop(\"whiteBlock_V_stddev\",axis=1)\n", "\n", "# test_features = test_features.drop(\"whiteBlock_l_stddev\",axis=1)\n", "# test_features = test_features.drop(\"whiteBlock_a_stddev\",axis=1)\n", "# test_features = test_features.drop(\"whiteBlock_b_stddev\",axis=1)\n", "\n", "train_features_10 = pd.DataFrame()\n", "train_features_10['lelf_right_R'] = test_features['left_block_R'] - test_features['right_block_R']\n", "train_features_10['lelf_right_G'] = test_features['left_block_G'] - test_features['right_block_G']\n", "train_features_10['lelf_right_B'] = test_features['left_block_B'] - test_features['right_block_B']\n", "\n", "train_features_10['lelf_right_H'] = test_features['left_block_H'] - test_features['right_block_H']\n", "# train_features_10['lelf_right_S'] = test_features['left_block_S'] - test_features['right_block_S']\n", "train_features_10['lelf_right_V'] = test_features['left_block_V'] - test_features['right_block_V']\n", "\n", "train_features_10['lelf_right_l'] = test_features['left_block_l'] - test_features['right_block_l']\n", "train_features_10['lelf_right_a'] = test_features['left_block_a'] - test_features['right_block_a']\n", "train_features_10['lelf_right_b'] = test_features['left_block_b'] - test_features['right_block_b']\n", "\n", "train_features_10['lelf_right_R_stddev'] = test_features['left_block_R_stddev'] - test_features['right_block_R_stddev']\n", "train_features_10['lelf_right_G_stddev'] = test_features['left_block_G_stddev'] - test_features['right_block_G_stddev']\n", "train_features_10['lelf_right_B_stddev'] = test_features['left_block_B_stddev'] - test_features['right_block_B_stddev']\n", "\n", "train_features_10['lelf_right_H_stddev'] = test_features['left_block_H_stddev'] - test_features['right_block_H_stddev']\n", "# train_features_10['lelf_right_S_stddev'] = test_features['left_block_S_stddev'] - test_features['right_block_S_stddev']\n", "train_features_10['lelf_right_V_stddev'] = test_features['left_block_V_stddev'] - test_features['right_block_V_stddev']\n", "\n", "train_features_10['lelf_right_l_stddev'] = test_features['left_block_l_stddev'] - test_features['right_block_l_stddev']\n", "train_features_10['lelf_right_a_stddev'] = test_features['left_block_a_stddev'] - test_features['right_block_a_stddev']\n", "train_features_10['lelf_right_b_stddev'] = test_features['left_block_b_stddev'] - test_features['right_block_b_stddev']\n", "\n", "train_features_10['lelf_right_R_hist'] = test_features['left_block_R_hist'] - test_features['right_block_R_hist']\n", "train_features_10['lelf_right_G_hist'] = test_features['left_block_G_hist'] - test_features['right_block_G_hist']\n", "train_features_10['lelf_right_B_hist'] = test_features['left_block_B_hist'] - test_features['right_block_B_hist']\n", "\n", "train_features_10['lelf_right_H_hist'] = test_features['left_block_H_hist'] - test_features['right_block_H_hist']\n", "# train_features_10['lelf_right_S_hist'] = test_features['left_block_S_hist'] - test_features['right_block_S_hist']\n", "train_features_10['lelf_right_V_hist'] = test_features['left_block_V_hist'] - test_features['right_block_V_hist']\n", "\n", "train_features_10['lelf_right_l_hist'] = test_features['left_block_l_hist'] - test_features['right_block_l_hist']\n", "train_features_10['lelf_right_a_hist'] = test_features['left_block_a_hist'] - test_features['right_block_a_hist']\n", "train_features_10['lelf_right_b_hist'] = test_features['left_block_b_hist'] - test_features['right_block_b_hist']\n", "\n", "train_features_10['lelf_right_R_max'] = test_features['left_block_R_max'] - test_features['right_block_R_max']\n", "train_features_10['lelf_right_G_max'] = test_features['left_block_G_max'] - test_features['right_block_G_max']\n", "train_features_10['lelf_right_B_max'] = test_features['left_block_B_max'] - test_features['right_block_B_max']\n", "\n", "train_features_10['lelf_right_H_max'] = test_features['left_block_H_max'] - test_features['right_block_H_max']\n", "# train_features_10['lelf_right_S_max'] = test_features['left_block_S_max'] - test_features['right_block_S_max']\n", "train_features_10['lelf_right_V_max'] = test_features['left_block_V_max'] - test_features['right_block_V_max']\n", "\n", "train_features_10['lelf_right_l_max'] = test_features['left_block_l_max'] - test_features['right_block_l_max']\n", "train_features_10['lelf_right_a_max'] = test_features['left_block_a_max'] - test_features['right_block_a_max']\n", "train_features_10['lelf_right_b_max'] = test_features['left_block_b_max'] - test_features['right_block_b_max']\n", "\n", "\n", "train_features_10['lelf_right_R_min'] = test_features['left_block_R_min'] - test_features['right_block_R_min']\n", "train_features_10['lelf_right_G_min'] = test_features['left_block_G_min'] - test_features['right_block_G_min']\n", "train_features_10['lelf_right_B_min'] = test_features['left_block_B_min'] - test_features['right_block_B_min']\n", "\n", "train_features_10['lelf_right_H_min'] = test_features['left_block_H_min'] - test_features['right_block_H_min']\n", "# train_features_10['lelf_right_S_min'] = test_features['left_block_S_min'] - test_features['right_block_S_min']\n", "train_features_10['lelf_right_V_min'] = test_features['left_block_V_min'] - test_features['right_block_V_min']\n", "\n", "train_features_10['lelf_right_l_min'] = test_features['left_block_l_min'] - test_features['right_block_l_min']\n", "train_features_10['lelf_right_a_min'] = test_features['left_block_a_min'] - test_features['right_block_a_min']\n", "train_features_10['lelf_right_b_min'] = test_features['left_block_b_min'] - test_features['right_block_b_min']\n", "\n", "# train_features_10['left_grayValue']= test_features['left_grayValue'];\n", "# train_features_10['left_grayStddevValue']= test_features['left_grayStddevValue'];\n", "# train_features_10['left_grayHist']= test_features['left_grayHist'];\n", "# train_features_10['left_grayMax']= test_features['left_grayMax'];\n", "# train_features_10['left_grayMin']= test_features['left_grayMin'];\n", "\n", "# train_features_10['right_grayValue']= test_features['right_grayValue'];\n", "# train_features_10['right_grayStddevValue']= test_features['right_grayStddevValue'];\n", "# train_features_10['right_grayHist']= test_features['right_grayHist'];\n", "# train_features_10['right_grayMax']= test_features['right_grayMax'];\n", "# train_features_10['right_grayMin']= test_features['right_grayMin'];\n", "\n", "# train_features_10['lelf_R_stddev'] = test_features['left_block_R_stddev'] \n", "# train_features_10['lelf_G_stddev'] = test_features['left_block_G_stddev'] \n", "# train_features_10['lelf_B_stddev'] = test_features['left_block_B_stddev'] \n", "\n", "# train_features_10['left_block_R_min'] = test_features['left_block_R_min'] \n", "# train_features_10['left_block_G_min'] = test_features['left_block_G_min'] \n", "# train_features_10['left_block_B_min'] = test_features['left_block_B_min'] \n", "\n", "\n", "\n", "train_features_10['lelf_right_gray_value'] = test_features['left_grayValue'] - test_features['right_grayValue']\n", "train_features_10['lelf_right_gray_stddev'] = test_features['left_grayStddevValue'] - test_features['right_grayStddevValue']\n", "train_features_10['lelf_right_gray_hist'] = test_features['left_grayHist'] - test_features['right_grayHist']\n", "train_features_10['lelf_right_gray_max'] = test_features['left_grayMax'] - test_features['right_grayMax']\n", "train_features_10['lelf_right_gray_min'] = test_features['left_grayMin'] - test_features['right_grayMin']\n", "\n", "train_features_10.describe()\n", "\n", "\n", "# feature = feature.drop(\"left_block_H_hist\",axis=1)\n", "# feature = feature.drop(\"right_block_H_hist\",axis=1)\n", "# feature = feature.drop(\"whiteBlock_H_hist\",axis=1)\n" ] }, { "cell_type": "code", "execution_count": 111, "metadata": { "collapsed": true }, "outputs": [], "source": [ " \n", "test_features = test_features.drop(\"left_block_H\",axis=1)\n", "test_features = test_features.drop(\"left_block_S\",axis=1)\n", "test_features = test_features.drop(\"left_block_V\",axis=1)\n", "\n", "test_features = test_features.drop(\"right_block_H\",axis=1)\n", "test_features = test_features.drop(\"right_block_S\",axis=1)\n", "test_features = test_features.drop(\"right_block_V\",axis=1)\n", "\n", "test_features = test_features.drop(\"whiteBlock_H\",axis=1)\n", "test_features = test_features.drop(\"whiteBlock_S\",axis=1)\n", "test_features = test_features.drop(\"whiteBlock_V\",axis=1)\n", "\n", "\n", "test_features = test_features.drop(\"left_block_H_stddev\",axis=1)\n", "test_features = test_features.drop(\"left_block_S_stddev\",axis=1)\n", "test_features = test_features.drop(\"left_block_V_stddev\",axis=1)\n", "\n", "test_features = test_features.drop(\"right_block_H_stddev\",axis=1)\n", "test_features = test_features.drop(\"right_block_S_stddev\",axis=1)\n", "test_features = test_features.drop(\"right_block_V_stddev\",axis=1)\n", "\n", "test_features = test_features.drop(\"whiteBlock_H_stddev\",axis=1)\n", "test_features = test_features.drop(\"whiteBlock_S_stddev\",axis=1)\n", "test_features = test_features.drop(\"whiteBlock_V_stddev\",axis=1)\n", "\n", "test_features = test_features.drop(\"left_block_H_hist\",axis=1)\n", "test_features = test_features.drop(\"left_block_S_hist\",axis=1)\n", "test_features = test_features.drop(\"left_block_V_hist\",axis=1)\n", "\n", "test_features = test_features.drop(\"right_block_H_hist\",axis=1)\n", "test_features = test_features.drop(\"right_block_S_hist\",axis=1)\n", "test_features = test_features.drop(\"right_block_V_hist\",axis=1)\n", "\n", "test_features = test_features.drop(\"whiteBlock_H_hist\",axis=1)\n", "test_features = test_features.drop(\"whiteBlock_S_hist\",axis=1)\n", "test_features = test_features.drop(\"whiteBlock_V_hist\",axis=1)\n", "\n", "test_features = test_features.drop(\"left_block_H_max\",axis=1)\n", "test_features = test_features.drop(\"left_block_S_max\",axis=1)\n", "test_features = test_features.drop(\"left_block_V_max\",axis=1)\n", "\n", "test_features = test_features.drop(\"right_block_H_max\",axis=1)\n", "test_features = test_features.drop(\"right_block_S_max\",axis=1)\n", "test_features = test_features.drop(\"right_block_V_max\",axis=1)\n", "\n", "test_features = test_features.drop(\"whiteBlock_H_max\",axis=1)\n", "test_features = test_features.drop(\"whiteBlock_S_max\",axis=1)\n", "test_features = test_features.drop(\"whiteBlock_V_max\",axis=1)\n", "\n", "test_features = test_features.drop(\"left_block_H_min\",axis=1)\n", "test_features = test_features.drop(\"left_block_S_min\",axis=1)\n", "test_features = test_features.drop(\"left_block_V_min\",axis=1)\n", "\n", "test_features = test_features.drop(\"right_block_H_min\",axis=1)\n", "test_features = test_features.drop(\"right_block_S_min\",axis=1)\n", "test_features = test_features.drop(\"right_block_V_min\",axis=1)\n", "\n", "test_features = test_features.drop(\"whiteBlock_H_min\",axis=1)\n", "test_features = test_features.drop(\"whiteBlock_S_min\",axis=1)\n", "test_features = test_features.drop(\"whiteBlock_V_min\",axis=1)\n", " \n", " \n", "test_features['lelf_right_R'] = test_features['left_block_R'] - test_features['right_block_R']\n", "test_features['lelf_right_G'] = test_features['left_block_G'] - test_features['right_block_G']\n", "test_features['lelf_right_B'] = test_features['left_block_B'] - test_features['right_block_B']\n", "\n", "# test_features['lelf_right_H'] = test_features['left_block_H'] - test_features['right_block_H']\n", "# test_features['lelf_right_S'] = test_features['left_block_S'] - test_features['right_block_S']\n", "# test_features['lelf_right_V'] = test_features['left_block_V'] - test_features['right_block_V']\n", "\n", "# test_features['lelf_right_l'] = test_features['left_block_l'] - test_features['right_block_l']\n", "# test_features['lelf_right_a'] = test_features['left_block_a'] - test_features['right_block_a']\n", "# test_features['lelf_right_b'] = test_features['left_block_b'] - test_features['right_block_b']\n", "\n", "# test_features['lelf_right_R_stddev'] = test_features['left_block_R_stddev'] - test_features['right_block_R_stddev']\n", "# test_features['lelf_right_G_stddev'] = test_features['left_block_G_stddev'] - test_features['right_block_G_stddev']\n", "# test_features['lelf_right_B_stddev'] = test_features['left_block_B_stddev'] - test_features['right_block_B_stddev']\n", "\n", "# test_features['lelf_right_H_stddev'] = test_features['left_block_H_stddev'] - test_features['right_block_H_stddev']\n", "# test_features['lelf_right_S_stddev'] = test_features['left_block_S_stddev'] - test_features['right_block_S_stddev']\n", "# test_features['lelf_right_V_stddev'] = test_features['left_block_V_stddev'] - test_features['right_block_V_stddev']\n", "\n", "# test_features['lelf_right_l_stddev'] = test_features['left_block_l_stddev'] - test_features['right_block_l_stddev']\n", "# test_features['lelf_right_a_stddev'] = test_features['left_block_a_stddev'] - test_features['right_block_a_stddev']\n", "# test_features['lelf_right_b_stddev'] = test_features['left_block_b_stddev'] - test_features['right_block_b_stddev']\n", "\n", "# test_features['lelf_right_R_hist'] = test_features['left_block_R_hist'] - test_features['right_block_R_hist']\n", "# test_features['lelf_right_G_hist'] = test_features['left_block_G_hist'] - test_features['right_block_G_hist']\n", "# test_features['lelf_right_B_hist'] = test_features['left_block_B_hist'] - test_features['right_block_B_hist']\n", "\n", "# test_features['lelf_right_H_hist'] = test_features['left_block_H_hist'] - test_features['right_block_H_hist']\n", "# test_features['lelf_right_S_hist'] = test_features['left_block_S_hist'] - test_features['right_block_S_hist']\n", "# test_features['lelf_right_V_hist'] = test_features['left_block_V_hist'] - test_features['right_block_V_hist']\n", "\n", "# test_features['lelf_right_l_hist'] = test_features['left_block_l_hist'] - test_features['right_block_l_hist']\n", "# test_features['lelf_right_a_hist'] = test_features['left_block_a_hist'] - test_features['right_block_a_hist']\n", "# test_features['lelf_right_b_hist'] = test_features['left_block_b_hist'] - test_features['right_block_b_hist']\n", "\n", "# test_features['lelf_right_R_max'] = test_features['left_block_R_max'] - test_features['right_block_R_max']\n", "# test_features['lelf_right_G_max'] = test_features['left_block_G_max'] - test_features['right_block_G_max']\n", "# test_features['lelf_right_B_max'] = test_features['left_block_B_max'] - test_features['right_block_B_max']\n", "\n", "# test_features['lelf_right_H_max'] = test_features['left_block_H_max'] - test_features['right_block_H_max']\n", "# test_features['lelf_right_S_max'] = test_features['left_block_S_max'] - test_features['right_block_S_max']\n", "# test_features['lelf_right_V_max'] = test_features['left_block_V_max'] - test_features['right_block_V_max']\n", "\n", "# test_features['lelf_right_l_max'] = test_features['left_block_l_max'] - test_features['right_block_l_max']\n", "# test_features['lelf_right_a_max'] = test_features['left_block_a_max'] - test_features['right_block_a_max']\n", "# test_features['lelf_right_b_max'] = test_features['left_block_b_max'] - test_features['right_block_b_max']\n", "\n", "\n", "\n", "# test_features['lelf_right_R_min'] = test_features['left_block_R_min'] - test_features['right_block_R_min']\n", "# test_features['lelf_right_G_min'] = test_features['left_block_G_min'] - test_features['right_block_G_min']\n", "# test_features['lelf_right_B_min'] = test_features['left_block_B_min'] - test_features['right_block_B_min']\n", "\n", "# test_features['lelf_right_H_min'] = test_features['left_block_H_min'] - test_features['right_block_H_min']\n", "# test_features['lelf_right_S_min'] = test_features['left_block_S_min'] - test_features['right_block_S_min']\n", "# test_features['lelf_right_V_min'] = test_features['left_block_V_min'] - test_features['right_block_V_min']\n", "\n", "# test_features['lelf_right_l_min'] = test_features['left_block_l_min'] - test_features['right_block_l_min']\n", "# test_features['lelf_right_a_min'] = test_features['left_block_a_min'] - test_features['right_block_a_min']\n", "# test_features['lelf_right_b_min'] = test_features['left_block_b_min'] - test_features['right_block_b_min']\n", "\n", "test_features['lelf_right_gray_value'] = test_features['left_grayValue'] - test_features['right_grayValue']\n", "test_features['lelf_right_gray_stddev'] = test_features['left_grayStddevValue'] - test_features['right_grayStddevValue']\n", "test_features['lelf_right_gray_hist'] = test_features['left_grayHist'] - test_features['right_grayHist']\n", "test_features['lelf_right_gray_max'] = test_features['left_grayMax'] - test_features['right_grayMax']\n", "test_features['lelf_right_gray_min'] = test_features['left_grayMin'] - test_features['right_grayMin']\n" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "svm linear accuracy score: 0.868243243243\n", "f1 score: 0.868243243243\n", "recall_score : 0.868243243243\n", "precision_score : 0.868243243243\n", "svm linear accuracy score: 0.907728040541\n", "f1 score: 0.907728040541\n", "recall_score : 0.907728040541\n", "precision_score : 0.907728040541\n", "('preds:', array([6, 1, 1, 6, 7, 7, 4, 4, 4, 4]))\n", "('trues:\\n', 2720 6\n", "3210 1\n", "3118 1\n", "2969 6\n", "1026 7\n", "1020 7\n", "2258 4\n", "2493 4\n", "3424 4\n", "2034 4\n", "Name: index, dtype: int64)\n", "7\n", "(2, 4)\n", "(4, 2)\n", "(4, 2)\n", "(2, 4)\n", "(6, 4)\n", "(2, 4)\n", "(2, 4)\n", "(2, 4)\n", "(2, 4)\n", "(4, 2)\n", "(4, 2)\n", "(2, 4)\n", "(2, 4)\n", "(4, 2)\n", "(4, 2)\n", "(2, 4)\n", "(2, 4)\n", "(2, 4)\n", "(2, 4)\n", "(2, 4)\n", "(2, 4)\n", "(2, 4)\n", "(2, 4)\n", "(4, 2)\n", "(2, 4)\n", "(4, 2)\n", "(2, 4)\n", "(2, 4)\n", "(6, 4)\n", "(4, 2)\n", "(2, 4)\n", "(2, 4)\n", "(2, 4)\n", "(2, 4)\n", "(6, 4)\n", "(4, 2)\n", "(2, 4)\n", "(4, 2)\n", "(4, 2)\n", "(4, 2)\n", "(6, 4)\n", "(4, 2)\n", "(2, 4)\n", "(2, 4)\n", "(2, 4)\n", "(2, 4)\n", "(2, 4)\n", "(2, 4)\n", "(2, 4)\n", "(4, 2)\n", "(2, 4)\n", "(2, 4)\n", "(4, 2)\n", "(2, 4)\n", "(4, 2)\n", "(2, 4)\n", "(2, 4)\n", "(4, 2)\n", "(2, 4)\n", "(2, 4)\n", "(2, 4)\n", "(4, 2)\n", "(6, 4)\n", "(2, 4)\n", "(4, 2)\n", "(2, 4)\n", "(2, 4)\n", "(2, 4)\n", "(2, 4)\n", "(2, 4)\n", "(2, 4)\n", "(4, 2)\n", "(2, 4)\n", "(2, 4)\n", "(6, 4)\n", "(6, 4)\n", "(4, 2)\n", "(4, 2)\n", "(2, 4)\n", "(2, 4)\n", "(2, 4)\n", "(2, 4)\n", "(2, 4)\n", "(2, 4)\n", "(4, 6)\n", "(6, 4)\n", "(6, 4)\n", "(4, 2)\n", "(2, 4)\n", "(2, 4)\n", "(2, 4)\n", "(2, 4)\n", "(6, 4)\n", "(4, 2)\n", "(4, 2)\n", "(2, 4)\n", "(2, 4)\n", "(2, 4)\n", "(6, 4)\n", "(2, 4)\n", "(4, 2)\n", "(2, 4)\n", "(6, 4)\n", "(2, 4)\n", "(6, 4)\n", "(2, 4)\n", "(2, 4)\n", "(2, 4)\n", "(6, 4)\n", "(4, 2)\n", "(2, 4)\n", "(2, 4)\n", "(4, 2)\n", "(2, 4)\n", "(2, 4)\n", "(4, 2)\n", "(4, 2)\n", "(4, 2)\n", "(9472, 2911, 118)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(4, 2)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(4, 2)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(0, 1)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(6, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 1)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(2, 4)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(4, 2)\n", "(7, 6)\n", "(7, 6)\n", "(4, 2)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(6, 7)\n", "(4, 2)\n", "(4, 2)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(4, 2)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(0, 1)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(6, 7)\n", "(7, 6)\n", "(7, 6)\n", "(2, 1)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(4, 2)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 1)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(6, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(4, 2)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(6, 7)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(6, 4)\n", "(7, 6)\n", "(4, 2)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(6, 7)\n", "(7, 6)\n", "(7, 6)\n", "(2, 1)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(4, 2)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(6, 7)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(4, 2)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(4, 2)\n", "(6, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(0, 1)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(4, 2)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(6, 7)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 1)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(0, 1)\n", "(7, 6)\n", "(2, 4)\n", "(2, 4)\n", "(7, 6)\n", "(4, 2)\n", "(7, 6)\n", "(2, 1)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 1)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 1)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(2, 4)\n", "(7, 6)\n", "(4, 2)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(2, 1)\n", "(7, 6)\n", "(6, 7)\n", "(7, 6)\n", "(7, 6)\n", "(6, 7)\n", "(7, 6)\n", "(7, 6)\n", "(0, 1)\n", "(7, 6)\n", "(4, 2)\n", "(6, 7)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(4, 2)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(4, 2)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(6, 4)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(4, 2)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(6, 7)\n", "(7, 6)\n", "(7, 6)\n", "(0, 1)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(4, 2)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(2, 1)\n", "(7, 6)\n", "(2, 4)\n", "(6, 4)\n", "(6, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(4, 2)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(4, 2)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(0, 1)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(2, 4)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(4, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(0, 1)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(6, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(6, 4)\n", "(7, 6)\n", "(4, 2)\n", "(7, 6)\n", "(6, 7)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(6, 4)\n", "(2, 1)\n", "(7, 6)\n", "(7, 6)\n", "(4, 2)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(4, 2)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(6, 7)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(6, 7)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(6, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(6, 7)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 1)\n", "(7, 6)\n", "(7, 6)\n", "(4, 2)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(6, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(6, 4)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(6, 7)\n", "(7, 6)\n", "(7, 6)\n", "(2, 1)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(6, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(4, 2)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(0, 1)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(4, 2)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(6, 7)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(2, 4)\n", "(0, 1)\n", "(7, 6)\n", "(4, 2)\n", "(7, 6)\n", "(7, 6)\n", "(2, 1)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(4, 2)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(4, 2)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(7, 6)\n", "(9472, 0, 874)\n" ] } ], "source": [ "pred = clf_svm_linear.predict(train_features_10)\n", "test_features_gray_stddev = test_features['left_grayStddevValue']\n", "test_features_np = np.ndarray(test_features_gray_stddev.shape,dtype = np.float32)\n", "\n", "test_features_np = test_features_gray_stddev.values\n", "print \"svm linear accuracy score:\" , accuracy_score(test_labels,pred)\n", "print \"f1 score:\" , f1_score(test_labels,pred,average='micro')\n", "print \"recall_score :\" , recall_score(test_labels,pred,average='micro')\n", "print \"precision_score :\" , precision_score(test_labels,pred,average='micro')\n", "\n", "for i in range(0, len(test_features_np)):\n", " if test_features_np[i] < 3:\n", " pred[i] =0\n", "print \"svm linear accuracy score:\" , accuracy_score(test_labels,pred)\n", "print \"f1 score:\" , f1_score(test_labels,pred,average='micro')\n", "print \"recall_score :\" , recall_score(test_labels,pred,average='micro')\n", "print \"precision_score :\" , precision_score(test_labels,pred,average='micro')\n", "\n", "\n", "print(\"preds:\",pred[120:130])\n", "print('trues:\\n',test_labels[120:130])\n", "test_labels_np = np.ndarray(test_labels.shape,dtype= np.int32)\n", "test_labels_np = test_labels.values\n", "print(test_labels_np[0])\n", "all_counter = 0\n", "counter = 0\n", "for i in range(0 ,len(pred) ):\n", " if (pred[i] == 4 or (pred[i] == 4 and test_labels_np[i] ==4 )or test_labels_np[i] ==4 ) :\n", " all_counter = all_counter + 1\n", " if pred[i] != test_labels_np[i] :\n", " counter = counter+1\n", " print(pred[i] , test_labels_np[i])\n", "print(len(pred),all_counter, counter) \n", "all_counter = 0\n", "counter = 0\n", "for i in range(0 ,len(pred) ):\n", " if pred[i] != test_labels_np[i] :\n", " counter = counter+1\n", " print(pred[i] , test_labels_np[i])\n", "print(len(pred),all_counter, counter) \n", "\n", "# print \"svm linear accuracy score:\" , accuracy_score(test_labels,pred)\n", "# print \"f1 score:\" , f1_score(test_labels,pred,average='micro')\n", "# print \"recall_score :\" , recall_score(test_labels,pred,average='micro')\n", "# print \"precision_score :\" , precision_score(test_labels,pred,average='micro')\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**参数选择**" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "runing time: 0:00:00.000148\n" ] } ], "source": [ "from sklearn import svm, datasets\n", "from sklearn.model_selection import GridSearchCV\n", "\n", "parameters = {'n_estimators':[15,16,17,18], 'max_features':[8,9,10,11],\\\n", " 'min_samples_split':[3,4,5,6,7],\\\n", " 'max_depth':[7,8,9,10,11,12,13,14,15]\n", " }\n", "clf = RandomForestClassifier(random_state=10)\n", "\n", "from datetime import datetime\n", "trarining_start_time = datetime.now()\n", "clf_grid = GridSearchCV(clf, parameters)\n", "training_stop_time = datetime.now()\n", "print \"runing time:\",(training_stop_time - trarining_start_time)\n", "\n", "clf_grid.fit(X_train, y_train)\n" ] }, { "cell_type": "code", "execution_count": 89, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',\n", " max_depth=7, max_features=9, max_leaf_nodes=None,\n", " min_impurity_split=1e-07, min_samples_leaf=1,\n", " min_samples_split=5, min_weight_fraction_leaf=0.0,\n", " n_estimators=16, n_jobs=1, oob_score=False, random_state=10,\n", " verbose=0, warm_start=False)\n" ] } ], "source": [ "print clf_grid.best_estimator_" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## from sklearn.metrics import recall_score\n", "from sklearn.metrics import precision_score\n", "print \"accuracy score:\" , accuracy_score(y_test,pred)\n", "print \"recall_score :\" , recall_score(y_test,pred,average='macro')\n", "print \"precision_score :\" , precision_score(y_test,pred,average='macro')\n" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from sklearn_porter import Porter\n", "\n", "porter_java = Porter(clf_svm, language='java').export()\n", "porter_c = Porter(clf_svm, language='c').export()\n", "\n", "f = open(\"Protein_c.txt\",'wb')\n", "f.write(porter_c)\n", "f.close()\n", "\n", "f = open(\"Protein_svm_java.txt\",'wb')\n", "f.write(porter_java)\n", "f.close()" ] } ], "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.7.3" } }, "nbformat": 4, "nbformat_minor": 2 }