2287 lines
242 KiB
Plaintext
2287 lines
242 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# 排卵试纸机器学习算法验证"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# 1. **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",
|
||
"import sklearn\n",
|
||
"%matplotlib inline\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# 2. **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(\"ovdata_reindex.csv\")\n",
|
||
"# data2 = pd.read_csv(\"ovdataMore_reindex.csv\")\n",
|
||
"# data3 = pd.read_csv(\"ov_data_2020_reindex.csv\")\n",
|
||
" data1 = pd.read_csv(\"ovdata.csv\")\n",
|
||
" data2 = pd.read_csv(\"ovdataMore.csv\")\n",
|
||
" data3 = pd.read_csv(\"ov_data_2020.csv\")\n",
|
||
" data4 = pd.read_csv(\"data10more.csv\")\n",
|
||
"\n",
|
||
"# data4 = pd.read_csv(\"10_25_renew.csv\")\n",
|
||
"\n",
|
||
"# data_all = pd.read_csv(\"data_all_2019_2020_reindex.csv\")\n",
|
||
"# data_all = pd.read_csv(\"ov_data_2020_reindex.csv\")\n",
|
||
" \n",
|
||
"# data1 = pd.read_csv(\"ovdata.csv\")\n",
|
||
"# data2 = pd.read_csv(\"ovdataMore.csv\")\n",
|
||
"# data3 = pd.read_csv(\"ov_data_2020.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": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# 3. **分析数据**"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 3,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
" left_block_R left_block_G left_block_B left_block_H left_block_S \\\n",
|
||
"count 47662.000000 47662.000000 47662.000000 47662.000000 47662.000000 \n",
|
||
"mean 180.289098 153.385590 160.582351 178.323906 44.126600 \n",
|
||
"std 21.700504 35.551055 32.701433 78.575314 26.848687 \n",
|
||
"min 58.000000 33.000000 34.000000 0.000000 0.000000 \n",
|
||
"25% 162.000000 122.000000 134.000000 155.000000 18.000000 \n",
|
||
"50% 181.000000 153.000000 159.000000 217.000000 45.000000 \n",
|
||
"75% 198.000000 188.000000 190.000000 236.000000 68.000000 \n",
|
||
"max 255.000000 255.000000 255.000000 250.000000 148.000000 \n",
|
||
"\n",
|
||
" left_block_V left_block_l left_block_a left_block_b \\\n",
|
||
"count 47662.000000 47662.000000 47662.000000 47662.000000 \n",
|
||
"mean 181.053984 167.856427 139.075259 127.747241 \n",
|
||
"std 22.735616 30.366616 7.378973 3.389799 \n",
|
||
"min 58.000000 41.000000 121.000000 114.000000 \n",
|
||
"25% 163.000000 142.000000 133.000000 126.000000 \n",
|
||
"50% 181.000000 169.000000 140.000000 128.000000 \n",
|
||
"75% 198.000000 197.000000 146.000000 130.000000 \n",
|
||
"max 255.000000 255.000000 154.000000 144.000000 \n",
|
||
"\n",
|
||
" left_block_R_stddev ... right_grayMax right_grayMin \\\n",
|
||
"count 47662.000000 ... 47662.000000 47662.000000 \n",
|
||
"mean 12.002476 ... 194.762725 122.369645 \n",
|
||
"std 7.959948 ... 12.987519 18.713574 \n",
|
||
"min 0.000000 ... 91.000000 24.000000 \n",
|
||
"25% 4.000000 ... 189.000000 110.000000 \n",
|
||
"50% 11.000000 ... 196.000000 120.000000 \n",
|
||
"75% 19.000000 ... 202.000000 137.000000 \n",
|
||
"max 32.000000 ... 255.000000 242.000000 \n",
|
||
"\n",
|
||
" white_grayValue white_grayStddevValue white_grayHist white_grayMax \\\n",
|
||
"count 47662.000000 47662.000000 47662.000000 47662.000000 \n",
|
||
"mean 201.867903 0.263627 202.181276 203.812240 \n",
|
||
"std 13.437574 0.556166 14.096635 13.327305 \n",
|
||
"min 102.000000 0.000000 0.000000 103.000000 \n",
|
||
"25% 196.000000 0.000000 196.000000 198.000000 \n",
|
||
"50% 202.000000 0.000000 202.000000 204.000000 \n",
|
||
"75% 207.000000 0.000000 208.000000 209.000000 \n",
|
||
"max 255.000000 17.000000 254.000000 255.000000 \n",
|
||
"\n",
|
||
" white_grayMin whiteBalance index Unnamed: 0 \n",
|
||
"count 47662.000000 47662.0 47662.000000 5714.000000 \n",
|
||
"mean 200.900340 0.0 2.187948 1289.203710 \n",
|
||
"std 13.602098 0.0 1.380523 850.267883 \n",
|
||
"min 101.000000 0.0 0.000000 0.000000 \n",
|
||
"25% 194.000000 0.0 1.000000 570.250000 \n",
|
||
"50% 201.000000 0.0 2.000000 1146.000000 \n",
|
||
"75% 207.000000 0.0 4.000000 1981.500000 \n",
|
||
"max 255.000000 0.0 4.000000 3226.000000 \n",
|
||
"\n",
|
||
"[8 rows x 153 columns]\n"
|
||
]
|
||
}
|
||
],
|
||
"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",
|
||
"#data1['index'].replace(4,6,inplace=True)\n",
|
||
"#data1['index'].replace(3,5,inplace=True)\n",
|
||
"#data1['index'].replace(2,4,inplace=True)\n",
|
||
"#data1['index'].replace(1,2,inplace=True)\n",
|
||
"\n",
|
||
"#data2['index'].replace(4,6,inplace=True)\n",
|
||
"#data2['index'].replace(3,5,inplace=True)\n",
|
||
"#data2['index'].replace(2,4,inplace=True)\n",
|
||
"#data2['index'].replace(1,2,inplace=True)\n",
|
||
"\n",
|
||
"#data3['index'].replace(4,6,inplace=True)\n",
|
||
"#data3['index'].replace(3,5,inplace=True)\n",
|
||
"#data3['index'].replace(2,4,inplace=True)\n",
|
||
"#data3['index'].replace(1,2,inplace=True)\n",
|
||
"\n",
|
||
"#data4['index'].replace(2,1,inplace=True)\n",
|
||
"#data4['index'].replace(4,2,inplace=True)\n",
|
||
"\n",
|
||
"#data1_0 = data1[data1[\"whiteBalance\"] == 0]\n",
|
||
"#data2_0 = data2[data2[\"whiteBalance\"] == 0]\n",
|
||
"#data3_0 = data3[data3[\"whiteBalance\"] == 0]\n",
|
||
"\n",
|
||
"#data_test_0 = data_test\n",
|
||
"\n",
|
||
"#data_all =data1_0.append(data2_0);\n",
|
||
"#data_all =data1.append(data2).append(data3);\n",
|
||
"\n",
|
||
"#data_all.to_csv('data_all_2019_2020_reindex.csv')\n",
|
||
"#data1.to_csv('ovdata_modifed.csv')\n",
|
||
"#data2.to_csv('ovdataMore_modifed.csv')\n",
|
||
"#data3.to_csv('ov_data_2020_modifed.csv')\n",
|
||
"#data4.to_csv('10_25_renew.csv')\n",
|
||
"\n",
|
||
"#data =data1.append(data2).append(data3).append(data4)\n",
|
||
"data = pd.concat([data1, data2, data3, data4], ignore_index=True)\n",
|
||
"data_all = data[data[\"whiteBalance\"] == 0]\n",
|
||
"print(data_all.describe())\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 4,
|
||
"metadata": {
|
||
"scrolled": true
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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T36Stba2is8HwEpLS9nOnTvZI488wp566in29re/nQFgv/nNb8Tt2tvb2c0338weffRR9uKLL7Lf//737KabbmIymYy98MIL4nZ+v58dO3aMKRQK9sUvfpH98Y9/ZE899RS7/fbb2SOPPCJu9w//8A9MqVSy2267jT399NPs4YcfZtu3b2f5+flsbGws5n4PBAJMp9OxI0eOxP1+Dh8+zHQ6HQsEAuL3BYA98cQTYdv9x3/8BwPAnn766biv19vbywCw4uJiduzYMfbb3/6WPfPMM6y3t1f824kTJ8Tt//SnPzGZTMYuvfRS9vjjj7Pf/OY37MiRI6yiooJFniYBsIqKCnb48GH261//mv3xj39kl156KVMoFKynp4cxxtjg4CD79Kc/zQCwxx57jL366qvs1VdfZbOzszHXfMMNNzCVSsXKysrYd7/7XfbMM8+wO+64gykUCnbVVVeFbVteXs5uuOEG8d8TExOsuLiY5ebmsp///Ofs6aefZrfeeisDwG6++WZxu5V+3wDYLbfcwhhjzOPxsA9+8IPMaDSyP/3pT3H3u/Dc8vJyVldXxx577DH2+OOPs23btrGsrCz2+c9/nr3nPe9hv//979kvf/lLlp+fzy644ALG87z4/J/97GfszjvvZE899RR76aWX2P/8z/+wvXv3spqaGubz+cTtOjs7mdFoZNdccw1jjLFgMMguu+wylpeXF/d8whhj+/btY/X19Usev/baa1leXh7z+/2MMcZeeukldtttt7Hf/va37KWXXmKPP/44e+9738u0Wi1rb28XnxftmLrhhhvCznkC3/rWt5YcU2v9fRFEsiBxSCQEQTDF+y/yRHnvvfcyg8Eg/r2wsJBdf/317K9//euS1xdE1fj4uPjY3XffzQCwZ599Nu7a5ufnmclkYhdddFHYRSiUYDDIioqK2J49e1gwGAx7bl5eHqurq1vyWQVx6HA4mFarZe94xzvCXnNgYICp1Wr24Q9/OOxzAGD33Xdf2LZvvPFGVDEUCQCm1WrDLhiBQIBt376dbdmyJebzAoEA8/v97Pjx4+zqq68WH3/ggQcYAPbf//3fMZ/76quvMgDshz/8Ydjjg4ODTKvVsi9/+csxnzs2NsYALCvgr7vuOgZA/H7n5+eZwWBg7373u8O2O3DgACstLQ37jqIhXKyrq6vDBEXo30Iv5IcOHWKlpaXM6/WKj83Pz7Ps7Oyo4jA/P5/Nzc2FfU6ZTMbuvPNO8bG77rpryU1EPIRj4yc/+UnY49/97ncZAPbKK6+Ij0WKw6985SsMADt9+nTYc2+++WbGcRzr6OhgjK3s+xY+4y233MKmp6fZRRddxIqLi1lDQ8OKPgcAVlBQwJxOp/jYE088wQCwCy+8MOw3+OMf/5gBYI2NjVFfi+d55vf7WX9/PwPAnnzyybC//+pXv2IA2I9//GP2zW9+k8lkMvbMM88su8Z///d/ZwDE/cLY+ZvN2267LebzAoEA8/l8bOvWrezzn/+8+Ph6xOF6fl8EkSworUwklAceeACvv/76kv8uuuiiJdt+/OMfx9DQEB5++GF85jOfQWlpKR566CFccskluOuuu8K2vemmm+D3+/Hggw+Kj504cQLl5eViWjYWJ0+exNzcHD71qU/FTBF2dHRgZGQEH/3oR8NS2gaDAe973/tw6tSpmKm9V199FQsLC0u6R0tLS3HZZZfh+eefX/Kc973vfWH/3rJlC6xWK/7pn/4JP//5z2M2YwDA8ePHkZ+fL/5bLpfjuuuuQ3d3d1gK+uc//zn2798PjUYDhUIBpVKJ559/PizV/ac//QkajQYf//jHY77f73//e3Ach7/7u79DIBAQ/ysoKMDevXtXlCpdDsYYAIjfj8FgwLXXXos//vGPGB8fBwA0NzfjzJkzuPHGG8O+o3i8+93vhlKpjLuNy+XCG2+8gfe+971QqVTi4waDAe9617uiPufYsWMwGo3iv/Pz85GXl4f+/v4VrSsekSUSH/7whwEAL7zwQszn/OUvf8HOnTtx+PDhsMdvvPFGMMbwl7/8BcDKvm+B3t5e1NbWYm5uDqdOncLevXtX/BmOHTsGvV4v/nvHjh0AgCuvvDLsNyg8HrrfJiYm8MlPfhKlpaXicVteXg4AS8o0rr32Wtx888340pe+hH/5l3/B7bffjre+9a3Lru8jH/kI1Gp1WGnBI488Aq/XG1YDHQgE8L3vfQ87d+6ESqWCQqGASqVCV1fXkrWslVT8vghitZA4JBLKjh07cPDgwSX/mc3mqNubzWZ86EMfwk9+8hOcPn0ajY2NyM/Px9e+9rWwLs+3vOUt2LZtG06cOAEAaGxsxJtvvomPfexjMQWfwOTkJACgpKQk5jbxaiCLiorA8zwcDseaniv8XUCn08FkMoU9Zjab8dJLL+HCCy/E7bffjl27dqGoqAjf+ta34Pf7w7YtKChY8j7CY8J7/du//RtuvvlmHDlyBP/7v/+LU6dO4fXXX8fb3/52LCwsiM+bnJxEUVFRXLE1Pj4Oxhjy8/OhVCrD/jt16lRYLVgkOTk50Ol06O3tjbkNsFgjqNPpkJWVJT520003IRAIiDcE9913HziOC7t4L0esmtZQHA6H+PkiifYYgKj1jmq1OmzfrgWFQrHktSO/22hMT0/HPP5Cn7uS71vgtddeQ2dnJ6677rq4v51ohH6PAETRHetxj8cDYNF94IorrsBjjz2GL3/5y3j++efx2muv4dSpUwAQdf9+/OMfh9/vh0KhwGc+85kVr+/d7343HnjgAbE28f7778fhw4exa9cucbsvfOEL+MY3voH3vve9+N3vfofTp0/j9ddfx969e9f9XQus5/dFEMmCupUJSbFr1y588IMfxI9//GN0dnaGRUI+/vGP4ytf+Qpee+01PPzww5DJZCvyesvNzQWAsKhaJMIFeXR0dMnfRkZGIJPJYLVa1/TcnJycsMdiidk9e/bg0UcfBWMMjY2NuP/++/Htb38bWq0WX/nKV8TtxsbGljxXeExYy0MPPYRLL70UP/vZz8K2m5+fD/t3bm4uXnnlFfA8H1Mw5OTkgOM4vPzyy1Cr1Uv+Hu0xAblcjmPHjuHpp5/G0NBQVJExNDSEM2fO4Morr4RcLhcfr6urw44dO3DixAl89rOfxUMPPYTLLrsMlZWVMd8vkuVuHADAarWC4zgxQhlKtH2dTAKBAKanp8MEYuR3G43s7OyYxx8A8RhcyfctcN1116GgoABf+9rXwPM8vv71r6/686yW5uZm2Gw23H///bjhhhvExyObVgRcLhc++tGPYtu2bRgfH8ff//3f48knn1zRe33sYx/Db37zGzz77LMoKyvD66+/vuT38tBDD+H666/H9773vbDHp6amYLFY4r6+RqOB1+td8nik2FvP74sgkgVFDom0MD09DZ/PF/VvguG1EPUQuOGGG6BQKPCf//mf+OUvf4njx4+L6aZ41NXVwWw24+c//7mYvoykpqYGxcXFePjhh8O2cblc+N///V+xgzkatbW10Gq1eOihh8IeHxoawl/+8pdl096RcByHvXv34kc/+hEsFssSc+/nn38+TMgEg0H86le/QnV1tSi+OI5bclFpbGxc0nl95ZVXwuPxxDXvveqqq8AYw/DwcNSo8J49e+J+nq9+9atgjOFTn/rUkg7SYDCIm2++GYwxfPWrX13y3I9//ONobW3F17/+dUxOTq4oHbpa9Ho9Dh48iCeeeCLsmHQ6nWEdyKtF2P+rjTD98pe/DPv3ww8/DAC49NJLYz7n+PHjaG1tXXKsPPDAA+A4DseOHQOwsu87lK9//ev48Y9/jG9+85tRv59EI4j5yGP3P//zP6Nu/8lPfhIDAwN47LHHcO+99+Kpp57Cj370oxW91xVXXIHi4mKcOHECJ06cgEajwYc+9KEl64lcyx/+8AcMDw8v+/oVFRWYmJgI+636fD78+c9/Dttuvb8vgkgGFDkk0sILL7yAz372s/jIRz6Curo6ZGdnY2JiAo888giefvppXH/99UuiTAUFBXjHO96BEydOgDG2YhNkg8GAH/7wh/j7v/97XH755fiHf/gH5Ofno7u7GzabDT/96U8hk8nwgx/8AB/5yEdw1VVX4ROf+AS8Xi/uuusuzMzMiDYr0bBYLPjGN76B22+/Hddffz0+9KEPYXp6Gv/8z/8MjUaDb33rW8uu8fe//z3uuecevPe970VVVRUYY3jssccwMzOzpIYqJycHl112Gb7xjW9Ar9fjnnvuQXt7e5idzVVXXYXvfOc7+Na3voVLLrkEHR0d+Pa3v43Kysowe5gPfehDOHHiBD75yU+io6MDx44dA8/zOH36NHbs2IEPfvCDqK+vxz/+4z/iYx/7GN544w1cfPHF0Ov1GB0dxSuvvII9e/bg5ptvjvnZ6uvr8eMf/xif+9zncNFFF+HWW29FWVkZBgYG8B//8R84ffo0fvzjH6Ourm7Jc6+//nrcfvvtuOuuu2CxWHDNNdcsuy/Xwre//W28853vxNve9jZ89rOfRTAYxF133QWDwQC73b6m1xQu6j/5yU9www03QKlUoqamJqxWMRKVSoUf/vCHcDqdOHToEE6ePIl/+Zd/wZVXXhm1blfg85//PB544AG8853vxLe//W2Ul5fjD3/4A+655x7cfPPN2LZtG4CVfd+RfPazn4XBYMA//uM/wul04t///d9XFJFdC9u3b0d1dTW+8pWvgDGGrKws/O53v8Ozzz67ZNtf/OIXeOihh3DixAns2rULu3btwq233op/+qd/Qn19/ZL6y0jkcjmuv/56/Nu//RtMJhOuueaaJeUvV111Fe6//35s374dF1xwAc6cOYO77rprRWn26667Dt/85jfxwQ9+EF/60pfg8Xjw7//+70tukNb7+yKIpJCGJhhiAyJ08L7++utR//7Od74zrHNvcHCQff3rX2f19fWsoKCAKRQKZjQa2ZEjR9jdd98tWppE8uSTTzIALCsri3k8nlWt8Y9//CO75JJLmF6vZzqdju3cuZN9//vfD9vmiSeeYEeOHGEajYbp9Xp2/Phx9re//S3qZ43sQv3FL37BLrjgAqZSqZjZbGbvec97WEtLS9g2N9xwA9Pr9UvW1t7ezj70oQ+x6upqptVqmdlsZocPH2b3339/2Hb4vy7Se+65h1VXVzOlUsm2b9/OfvnLX4Zt5/V62Re/+EVWXFzMNBoN279/P3viiSeidlAuLCywb37zm2zr1q1MpVKx7Oxsdtlll7GTJ0+GbXffffexI0eOML1ez7RaLauurmbXX389e+ONN2Lu81BeffVV9v73v5/l5+czhULB8vLy2DXXXLPkfSK5+uqrGYAw26HlELpH77rrrph/C+0sZYyxxx9/nO3Zs0e0k/l//+//sc985jPMarWGbSd8B5FEdhAzxthXv/pVVlRUxGQyGQMQZiMUiXBsNDY2sksvvZRptVqWlZXFbr755rDO31jv1d/fzz784Q+z7OxsplQqWU1NDbvrrruWdHav5PuO9hkfeeQRplAo2Mc+9rG43eLRnhvr+3jhhReW2DC1trayt771rcxoNDKr1co+8IEPsIGBAQaAfetb32KMMdbY2Mi0Wu2SfeDxeNiBAwdYRUUFczgcMdco0NnZKbolRHM9cDgc7KabbmJ5eXlMp9Oxiy66iL388svskksuYZdccsmSzxd5TP3xj39kF154IdNqtayqqor99Kc/jWplw9j6f18EkUg4xmLk2QiCkBwcx+GWW24Rx80RycPv9+PCCy9EcXExnnnmmXQvhyAIImVQWpkgCAKL3dFvfetbUVhYiLGxMfz85z9HW1sbfvKTn6R7aQRBECmFxCFBEAQWO7m/+MUvYnJyEkqlEvv378cf//hHXH755eleGkEQREqhtDJBEARBEAQhQlY2BEEQBEEQhAiJQ4IgCIIgCEKExCFBEARBEAQhQuKQIAiCIAiCECFxSBAEQRAEQYiQOCQIgiAIgiBESBwSBEEQ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",
|
||
"text/plain": [
|
||
"<Figure size 1000x800 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"\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",
|
||
"#fig = plt.figure()\n",
|
||
"#plt.rcParams[\"figure.figsize\"] = 20,20\n",
|
||
"#ax = Axes3D(fig)\n",
|
||
"fig = plt.figure(figsize=(10,8))\n",
|
||
"ax = fig.add_subplot(111, projection='3d')\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": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"data_all.columns"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {
|
||
"collapsed": true,
|
||
"jupyter": {
|
||
"outputs_hidden": true
|
||
}
|
||
},
|
||
"source": [
|
||
"hsv max min hist value h值要去掉"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# 预处理数据"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 5,
|
||
"metadata": {
|
||
"scrolled": true
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>left_block_R</th>\n",
|
||
" <th>left_block_G</th>\n",
|
||
" <th>left_block_B</th>\n",
|
||
" <th>left_block_H</th>\n",
|
||
" <th>left_block_S</th>\n",
|
||
" <th>left_block_V</th>\n",
|
||
" <th>left_block_l</th>\n",
|
||
" <th>left_block_a</th>\n",
|
||
" <th>left_block_b</th>\n",
|
||
" <th>left_block_R_stddev</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>right_grayStddevValue</th>\n",
|
||
" <th>right_grayHist</th>\n",
|
||
" <th>right_grayMax</th>\n",
|
||
" <th>right_grayMin</th>\n",
|
||
" <th>white_grayValue</th>\n",
|
||
" <th>white_grayStddevValue</th>\n",
|
||
" <th>white_grayHist</th>\n",
|
||
" <th>white_grayMax</th>\n",
|
||
" <th>white_grayMin</th>\n",
|
||
" <th>Unnamed: 0</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>count</th>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>5714.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>mean</th>\n",
|
||
" <td>180.289098</td>\n",
|
||
" <td>153.385590</td>\n",
|
||
" <td>160.582351</td>\n",
|
||
" <td>178.323906</td>\n",
|
||
" <td>44.126600</td>\n",
|
||
" <td>181.053984</td>\n",
|
||
" <td>167.856427</td>\n",
|
||
" <td>139.075259</td>\n",
|
||
" <td>127.747241</td>\n",
|
||
" <td>12.002476</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>19.333809</td>\n",
|
||
" <td>153.983719</td>\n",
|
||
" <td>194.762725</td>\n",
|
||
" <td>122.369645</td>\n",
|
||
" <td>201.867903</td>\n",
|
||
" <td>0.263627</td>\n",
|
||
" <td>202.181276</td>\n",
|
||
" <td>203.812240</td>\n",
|
||
" <td>200.900340</td>\n",
|
||
" <td>1289.203710</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>std</th>\n",
|
||
" <td>21.700504</td>\n",
|
||
" <td>35.551055</td>\n",
|
||
" <td>32.701433</td>\n",
|
||
" <td>78.575314</td>\n",
|
||
" <td>26.848687</td>\n",
|
||
" <td>22.735616</td>\n",
|
||
" <td>30.366616</td>\n",
|
||
" <td>7.378973</td>\n",
|
||
" <td>3.389799</td>\n",
|
||
" <td>7.959948</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>4.071411</td>\n",
|
||
" <td>22.848103</td>\n",
|
||
" <td>12.987519</td>\n",
|
||
" <td>18.713574</td>\n",
|
||
" <td>13.437574</td>\n",
|
||
" <td>0.556166</td>\n",
|
||
" <td>14.096635</td>\n",
|
||
" <td>13.327305</td>\n",
|
||
" <td>13.602098</td>\n",
|
||
" <td>850.267883</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>min</th>\n",
|
||
" <td>58.000000</td>\n",
|
||
" <td>33.000000</td>\n",
|
||
" <td>34.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>58.000000</td>\n",
|
||
" <td>41.000000</td>\n",
|
||
" <td>121.000000</td>\n",
|
||
" <td>114.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>28.000000</td>\n",
|
||
" <td>91.000000</td>\n",
|
||
" <td>24.000000</td>\n",
|
||
" <td>102.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>103.000000</td>\n",
|
||
" <td>101.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>25%</th>\n",
|
||
" <td>162.000000</td>\n",
|
||
" <td>122.000000</td>\n",
|
||
" <td>134.000000</td>\n",
|
||
" <td>155.000000</td>\n",
|
||
" <td>18.000000</td>\n",
|
||
" <td>163.000000</td>\n",
|
||
" <td>142.000000</td>\n",
|
||
" <td>133.000000</td>\n",
|
||
" <td>126.000000</td>\n",
|
||
" <td>4.000000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>16.000000</td>\n",
|
||
" <td>139.000000</td>\n",
|
||
" <td>189.000000</td>\n",
|
||
" <td>110.000000</td>\n",
|
||
" <td>196.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>196.000000</td>\n",
|
||
" <td>198.000000</td>\n",
|
||
" <td>194.000000</td>\n",
|
||
" <td>570.250000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>50%</th>\n",
|
||
" <td>181.000000</td>\n",
|
||
" <td>153.000000</td>\n",
|
||
" <td>159.000000</td>\n",
|
||
" <td>217.000000</td>\n",
|
||
" <td>45.000000</td>\n",
|
||
" <td>181.000000</td>\n",
|
||
" <td>169.000000</td>\n",
|
||
" <td>140.000000</td>\n",
|
||
" <td>128.000000</td>\n",
|
||
" <td>11.000000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>19.000000</td>\n",
|
||
" <td>151.000000</td>\n",
|
||
" <td>196.000000</td>\n",
|
||
" <td>120.000000</td>\n",
|
||
" <td>202.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>202.000000</td>\n",
|
||
" <td>204.000000</td>\n",
|
||
" <td>201.000000</td>\n",
|
||
" <td>1146.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>75%</th>\n",
|
||
" <td>198.000000</td>\n",
|
||
" <td>188.000000</td>\n",
|
||
" <td>190.000000</td>\n",
|
||
" <td>236.000000</td>\n",
|
||
" <td>68.000000</td>\n",
|
||
" <td>198.000000</td>\n",
|
||
" <td>197.000000</td>\n",
|
||
" <td>146.000000</td>\n",
|
||
" <td>130.000000</td>\n",
|
||
" <td>19.000000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>23.000000</td>\n",
|
||
" <td>170.000000</td>\n",
|
||
" <td>202.000000</td>\n",
|
||
" <td>137.000000</td>\n",
|
||
" <td>207.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>208.000000</td>\n",
|
||
" <td>209.000000</td>\n",
|
||
" <td>207.000000</td>\n",
|
||
" <td>1981.500000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>max</th>\n",
|
||
" <td>255.000000</td>\n",
|
||
" <td>255.000000</td>\n",
|
||
" <td>255.000000</td>\n",
|
||
" <td>250.000000</td>\n",
|
||
" <td>148.000000</td>\n",
|
||
" <td>255.000000</td>\n",
|
||
" <td>255.000000</td>\n",
|
||
" <td>154.000000</td>\n",
|
||
" <td>144.000000</td>\n",
|
||
" <td>32.000000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>31.000000</td>\n",
|
||
" <td>251.000000</td>\n",
|
||
" <td>255.000000</td>\n",
|
||
" <td>242.000000</td>\n",
|
||
" <td>255.000000</td>\n",
|
||
" <td>17.000000</td>\n",
|
||
" <td>254.000000</td>\n",
|
||
" <td>255.000000</td>\n",
|
||
" <td>255.000000</td>\n",
|
||
" <td>3226.000000</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>8 rows × 151 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" left_block_R left_block_G left_block_B left_block_H left_block_S \\\n",
|
||
"count 47662.000000 47662.000000 47662.000000 47662.000000 47662.000000 \n",
|
||
"mean 180.289098 153.385590 160.582351 178.323906 44.126600 \n",
|
||
"std 21.700504 35.551055 32.701433 78.575314 26.848687 \n",
|
||
"min 58.000000 33.000000 34.000000 0.000000 0.000000 \n",
|
||
"25% 162.000000 122.000000 134.000000 155.000000 18.000000 \n",
|
||
"50% 181.000000 153.000000 159.000000 217.000000 45.000000 \n",
|
||
"75% 198.000000 188.000000 190.000000 236.000000 68.000000 \n",
|
||
"max 255.000000 255.000000 255.000000 250.000000 148.000000 \n",
|
||
"\n",
|
||
" left_block_V left_block_l left_block_a left_block_b \\\n",
|
||
"count 47662.000000 47662.000000 47662.000000 47662.000000 \n",
|
||
"mean 181.053984 167.856427 139.075259 127.747241 \n",
|
||
"std 22.735616 30.366616 7.378973 3.389799 \n",
|
||
"min 58.000000 41.000000 121.000000 114.000000 \n",
|
||
"25% 163.000000 142.000000 133.000000 126.000000 \n",
|
||
"50% 181.000000 169.000000 140.000000 128.000000 \n",
|
||
"75% 198.000000 197.000000 146.000000 130.000000 \n",
|
||
"max 255.000000 255.000000 154.000000 144.000000 \n",
|
||
"\n",
|
||
" left_block_R_stddev ... right_grayStddevValue right_grayHist \\\n",
|
||
"count 47662.000000 ... 47662.000000 47662.000000 \n",
|
||
"mean 12.002476 ... 19.333809 153.983719 \n",
|
||
"std 7.959948 ... 4.071411 22.848103 \n",
|
||
"min 0.000000 ... 1.000000 28.000000 \n",
|
||
"25% 4.000000 ... 16.000000 139.000000 \n",
|
||
"50% 11.000000 ... 19.000000 151.000000 \n",
|
||
"75% 19.000000 ... 23.000000 170.000000 \n",
|
||
"max 32.000000 ... 31.000000 251.000000 \n",
|
||
"\n",
|
||
" right_grayMax right_grayMin white_grayValue white_grayStddevValue \\\n",
|
||
"count 47662.000000 47662.000000 47662.000000 47662.000000 \n",
|
||
"mean 194.762725 122.369645 201.867903 0.263627 \n",
|
||
"std 12.987519 18.713574 13.437574 0.556166 \n",
|
||
"min 91.000000 24.000000 102.000000 0.000000 \n",
|
||
"25% 189.000000 110.000000 196.000000 0.000000 \n",
|
||
"50% 196.000000 120.000000 202.000000 0.000000 \n",
|
||
"75% 202.000000 137.000000 207.000000 0.000000 \n",
|
||
"max 255.000000 242.000000 255.000000 17.000000 \n",
|
||
"\n",
|
||
" white_grayHist white_grayMax white_grayMin Unnamed: 0 \n",
|
||
"count 47662.000000 47662.000000 47662.000000 5714.000000 \n",
|
||
"mean 202.181276 203.812240 200.900340 1289.203710 \n",
|
||
"std 14.096635 13.327305 13.602098 850.267883 \n",
|
||
"min 0.000000 103.000000 101.000000 0.000000 \n",
|
||
"25% 196.000000 198.000000 194.000000 570.250000 \n",
|
||
"50% 202.000000 204.000000 201.000000 1146.000000 \n",
|
||
"75% 208.000000 209.000000 207.000000 1981.500000 \n",
|
||
"max 254.000000 255.000000 255.000000 3226.000000 \n",
|
||
"\n",
|
||
"[8 rows x 151 columns]"
|
||
]
|
||
},
|
||
"execution_count": 5,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"\n",
|
||
"\n",
|
||
"train_labels = data_all[\"index\"]\n",
|
||
"train_features = data_all.drop(\"dateTime\",axis=1)\n",
|
||
"train_features = train_features.drop(\"index\",axis=1)\n",
|
||
"train_features = train_features.drop(\"whiteBalance\",axis=1)\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"train_features.describe()\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# train_features_9是真正的训练数据"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 6,
|
||
"metadata": {
|
||
"scrolled": true
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>lelf_right_R</th>\n",
|
||
" <th>lelf_right_G</th>\n",
|
||
" <th>lelf_right_B</th>\n",
|
||
" <th>lelf_right_H</th>\n",
|
||
" <th>lelf_right_S</th>\n",
|
||
" <th>lelf_right_V</th>\n",
|
||
" <th>lelf_right_l</th>\n",
|
||
" <th>lelf_right_a</th>\n",
|
||
" <th>lelf_right_b</th>\n",
|
||
" <th>lelf_right_R_stddev</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>lelf_right_S_min</th>\n",
|
||
" <th>lelf_right_V_min</th>\n",
|
||
" <th>lelf_right_l_min</th>\n",
|
||
" <th>lelf_right_a_min</th>\n",
|
||
" <th>lelf_right_b_min</th>\n",
|
||
" <th>lelf_right_gray_value</th>\n",
|
||
" <th>lelf_right_gray_stddev</th>\n",
|
||
" <th>lelf_right_gray_hist</th>\n",
|
||
" <th>lelf_right_gray_max</th>\n",
|
||
" <th>lelf_right_gray_min</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>count</th>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" <td>47662.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>mean</th>\n",
|
||
" <td>1.524611</td>\n",
|
||
" <td>7.414355</td>\n",
|
||
" <td>4.993936</td>\n",
|
||
" <td>-29.645441</td>\n",
|
||
" <td>-4.300512</td>\n",
|
||
" <td>2.048382</td>\n",
|
||
" <td>5.319017</td>\n",
|
||
" <td>-2.462255</td>\n",
|
||
" <td>0.554404</td>\n",
|
||
" <td>-1.499895</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>-9.937833</td>\n",
|
||
" <td>-0.313226</td>\n",
|
||
" <td>12.762725</td>\n",
|
||
" <td>-0.956968</td>\n",
|
||
" <td>0.740821</td>\n",
|
||
" <td>5.371596</td>\n",
|
||
" <td>-2.692417</td>\n",
|
||
" <td>-2.581889</td>\n",
|
||
" <td>0.880219</td>\n",
|
||
" <td>12.910872</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>std</th>\n",
|
||
" <td>19.877693</td>\n",
|
||
" <td>32.676594</td>\n",
|
||
" <td>26.320205</td>\n",
|
||
" <td>69.628184</td>\n",
|
||
" <td>23.357776</td>\n",
|
||
" <td>20.539508</td>\n",
|
||
" <td>27.817984</td>\n",
|
||
" <td>6.565894</td>\n",
|
||
" <td>1.498175</td>\n",
|
||
" <td>8.691766</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>41.795104</td>\n",
|
||
" <td>6.608920</td>\n",
|
||
" <td>43.965507</td>\n",
|
||
" <td>2.272874</td>\n",
|
||
" <td>2.203069</td>\n",
|
||
" <td>28.070441</td>\n",
|
||
" <td>11.119842</td>\n",
|
||
" <td>46.145429</td>\n",
|
||
" <td>9.529551</td>\n",
|
||
" <td>43.804821</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>min</th>\n",
|
||
" <td>-37.000000</td>\n",
|
||
" <td>-52.000000</td>\n",
|
||
" <td>-45.000000</td>\n",
|
||
" <td>-242.000000</td>\n",
|
||
" <td>-60.000000</td>\n",
|
||
" <td>-37.000000</td>\n",
|
||
" <td>-46.000000</td>\n",
|
||
" <td>-17.000000</td>\n",
|
||
" <td>-3.000000</td>\n",
|
||
" <td>-21.000000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>-124.000000</td>\n",
|
||
" <td>-24.000000</td>\n",
|
||
" <td>-74.000000</td>\n",
|
||
" <td>-9.000000</td>\n",
|
||
" <td>-5.000000</td>\n",
|
||
" <td>-46.000000</td>\n",
|
||
" <td>-27.000000</td>\n",
|
||
" <td>-251.000000</td>\n",
|
||
" <td>-28.000000</td>\n",
|
||
" <td>-70.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>25%</th>\n",
|
||
" <td>-18.000000</td>\n",
|
||
" <td>-25.000000</td>\n",
|
||
" <td>-21.000000</td>\n",
|
||
" <td>-41.000000</td>\n",
|
||
" <td>-26.000000</td>\n",
|
||
" <td>-18.000000</td>\n",
|
||
" <td>-22.000000</td>\n",
|
||
" <td>-9.000000</td>\n",
|
||
" <td>-1.000000</td>\n",
|
||
" <td>-8.000000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>-47.000000</td>\n",
|
||
" <td>-5.000000</td>\n",
|
||
" <td>-28.000000</td>\n",
|
||
" <td>-3.000000</td>\n",
|
||
" <td>-1.000000</td>\n",
|
||
" <td>-22.000000</td>\n",
|
||
" <td>-12.000000</td>\n",
|
||
" <td>-42.000000</td>\n",
|
||
" <td>-6.000000</td>\n",
|
||
" <td>-28.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>50%</th>\n",
|
||
" <td>2.000000</td>\n",
|
||
" <td>8.000000</td>\n",
|
||
" <td>7.000000</td>\n",
|
||
" <td>-2.000000</td>\n",
|
||
" <td>-7.000000</td>\n",
|
||
" <td>2.000000</td>\n",
|
||
" <td>6.000000</td>\n",
|
||
" <td>-2.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>-3.000000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>-13.000000</td>\n",
|
||
" <td>-1.000000</td>\n",
|
||
" <td>16.000000</td>\n",
|
||
" <td>-1.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>6.000000</td>\n",
|
||
" <td>-4.000000</td>\n",
|
||
" <td>2.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>15.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>75%</th>\n",
|
||
" <td>21.000000</td>\n",
|
||
" <td>41.000000</td>\n",
|
||
" <td>31.000000</td>\n",
|
||
" <td>6.000000</td>\n",
|
||
" <td>18.000000</td>\n",
|
||
" <td>22.000000</td>\n",
|
||
" <td>34.000000</td>\n",
|
||
" <td>4.000000</td>\n",
|
||
" <td>2.000000</td>\n",
|
||
" <td>6.000000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>29.000000</td>\n",
|
||
" <td>4.000000</td>\n",
|
||
" <td>49.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>2.000000</td>\n",
|
||
" <td>34.000000</td>\n",
|
||
" <td>8.000000</td>\n",
|
||
" <td>39.000000</td>\n",
|
||
" <td>9.000000</td>\n",
|
||
" <td>50.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>max</th>\n",
|
||
" <td>41.000000</td>\n",
|
||
" <td>66.000000</td>\n",
|
||
" <td>51.000000</td>\n",
|
||
" <td>140.000000</td>\n",
|
||
" <td>68.000000</td>\n",
|
||
" <td>50.000000</td>\n",
|
||
" <td>56.000000</td>\n",
|
||
" <td>11.000000</td>\n",
|
||
" <td>7.000000</td>\n",
|
||
" <td>18.000000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>138.000000</td>\n",
|
||
" <td>29.000000</td>\n",
|
||
" <td>101.000000</td>\n",
|
||
" <td>7.000000</td>\n",
|
||
" <td>10.000000</td>\n",
|
||
" <td>56.000000</td>\n",
|
||
" <td>20.000000</td>\n",
|
||
" <td>101.000000</td>\n",
|
||
" <td>39.000000</td>\n",
|
||
" <td>100.000000</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>8 rows × 50 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" lelf_right_R lelf_right_G lelf_right_B lelf_right_H lelf_right_S \\\n",
|
||
"count 47662.000000 47662.000000 47662.000000 47662.000000 47662.000000 \n",
|
||
"mean 1.524611 7.414355 4.993936 -29.645441 -4.300512 \n",
|
||
"std 19.877693 32.676594 26.320205 69.628184 23.357776 \n",
|
||
"min -37.000000 -52.000000 -45.000000 -242.000000 -60.000000 \n",
|
||
"25% -18.000000 -25.000000 -21.000000 -41.000000 -26.000000 \n",
|
||
"50% 2.000000 8.000000 7.000000 -2.000000 -7.000000 \n",
|
||
"75% 21.000000 41.000000 31.000000 6.000000 18.000000 \n",
|
||
"max 41.000000 66.000000 51.000000 140.000000 68.000000 \n",
|
||
"\n",
|
||
" lelf_right_V lelf_right_l lelf_right_a lelf_right_b \\\n",
|
||
"count 47662.000000 47662.000000 47662.000000 47662.000000 \n",
|
||
"mean 2.048382 5.319017 -2.462255 0.554404 \n",
|
||
"std 20.539508 27.817984 6.565894 1.498175 \n",
|
||
"min -37.000000 -46.000000 -17.000000 -3.000000 \n",
|
||
"25% -18.000000 -22.000000 -9.000000 -1.000000 \n",
|
||
"50% 2.000000 6.000000 -2.000000 0.000000 \n",
|
||
"75% 22.000000 34.000000 4.000000 2.000000 \n",
|
||
"max 50.000000 56.000000 11.000000 7.000000 \n",
|
||
"\n",
|
||
" lelf_right_R_stddev ... lelf_right_S_min lelf_right_V_min \\\n",
|
||
"count 47662.000000 ... 47662.000000 47662.000000 \n",
|
||
"mean -1.499895 ... -9.937833 -0.313226 \n",
|
||
"std 8.691766 ... 41.795104 6.608920 \n",
|
||
"min -21.000000 ... -124.000000 -24.000000 \n",
|
||
"25% -8.000000 ... -47.000000 -5.000000 \n",
|
||
"50% -3.000000 ... -13.000000 -1.000000 \n",
|
||
"75% 6.000000 ... 29.000000 4.000000 \n",
|
||
"max 18.000000 ... 138.000000 29.000000 \n",
|
||
"\n",
|
||
" lelf_right_l_min lelf_right_a_min lelf_right_b_min \\\n",
|
||
"count 47662.000000 47662.000000 47662.000000 \n",
|
||
"mean 12.762725 -0.956968 0.740821 \n",
|
||
"std 43.965507 2.272874 2.203069 \n",
|
||
"min -74.000000 -9.000000 -5.000000 \n",
|
||
"25% -28.000000 -3.000000 -1.000000 \n",
|
||
"50% 16.000000 -1.000000 0.000000 \n",
|
||
"75% 49.000000 1.000000 2.000000 \n",
|
||
"max 101.000000 7.000000 10.000000 \n",
|
||
"\n",
|
||
" lelf_right_gray_value lelf_right_gray_stddev lelf_right_gray_hist \\\n",
|
||
"count 47662.000000 47662.000000 47662.000000 \n",
|
||
"mean 5.371596 -2.692417 -2.581889 \n",
|
||
"std 28.070441 11.119842 46.145429 \n",
|
||
"min -46.000000 -27.000000 -251.000000 \n",
|
||
"25% -22.000000 -12.000000 -42.000000 \n",
|
||
"50% 6.000000 -4.000000 2.000000 \n",
|
||
"75% 34.000000 8.000000 39.000000 \n",
|
||
"max 56.000000 20.000000 101.000000 \n",
|
||
"\n",
|
||
" lelf_right_gray_max lelf_right_gray_min \n",
|
||
"count 47662.000000 47662.000000 \n",
|
||
"mean 0.880219 12.910872 \n",
|
||
"std 9.529551 43.804821 \n",
|
||
"min -28.000000 -70.000000 \n",
|
||
"25% -6.000000 -28.000000 \n",
|
||
"50% 1.000000 15.000000 \n",
|
||
"75% 9.000000 50.000000 \n",
|
||
"max 39.000000 100.000000 \n",
|
||
"\n",
|
||
"[8 rows x 50 columns]"
|
||
]
|
||
},
|
||
"execution_count": 6,
|
||
"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": null,
|
||
"metadata": {},
|
||
"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_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": null,
|
||
"metadata": {},
|
||
"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": null,
|
||
"metadata": {},
|
||
"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": null,
|
||
"metadata": {
|
||
"scrolled": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"train_features.describe()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# svc支持向量机算法"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"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",
|
||
"#集成学习(Ensemble Learning) \n",
|
||
"from sklearn.ensemble import ExtraTreesClassifier\n",
|
||
"from sklearn.ensemble import AdaBoostClassifier\n",
|
||
"\n",
|
||
"#报错:ModuleNotFoundError: No module named 'sklearn.cross_validation'\n",
|
||
"#原因:当前 sklearn 版本中 cross_validation 已经替换成了 model_selection,但其中的函数功能并没有变化\n",
|
||
"#from sklearn.cross_validation import train_test_split\n",
|
||
"from sklearn.model_selection import train_test_split\n",
|
||
"X_train ,X_test,y_train,y_test = train_test_split(train_features_9,train_labels,test_size = 0.3, random_state = 20)\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"##fit_transform,fit,transform区别和作用详解\n",
|
||
"###fit和transform没有任何关系,仅仅是数据处理的两个不同环节,之所以出来fit_transform这个函数名,仅仅是为了写代码方便,会高效一点。\n",
|
||
"###sklearn里的封装好的各种算法使用前都要fit,fit相对于整个代码而言,为后续API服务。fit之后,然后调用各种API方法,transform只是其中一个API方法,所以当你调用transform之外的方法,也必须要先fit。\n",
|
||
"###fit原义指的是安装、使适合的意思,其实有点train的含义,但是和train不同的是,它并不是一个训练的过程,而是一个适配的过程,过程都是确定的,最后得到一个可用于转换的有价值的信息。\n",
|
||
"###https://blog.csdn.net/weixin_38278334/article/details/82971752\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {
|
||
"scrolled": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"##这个不需要了!\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": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"from sklearn.model_selection import StratifiedKFold #交叉验证\n",
|
||
"from sklearn.model_selection import GridSearchCV #网格搜索\n",
|
||
"from sklearn.model_selection import train_test_split #将数据集分开成训练集和测试集\n",
|
||
"from xgboost import XGBClassifier #xgboost\n",
|
||
"\n",
|
||
"#这个不需要了!\n",
|
||
"model = XGBClassifier()\n",
|
||
"learning_rate = [0.0001,0.001,0.01,0.1,0.2,0.3] #学习率\n",
|
||
"gamma = [1, 0.1, 0.01, 0.001]\n",
|
||
"param_grid = dict(learning_rate = learning_rate,gamma = gamma)#转化为字典格式,网络搜索要求\n",
|
||
"kflod = StratifiedKFold(n_splits=10, shuffle = True,random_state=7)#将训练/测试数据集划分10个互斥子集,\n",
|
||
"grid_search = GridSearchCV(model,param_grid,scoring = 'neg_log_loss',n_jobs = -1,cv = kflod)\n",
|
||
"#scoring指定损失函数类型,n_jobs指定全部cpu跑,cv指定交叉验证\n",
|
||
"grid_result = grid_search.fit(X_train, y_train) #运行网格搜索\n",
|
||
"print(\"Best: %f using %s\" % (grid_result.best_score_,grid_search.best_params_))\n",
|
||
"#grid_scores_:给出不同参数情况下的评价结果。best_params_:描述了已取得最佳结果的参数的组合\n",
|
||
"#best_score_:成员提供优化过程期间观察到的最好的评分\n",
|
||
"#具有键作为列标题和值作为列的dict,可以导入到DataFrame中。\n",
|
||
"#注意,“params”键用于存储所有参数候选项的参数设置列表。\n",
|
||
"means = grid_result.cv_results_['mean_test_score']\n",
|
||
"params = grid_result.cv_results_['params']\n",
|
||
"for mean,param in zip(means,params):\n",
|
||
" print(\"%f with: %r\" % (mean,param))\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"from sklearn.model_selection import StratifiedKFold #交叉验证\n",
|
||
"from sklearn.model_selection import GridSearchCV #网格搜索\n",
|
||
"from sklearn.model_selection import GridSearchCV\n",
|
||
"from sklearn import metrics \n",
|
||
"#https://blog.csdn.net/WJWFighting/article/details/80983022\n",
|
||
"thresholds=np.linspace(0,0.1,20)#设置gamma参数列表,生成等差数列\n",
|
||
"thresholds\n",
|
||
"param_grid={'gamma':thresholds}\n",
|
||
"clf=GridSearchCV(SVC(kernel='rbf'),param_grid,cv=5)\n",
|
||
"clf.fit(X_train, y_train)\n",
|
||
"\n",
|
||
"print(\"best param: {0}\\nbest score: {1}\".format(clf.best_params_, clf.best_score_))\n",
|
||
"\n",
|
||
"y_pred = clf.predict(X_test)\n",
|
||
"\n",
|
||
"print(\"查准率:\",metrics.precision_score(y_pred, y_test))\n",
|
||
"print(\"召回率:\",metrics.recall_score(y_pred, y_test))\n",
|
||
"print(\"F1:\",metrics.f1_score(y_pred, y_test))\n",
|
||
"\n",
|
||
"print(\"最佳效果:%0.3f\"% clf.best_score_)\n",
|
||
"print(\"最优参数组合:\")\n",
|
||
"best_parameters=clf.best_estimator_.get_params()\n",
|
||
"for param_name in sorted(param_grid.keys()):\n",
|
||
" print('\\t%s:%r' %(param_name,best_parameters[param_name]))\n",
|
||
"\n",
|
||
"#print(\"训练集评分:\",clf.score(x_train,y_train))\n",
|
||
"#print(\"测试集评分:\",clf.score(x_test,y_test))\n",
|
||
"\n",
|
||
"\"\"\"\n",
|
||
"SVC方法。常用的参数如下:\n",
|
||
"C:默认为1.0,是对于错误的惩罚项。\n",
|
||
"kernel:指定算法的核函数,默认为'rbf',常用的有'linear','poly','rbf','sigmoid','precomputed'。\n",
|
||
"degree:多项式核函数的次数('poly'),默认为3。 其他核函数会将其忽略。\n",
|
||
"gamma:'rbf','poly'和'sigmoid'的核系数。 如果gamma是'auto',那么将使用1 / n_features。\n",
|
||
"\"\"\""
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {
|
||
"scrolled": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"#X_train = train_features_9\n",
|
||
"#y_train = train_labels\n",
|
||
"# X_test = test_features\n",
|
||
"# y_test = test_labels\n",
|
||
"#clf_svm_linear = SVC(kernel = 'linear',gamma=0.00001,C=0.01)\n",
|
||
"#clf_svm_linear = SVC(kernel = 'linear',gamma=0.01,C=0.01)\n",
|
||
"#svm linear accuracy score: 0.9746101835242169\n",
|
||
"clf_svm_linear = SVC(kernel = 'linear',C=0.1)\n",
|
||
"#svm linear accuracy score: 0.974885004599816\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",
|
||
"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=None))\n",
|
||
"print (\"precision_score:\" , precision_score(y_test,pred,average=None))\n",
|
||
"print (\"recall_score :\" , recall_score(y_test,pred,average=None))\n",
|
||
"print(\"preds:\",pred[:10])\n",
|
||
"print('trues:\\n',y_test[:10])\n",
|
||
"print(\"\\n\")\n",
|
||
"###针对同一份数据,\n",
|
||
"clf_svc_poly = SVC(kernel='poly',degree=3,gamma=0.001,C=0.1)\n",
|
||
"#clf_svc_poly = SVC(kernel='poly',degree=3,gamma=0.00001,C=0.1)\n",
|
||
"\n",
|
||
"##svm polynomial accuracy score: 0.37460901563937443\n",
|
||
"clf_svc_poly.fit(X_train, y_train)\n",
|
||
"pred_poly = clf_svc_poly.predict(X_test)\n",
|
||
"print (\"svm polynomial accuracy score:\" , accuracy_score(y_test,pred_poly))\n",
|
||
"print (\"f1 score :\" , f1_score(y_test,pred_poly,average=None))\n",
|
||
"print (\"precision_score:\" , precision_score(y_test,pred_poly,average=None))\n",
|
||
"print (\"recall_score :\" , recall_score(y_test,pred_poly,average=None))\n",
|
||
"\n",
|
||
"clf_svc_rbf = SVC(kernel='rbf', gamma=0.05,C=0.1)\n",
|
||
"##svm rbf accuracy score: 0.284360625574977\n",
|
||
"clf_svc_rbf.fit(X_train, y_train)\n",
|
||
"pred_rbf = clf_svc_rbf.predict(X_test)\n",
|
||
"print (\"svm rbf accuracy score:\" , accuracy_score(y_test,pred_rbf))\n",
|
||
"print (\"f1 score :\" , f1_score(y_test,pred_rbf,average=None))\n",
|
||
"print (\"precision_score:\" , precision_score(y_test,pred_rbf,average=None))\n",
|
||
"print (\"recall_score :\" , recall_score(y_test,pred_rbf,average=None))\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"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_50features_2020.cpp\",'wb')\n",
|
||
"#f = open(\"clf/clf_svm_linear_50features_20171207.txt\",'wb')\n",
|
||
"#f = open(\"clf_svm_linear_125100_low_feature_data.txt\",'wb')\n",
|
||
"f.write(porter_clf_svm_linear.encode())\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": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# 随机森林算法"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 7,
|
||
"metadata": {},
|
||
"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.model_selection import train_test_split\n",
|
||
"X_train ,X_test,y_train,y_test = train_test_split(train_features_9,train_labels,test_size = 0.3, random_state = 20)\n",
|
||
"#X_train ,X_test,y_train,y_test = train_test_split(train_features_9,train_labels,test_size = 0.2, random_state = 20)\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 8,
|
||
"metadata": {
|
||
"scrolled": true
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
" precision recall f1-score support\n",
|
||
"\n",
|
||
" 0 0.99 0.98 0.99 1698\n",
|
||
" 1 0.99 0.99 0.99 3791\n",
|
||
" 2 0.99 0.99 0.99 2548\n",
|
||
" 3 0.96 0.97 0.96 2693\n",
|
||
" 4 0.98 0.97 0.97 3569\n",
|
||
"\n",
|
||
" accuracy 0.98 14299\n",
|
||
" macro avg 0.98 0.98 0.98 14299\n",
|
||
"weighted avg 0.98 0.98 0.98 14299\n",
|
||
"\n",
|
||
"[[1661 35 1 1 0]\n",
|
||
" [ 10 3762 19 0 0]\n",
|
||
" [ 1 10 2533 4 0]\n",
|
||
" [ 0 0 8 2603 82]\n",
|
||
" [ 0 0 0 110 3459]]\n",
|
||
"---------------------------------\n",
|
||
"\n",
|
||
"Accuracy of prediction: 0.379\n",
|
||
"RandomForest accuracy score: 0.980348276103224\n",
|
||
"---------------------------------\n",
|
||
"\n",
|
||
"f1 score: 0.980348276103224\n",
|
||
"precision_score: 0.980348276103224\n",
|
||
"recall_score: 0.980348276103224\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"from sklearn.ensemble import RandomForestClassifier\n",
|
||
"from sklearn.metrics import classification_report\n",
|
||
"from sklearn.metrics import classification_report,confusion_matrix\n",
|
||
"from sklearn.metrics import f1_score\n",
|
||
"from sklearn.metrics import precision_score\n",
|
||
"from sklearn.metrics import recall_score\n",
|
||
"\n",
|
||
"#rfc = RandomForestClassifier(n_estimators=600)\n",
|
||
"\n",
|
||
"#rfc = RandomForestClassifier(n_estimators=50)\n",
|
||
"#RandomForest accuracy score: 0.9955591300090916\n",
|
||
"\n",
|
||
"rfc = RandomForestClassifier(n_estimators=50,min_samples_leaf=20)\n",
|
||
"#RandomForest accuracy score: 0.9772012028813204/0.9803133086229806/0.9811874956290649/0.9852786908175397\n",
|
||
"\n",
|
||
"#rfc = RandomForestClassifier(n_estimators=50)\n",
|
||
"#RandomForest accuracy score: 0.9955940974893349\n",
|
||
"\n",
|
||
"#rfc = RandomForestClassifier(n_estimators=100,min_samples_leaf=50)\n",
|
||
"#RandomForest accuracy score: 0.97688649555913\n",
|
||
"\n",
|
||
"#rfc = RandomForestClassifier(n_estimators=50,min_samples_leaf=100)\n",
|
||
"#RandomForest accuracy score: 0.9669906986502552\n",
|
||
"\n",
|
||
"\n",
|
||
"rfc.fit(X_train, y_train)\n",
|
||
"rfc_pred = rfc.predict(X_test)\n",
|
||
"cr = classification_report(y_test,rfc_pred)\n",
|
||
"print(cr)\n",
|
||
"cm = confusion_matrix(y_test,rfc_pred)\n",
|
||
"print(cm)\n",
|
||
"\n",
|
||
"print(\"---------------------------------\\n\")\n",
|
||
"print (\"Accuracy of prediction:\",round((cm[0,0]+cm[1,1])/cm.sum(),3))\n",
|
||
"print (\"RandomForest accuracy score:\" , accuracy_score(y_test,rfc_pred))\n",
|
||
"print(\"---------------------------------\\n\")\n",
|
||
"print (\"f1 score:\" , f1_score(y_test,rfc_pred,average='micro'))\n",
|
||
"print (\"precision_score:\" , precision_score(y_test,rfc_pred,average='micro'))\n",
|
||
"print (\"recall_score:\" , recall_score(y_test,rfc_pred,average='micro'))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 9,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"模型C代码导出完成\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"import m2cgen as m2c\n",
|
||
"\n",
|
||
"# 导出纯C代码\n",
|
||
"c_code = m2c.export_to_c(rfc)\n",
|
||
"# 保存文件,用文本模式w,不要wb\n",
|
||
"with open(\"clf/ov_rtree50_f20_20260701.cpp\", \"w\", encoding=\"utf-8\") as f:\n",
|
||
" f.write(c_code)\n",
|
||
"print(\"模型C代码导出完成\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"from sklearn_porter import Porter\n",
|
||
"\n",
|
||
"porter_clf_rfc = Porter(rfc, 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/ov_rtree50_f20_20260701.cpp\",'wb')\n",
|
||
"#f = open(\"clf/clf_svm_linear_50features_20171207.txt\",'wb')\n",
|
||
"#f = open(\"clf_svm_linear_125100_low_feature_data.txt\",'wb')\n",
|
||
"f.write(porter_clf_rfc.encode())\n",
|
||
"f.close()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"from sklearn.model_selection import KFold\n",
|
||
"\n",
|
||
"X = train_features_9.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",
|
||
" rfc = RandomForestClassifier(n_estimators=600)\n",
|
||
" rfc.fit(X_train, y_train)\n",
|
||
" rfc_pred = rfc.predict(X_test) \n",
|
||
" print (\"svm linear accuracy score:\" , accuracy_score(y_test,rfc_pred))\n",
|
||
" print (\"f1 score:\" , f1_score(y_test,rfc_pred,average='micro'))\n",
|
||
" print (\"precision_score:\" , precision_score(y_test,rfc_pred,average='micro'))\n",
|
||
" print (\"recall_score:\" , recall_score(y_test,rfc_pred,average='micro'))\n",
|
||
"\n",
|
||
" training_stop_time = datetime.now()\n",
|
||
"\n",
|
||
" print (\"runing time:\",(training_stop_time - trarining_start_time))\n",
|
||
" print(\"\\n\\n\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"nsimu = 21\n",
|
||
"accuracy=[0]*nsimu\n",
|
||
"ntree = [0]*nsimu\n",
|
||
"for i in range(1,nsimu):\n",
|
||
" rfc = RandomForestClassifier(n_estimators=i*5,min_samples_split=10,max_depth=None,criterion='gini')\n",
|
||
" rfc.fit(X_train, y_train)\n",
|
||
" rfc_pred = rfc.predict(X_test)\n",
|
||
" cm = confusion_matrix(y_test,rfc_pred)\n",
|
||
" accuracy[i] = (cm[0,0]+cm[1,1])/cm.sum()\n",
|
||
" ntree[i]=i*5\n",
|
||
"\n",
|
||
" print (\"RandomForest accuracy score:\" , accuracy_score(y_test,rfc_pred))\n",
|
||
" print (\"f1 score:\" , f1_score(y_test,rfc_pred,average='micro')) \n",
|
||
" print (\"Accuracy of prediction:\",round((cm[0,0]+cm[1,1])/cm.sum(),3))\n",
|
||
"\n",
|
||
" \n",
|
||
"plt.figure(figsize=(10,6))\n",
|
||
"plt.scatter(x=ntree[1:nsimu],y=accuracy[1:nsimu],s=60,c='red')\n",
|
||
"plt.title(\"Number of trees in the Random Forest vs. prediction accuracy (criterion: 'gini')\", fontsize=18)\n",
|
||
"plt.xlabel(\"Number of trees\", fontsize=15)\n",
|
||
"plt.ylabel(\"Prediction accuracy from confusion matrix\", fontsize=15)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {
|
||
"scrolled": true
|
||
},
|
||
"outputs": [],
|
||
"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": null,
|
||
"metadata": {},
|
||
"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": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"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": [
|
||
"## 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": null,
|
||
"metadata": {},
|
||
"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 [conda env:base] *",
|
||
"language": "python",
|
||
"name": "conda-base-py"
|
||
},
|
||
"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.13.9"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 4
|
||
}
|