From 61469be5065dbb154c3446844586e0c9e874ab02 Mon Sep 17 00:00:00 2001 From: cgsdfc Date: Mon, 6 Feb 2023 11:19:45 +0800 Subject: [PATCH] add lic --- Application.py | 22 ++ Batch.py | 22 ++ LICENSE | 21 ++ NAME.py | 22 ++ OutlierDetect.py | 22 ++ PYODLIBS.py | 22 ++ UserInterface.py | 22 ++ add-lic.py | 39 +++ app.py | 22 ++ "bugfix/0905\351\234\200\346\261\202.md" | 9 - "bugfix/0908\351\234\200\346\261\202" | 2 - compile-ui.py | 22 ++ designer.py | 22 ++ nb/PYOD.ipynb | 411 ----------------------- package-exe.py | 22 ++ res_rc.py | 22 ++ scripts/convert-ico.py | 22 ++ setup-env.py | 22 ++ 18 files changed, 346 insertions(+), 422 deletions(-) create mode 100644 add-lic.py delete mode 100644 "bugfix/0905\351\234\200\346\261\202.md" delete mode 100644 "bugfix/0908\351\234\200\346\261\202" delete mode 100644 nb/PYOD.ipynb diff --git a/Application.py b/Application.py index 4fba3fe..cc88898 100644 --- a/Application.py +++ b/Application.py @@ -1,3 +1,25 @@ +# MIT License +# +# Copyright (c) 2022 Cong Feng +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + """ 这个文件要实现UI的回调,处理用户输入,以及启动异常检测程序。 """ diff --git a/Batch.py b/Batch.py index ab6710d..507a349 100644 --- a/Batch.py +++ b/Batch.py @@ -1,3 +1,25 @@ +# MIT License +# +# Copyright (c) 2022 Cong Feng +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + """ 批量运行数据生成和模型训练 """ diff --git a/LICENSE b/LICENSE index e69de29..832bf81 100644 --- a/LICENSE +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Cong Feng + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/NAME.py b/NAME.py index 24431d4..3e7db5a 100644 --- a/NAME.py +++ b/NAME.py @@ -1,2 +1,24 @@ +# MIT License +# +# Copyright (c) 2022 Cong Feng +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + NAME = '异常流量数据分析软件' print(f'NAME IS {NAME}') diff --git a/OutlierDetect.py b/OutlierDetect.py index 655f7cc..4643c4b 100644 --- a/OutlierDetect.py +++ b/OutlierDetect.py @@ -1,3 +1,25 @@ +# MIT License +# +# Copyright (c) 2022 Cong Feng +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + """ 这个文件要实现对异常检测框架PyOD的封装。 为Application提供接口。我们的输入: diff --git a/PYODLIBS.py b/PYODLIBS.py index 00e4218..097939e 100644 --- a/PYODLIBS.py +++ b/PYODLIBS.py @@ -1,3 +1,25 @@ +# MIT License +# +# Copyright (c) 2022 Cong Feng +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + from pyod.models.abod import ABOD from pyod.models.auto_encoder import AutoEncoder from pyod.models.cblof import CBLOF diff --git a/UserInterface.py b/UserInterface.py index 2c6cabe..c579458 100644 --- a/UserInterface.py +++ b/UserInterface.py @@ -1,3 +1,25 @@ +# MIT License +# +# Copyright (c) 2022 Cong Feng +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'UserInterface.ui' diff --git a/add-lic.py b/add-lic.py new file mode 100644 index 0000000..7e8d348 --- /dev/null +++ b/add-lic.py @@ -0,0 +1,39 @@ +# MIT License +# +# Copyright (c) 2022 Cong Feng +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + + + +from pathlib import Path as P + +COMMENT_CHARS = "#" + +lic = P("./LICENSE").read_text().splitlines() +lic = [" ".join([COMMENT_CHARS, line]) for line in lic] +lic = "\n".join(lic) + "\n\n" + +import itertools + +for f in itertools.chain( + P(".").rglob("*.py"), +): + code = lic + f.read_text() + f.write_text(code) diff --git a/app.py b/app.py index ed202ab..3597a53 100644 --- a/app.py +++ b/app.py @@ -1,3 +1,25 @@ +# MIT License +# +# Copyright (c) 2022 Cong Feng +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + from Application import MyWindow, QtWidgets if __name__ == "__main__": diff --git "a/bugfix/0905\351\234\200\346\261\202.md" "b/bugfix/0905\351\234\200\346\261\202.md" deleted file mode 100644 index d0ab12e..0000000 --- "a/bugfix/0905\351\234\200\346\261\202.md" +++ /dev/null @@ -1,9 +0,0 @@ -1. 支持多维度数据,输入算法后,结果用tsne降维展示; - 1. 不用它的生成数据函数; - -2. 生成一个数据集之后,固定下来,跑不同算法, - 1. 对比找出比较好的算法; - 2. 给算法改名字; - -3. 超参数用默认的就行; - diff --git "a/bugfix/0908\351\234\200\346\261\202" "b/bugfix/0908\351\234\200\346\261\202" deleted file mode 100644 index 7827a86..0000000 --- "a/bugfix/0908\351\234\200\346\261\202" +++ /dev/null @@ -1,2 +0,0 @@ -1. 把AE改叫MVC的方法; -2. 异常流量数据分析软件; diff --git a/compile-ui.py b/compile-ui.py index 1d06d6f..ee18e8a 100644 --- a/compile-ui.py +++ b/compile-ui.py @@ -1,3 +1,25 @@ +# MIT License +# +# Copyright (c) 2022 Cong Feng +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + import os print('编译资源。。。') diff --git a/designer.py b/designer.py index fd2e2b2..b52994e 100644 --- a/designer.py +++ b/designer.py @@ -1,3 +1,25 @@ +# MIT License +# +# Copyright (c) 2022 Cong Feng +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + import os print(f'打开设计师。。。') diff --git a/nb/PYOD.ipynb b/nb/PYOD.ipynb deleted file mode 100644 index 6b97f10..0000000 --- a/nb/PYOD.ipynb +++ /dev/null @@ -1,411 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "from pyod.models.knn import KNN # kNN detector\n", - "from pyod.models.auto_encoder import AutoEncoder # kNN detector\n", - "from pyod.utils.data import generate_data" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "contamination = 0.1 # percentage of outliers\n", - "n_train = 200 # number of training points\n", - "n_test = 100 # number of testing points\n", - "n_features = 100\n", - "\n", - "X_train, X_test, y_train, y_test = generate_data(\n", - " n_train=n_train, n_test=n_test, contamination=contamination, n_features=n_features)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Model: \"sequential_1\"\n", - "_________________________________________________________________\n", - " Layer (type) Output Shape Param # \n", - "=================================================================\n", - " dense_7 (Dense) (None, 100) 10100 \n", - " \n", - " dropout_6 (Dropout) (None, 100) 0 \n", - " \n", - " dense_8 (Dense) (None, 100) 10100 \n", - " \n", - " dropout_7 (Dropout) (None, 100) 0 \n", - " \n", - " dense_9 (Dense) (None, 64) 6464 \n", - " \n", - " dropout_8 (Dropout) (None, 64) 0 \n", - " \n", - " dense_10 (Dense) (None, 32) 2080 \n", - " \n", - " dropout_9 (Dropout) (None, 32) 0 \n", - " \n", - " dense_11 (Dense) (None, 32) 1056 \n", - " \n", - " dropout_10 (Dropout) (None, 32) 0 \n", - " \n", - " dense_12 (Dense) (None, 64) 2112 \n", - " \n", - " dropout_11 (Dropout) (None, 64) 0 \n", - " \n", - " dense_13 (Dense) (None, 100) 6500 \n", - " \n", - "=================================================================\n", - "Total params: 38,412\n", - "Trainable params: 38,412\n", - "Non-trainable params: 0\n", - "_________________________________________________________________\n", - "None\n", - "Epoch 1/100\n", - "6/6 [==============================] - 2s 73ms/step - loss: 12.2921 - val_loss: 10.2527\n", - "Epoch 2/100\n", - "6/6 [==============================] - 0s 16ms/step - loss: 9.5594 - val_loss: 9.1023\n", - "Epoch 3/100\n", - "6/6 [==============================] - 0s 11ms/step - loss: 8.3235 - val_loss: 8.4784\n", - "Epoch 4/100\n", - "6/6 [==============================] - 0s 8ms/step - loss: 7.6335 - val_loss: 8.0899\n", - "Epoch 5/100\n", - "6/6 [==============================] - 0s 11ms/step - loss: 7.1594 - val_loss: 7.8078\n", - "Epoch 6/100\n", - "6/6 [==============================] - 0s 10ms/step - loss: 6.8059 - val_loss: 7.5799\n", - "Epoch 7/100\n", - "6/6 [==============================] - 0s 10ms/step - loss: 6.4807 - val_loss: 7.3636\n", - "Epoch 8/100\n", - "6/6 [==============================] - 0s 23ms/step - loss: 6.1948 - val_loss: 7.1374\n", - "Epoch 9/100\n", - "6/6 [==============================] - 0s 20ms/step - loss: 5.8892 - val_loss: 6.8845\n", - "Epoch 10/100\n", - "6/6 [==============================] - 0s 12ms/step - loss: 5.5526 - val_loss: 6.5765\n", - "Epoch 11/100\n", - "6/6 [==============================] - 0s 11ms/step - loss: 5.1831 - val_loss: 6.2287\n", - "Epoch 12/100\n", - "6/6 [==============================] - 0s 11ms/step - loss: 4.7907 - val_loss: 5.8302\n", - "Epoch 13/100\n", - "6/6 [==============================] - 0s 11ms/step - loss: 4.3451 - val_loss: 5.4392\n", - "Epoch 14/100\n", - "6/6 [==============================] - 0s 10ms/step - loss: 3.9984 - val_loss: 5.1575\n", - "Epoch 15/100\n", - "6/6 [==============================] - 0s 9ms/step - loss: 3.7657 - val_loss: 4.9861\n", - "Epoch 16/100\n", - "6/6 [==============================] - 0s 11ms/step - loss: 3.5590 - val_loss: 4.8246\n", - "Epoch 17/100\n", - "6/6 [==============================] - 0s 10ms/step - loss: 3.3853 - val_loss: 4.6894\n", - "Epoch 18/100\n", - "6/6 [==============================] - 0s 11ms/step - loss: 3.2133 - val_loss: 4.5762\n", - "Epoch 19/100\n", - "6/6 [==============================] - 0s 9ms/step - loss: 3.0771 - val_loss: 4.4509\n", - "Epoch 20/100\n", - "6/6 [==============================] - 0s 10ms/step - loss: 2.9367 - val_loss: 4.3441\n", - "Epoch 21/100\n", - "6/6 [==============================] - 0s 11ms/step - loss: 2.8329 - val_loss: 4.2442\n", - "Epoch 22/100\n", - "6/6 [==============================] - 0s 12ms/step - loss: 2.7282 - val_loss: 4.1513\n", - "Epoch 23/100\n", - "6/6 [==============================] - 0s 10ms/step - loss: 2.6340 - val_loss: 4.0696\n", - "Epoch 24/100\n", - "6/6 [==============================] - 0s 9ms/step - loss: 2.5449 - val_loss: 3.9905\n", - "Epoch 25/100\n", - "6/6 [==============================] - 0s 41ms/step - loss: 2.4506 - val_loss: 3.9173\n", - "Epoch 26/100\n", - "6/6 [==============================] - 0s 21ms/step - loss: 2.3779 - val_loss: 3.8461\n", - "Epoch 27/100\n", - "6/6 [==============================] - 0s 15ms/step - loss: 2.3084 - val_loss: 3.7725\n", - "Epoch 28/100\n", - "6/6 [==============================] - 0s 14ms/step - loss: 2.2452 - val_loss: 3.7053\n", - "Epoch 29/100\n", - "6/6 [==============================] - 0s 22ms/step - loss: 2.1782 - val_loss: 3.6410\n", - "Epoch 30/100\n", - "6/6 [==============================] - 0s 12ms/step - loss: 2.1240 - val_loss: 3.5788\n", - "Epoch 31/100\n", - "6/6 [==============================] - 0s 13ms/step - loss: 2.0702 - val_loss: 3.5181\n", - "Epoch 32/100\n", - "6/6 [==============================] - 0s 12ms/step - loss: 2.0169 - val_loss: 3.4616\n", - "Epoch 33/100\n", - "6/6 [==============================] - 0s 11ms/step - loss: 1.9746 - val_loss: 3.4113\n", - "Epoch 34/100\n", - "6/6 [==============================] - 0s 11ms/step - loss: 1.9303 - val_loss: 3.3607\n", - "Epoch 35/100\n", - "6/6 [==============================] - 0s 18ms/step - loss: 1.8864 - val_loss: 3.3126\n", - "Epoch 36/100\n", - "6/6 [==============================] - 0s 13ms/step - loss: 1.8508 - val_loss: 3.2652\n", - "Epoch 37/100\n", - "6/6 [==============================] - 0s 12ms/step - loss: 1.8099 - val_loss: 3.2209\n", - "Epoch 38/100\n", - "6/6 [==============================] - 0s 11ms/step - loss: 1.7745 - val_loss: 3.1773\n", - "Epoch 39/100\n", - "6/6 [==============================] - 0s 12ms/step - loss: 1.7428 - val_loss: 3.1327\n", - "Epoch 40/100\n", - "6/6 [==============================] - 0s 12ms/step - loss: 1.7084 - val_loss: 3.0929\n", - "Epoch 41/100\n", - "6/6 [==============================] - 0s 13ms/step - loss: 1.6847 - val_loss: 3.0544\n", - "Epoch 42/100\n", - "6/6 [==============================] - 0s 15ms/step - loss: 1.6573 - val_loss: 3.0179\n", - "Epoch 43/100\n", - "6/6 [==============================] - 0s 23ms/step - loss: 1.6297 - val_loss: 2.9820\n", - "Epoch 44/100\n", - "6/6 [==============================] - 0s 14ms/step - loss: 1.6064 - val_loss: 2.9472\n", - "Epoch 45/100\n", - "6/6 [==============================] - 0s 26ms/step - loss: 1.5829 - val_loss: 2.9135\n", - "Epoch 46/100\n", - "6/6 [==============================] - 0s 28ms/step - loss: 1.5650 - val_loss: 2.8814\n", - "Epoch 47/100\n", - "6/6 [==============================] - 0s 26ms/step - loss: 1.5432 - val_loss: 2.8494\n", - "Epoch 48/100\n", - "6/6 [==============================] - 0s 24ms/step - loss: 1.5219 - val_loss: 2.8179\n", - "Epoch 49/100\n", - "6/6 [==============================] - 0s 19ms/step - loss: 1.5075 - val_loss: 2.7892\n", - "Epoch 50/100\n", - "6/6 [==============================] - 0s 14ms/step - loss: 1.4875 - val_loss: 2.7594\n", - "Epoch 51/100\n", - "6/6 [==============================] - 0s 12ms/step - loss: 1.4690 - val_loss: 2.7298\n", - "Epoch 52/100\n", - "6/6 [==============================] - 0s 16ms/step - loss: 1.4581 - val_loss: 2.7026\n", - "Epoch 53/100\n", - "6/6 [==============================] - 0s 12ms/step - loss: 1.4429 - val_loss: 2.6772\n", - "Epoch 54/100\n", - "6/6 [==============================] - 0s 12ms/step - loss: 1.4286 - val_loss: 2.6535\n", - "Epoch 55/100\n", - "6/6 [==============================] - 0s 13ms/step - loss: 1.4178 - val_loss: 2.6289\n", - "Epoch 56/100\n", - "6/6 [==============================] - 0s 13ms/step - loss: 1.4041 - val_loss: 2.6041\n", - "Epoch 57/100\n", - "6/6 [==============================] - 0s 11ms/step - loss: 1.3958 - val_loss: 2.5822\n", - "Epoch 58/100\n", - "6/6 [==============================] - 0s 9ms/step - loss: 1.3827 - val_loss: 2.5614\n", - "Epoch 59/100\n", - "6/6 [==============================] - 0s 9ms/step - loss: 1.3707 - val_loss: 2.5373\n", - "Epoch 60/100\n", - "6/6 [==============================] - 0s 10ms/step - loss: 1.3605 - val_loss: 2.5163\n", - "Epoch 61/100\n", - "6/6 [==============================] - 0s 9ms/step - loss: 1.3536 - val_loss: 2.4970\n", - "Epoch 62/100\n", - "6/6 [==============================] - 0s 12ms/step - loss: 1.3417 - val_loss: 2.4780\n", - "Epoch 63/100\n", - "6/6 [==============================] - 0s 24ms/step - loss: 1.3338 - val_loss: 2.4597\n", - "Epoch 64/100\n", - "6/6 [==============================] - 0s 12ms/step - loss: 1.3275 - val_loss: 2.4427\n", - "Epoch 65/100\n", - "6/6 [==============================] - 0s 12ms/step - loss: 1.3197 - val_loss: 2.4249\n", - "Epoch 66/100\n", - "6/6 [==============================] - 0s 12ms/step - loss: 1.3156 - val_loss: 2.4065\n", - "Epoch 67/100\n", - "6/6 [==============================] - 0s 10ms/step - loss: 1.3016 - val_loss: 2.3900\n", - "Epoch 68/100\n", - "6/6 [==============================] - 0s 11ms/step - loss: 1.2976 - val_loss: 2.3736\n", - "Epoch 69/100\n", - "6/6 [==============================] - 0s 12ms/step - loss: 1.2901 - val_loss: 2.3571\n", - "Epoch 70/100\n", - "6/6 [==============================] - 0s 11ms/step - loss: 1.2853 - val_loss: 2.3417\n", - "Epoch 71/100\n", - "6/6 [==============================] - 0s 13ms/step - loss: 1.2752 - val_loss: 2.3262\n", - "Epoch 72/100\n", - "6/6 [==============================] - 0s 10ms/step - loss: 1.2726 - val_loss: 2.3118\n", - "Epoch 73/100\n", - "6/6 [==============================] - 0s 12ms/step - loss: 1.2655 - val_loss: 2.2979\n", - "Epoch 74/100\n", - "6/6 [==============================] - 0s 11ms/step - loss: 1.2632 - val_loss: 2.2847\n", - "Epoch 75/100\n", - "6/6 [==============================] - 0s 12ms/step - loss: 1.2581 - val_loss: 2.2728\n", - "Epoch 76/100\n", - "6/6 [==============================] - 0s 11ms/step - loss: 1.2521 - val_loss: 2.2599\n", - "Epoch 77/100\n", - "6/6 [==============================] - 0s 10ms/step - loss: 1.2490 - val_loss: 2.2474\n", - "Epoch 78/100\n", - "6/6 [==============================] - 0s 11ms/step - loss: 1.2422 - val_loss: 2.2354\n", - "Epoch 79/100\n", - "6/6 [==============================] - 0s 13ms/step - loss: 1.2403 - val_loss: 2.2238\n", - "Epoch 80/100\n", - "6/6 [==============================] - 0s 18ms/step - loss: 1.2349 - val_loss: 2.2109\n", - "Epoch 81/100\n", - "6/6 [==============================] - 0s 14ms/step - loss: 1.2312 - val_loss: 2.1994\n", - "Epoch 82/100\n", - "6/6 [==============================] - 0s 13ms/step - loss: 1.2252 - val_loss: 2.1894\n", - "Epoch 83/100\n", - "6/6 [==============================] - 0s 12ms/step - loss: 1.2200 - val_loss: 2.1795\n", - "Epoch 84/100\n", - "6/6 [==============================] - 0s 10ms/step - loss: 1.2214 - val_loss: 2.1688\n", - "Epoch 85/100\n", - "6/6 [==============================] - 0s 10ms/step - loss: 1.2179 - val_loss: 2.1580\n", - "Epoch 86/100\n", - "6/6 [==============================] - 0s 11ms/step - loss: 1.2122 - val_loss: 2.1480\n", - "Epoch 87/100\n", - "6/6 [==============================] - 0s 11ms/step - loss: 1.2103 - val_loss: 2.1386\n", - "Epoch 88/100\n", - "6/6 [==============================] - 0s 11ms/step - loss: 1.2097 - val_loss: 2.1295\n", - "Epoch 89/100\n", - "6/6 [==============================] - 0s 18ms/step - loss: 1.2034 - val_loss: 2.1206\n", - "Epoch 90/100\n", - "6/6 [==============================] - 0s 15ms/step - loss: 1.1998 - val_loss: 2.1119\n", - "Epoch 91/100\n", - "6/6 [==============================] - 0s 13ms/step - loss: 1.1979 - val_loss: 2.1035\n", - "Epoch 92/100\n", - "6/6 [==============================] - 0s 11ms/step - loss: 1.1979 - val_loss: 2.0951\n", - "Epoch 93/100\n", - "6/6 [==============================] - 0s 10ms/step - loss: 1.1931 - val_loss: 2.0868\n", - "Epoch 94/100\n", - "6/6 [==============================] - 0s 14ms/step - loss: 1.1905 - val_loss: 2.0785\n", - "Epoch 95/100\n", - "6/6 [==============================] - 0s 12ms/step - loss: 1.1886 - val_loss: 2.0712\n", - "Epoch 96/100\n", - "6/6 [==============================] - 0s 11ms/step - loss: 1.1862 - val_loss: 2.0635\n", - "Epoch 97/100\n", - "6/6 [==============================] - 0s 10ms/step - loss: 1.1818 - val_loss: 2.0560\n", - "Epoch 98/100\n", - "6/6 [==============================] - 0s 11ms/step - loss: 1.1790 - val_loss: 2.0489\n", - "Epoch 99/100\n", - "6/6 [==============================] - 0s 10ms/step - loss: 1.1830 - val_loss: 2.0422\n", - "Epoch 100/100\n", - "6/6 [==============================] - 0s 11ms/step - loss: 1.1797 - val_loss: 2.0353\n", - "7/7 [==============================] - 0s 1ms/step\n", - "4/4 [==============================] - 0s 2ms/step\n", - "4/4 [==============================] - 0s 3ms/step\n", - "4/4 [==============================] - 0s 2ms/step\n", - "4/4 [==============================] - 0s 2ms/step\n" - ] - } - ], - "source": [ - "# train kNN detector\n", - "clf_name = 'AutoEncoder'\n", - "clf = AutoEncoder()\n", - "clf.fit(X_train)\n", - "\n", - "# get the prediction labels and outlier scores of the training data\n", - "y_train_pred = clf.labels_ # binary labels (0: inliers, 1: outliers)\n", - "y_train_scores = clf.decision_scores_ # raw outlier scores\n", - "\n", - "# get the prediction on the test data\n", - "y_test_pred = clf.predict(X_test) # outlier labels (0 or 1)\n", - "y_test_scores = clf.decision_function(X_test) # outlier scores\n", - "\n", - "# it is possible to get the prediction confidence as well\n", - "y_test_pred, y_test_pred_confidence = clf.predict(X_test, return_confidence=True) # outlier labels (0 or 1) and confidence in the range of [0,1]" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "On Training Data:\n", - "AutoEncoder ROC:1.0, precision @ rank n:1.0\n", - "\n", - "On Test Data:\n", - "AutoEncoder ROC:1.0, precision @ rank n:1.0\n" - ] - } - ], - "source": [ - "from pyod.utils.data import evaluate_print\n", - "# evaluate and print the results\n", - "print(\"\\nOn Training Data:\")\n", - "evaluate_print(clf_name, y_train, y_train_scores)\n", - "print(\"\\nOn Test Data:\")\n", - "evaluate_print(clf_name, y_test, y_test_scores)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "from pyod.utils.example import visualize\n", - "from sklearn.manifold import TSNE" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "d:\\Users\\fengcong\\AppData\\Local\\Programs\\Python\\Python37\\lib\\site-packages\\sklearn\\manifold\\_t_sne.py:783: FutureWarning: The default initialization in TSNE will change from 'random' to 'pca' in 1.2.\n", - " FutureWarning,\n", - "d:\\Users\\fengcong\\AppData\\Local\\Programs\\Python\\Python37\\lib\\site-packages\\sklearn\\manifold\\_t_sne.py:793: FutureWarning: The default learning rate in TSNE will change from 200.0 to 'auto' in 1.2.\n", - " FutureWarning,\n", - "d:\\Users\\fengcong\\AppData\\Local\\Programs\\Python\\Python37\\lib\\site-packages\\sklearn\\manifold\\_t_sne.py:783: FutureWarning: The default initialization in TSNE will change from 'random' to 'pca' in 1.2.\n", - " FutureWarning,\n", - "d:\\Users\\fengcong\\AppData\\Local\\Programs\\Python\\Python37\\lib\\site-packages\\sklearn\\manifold\\_t_sne.py:793: FutureWarning: The default learning rate in TSNE will change from 200.0 to 'auto' in 1.2.\n", - " FutureWarning,\n" - ] - } - ], - "source": [ - "X_train2d = TSNE().fit_transform(X_train)\n", - "X_test2d = TSNE().fit_transform(X_test)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7oAAAN+CAYAAAA7fXfPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAADazklEQVR4nOzdeXxTVf7/8XfSFigUyl5AKiAoiBsCLgwom7uCjqgsLqAILoAbjqPjDKLwHUdccFTGERCXEUUdRMd9dARExA3ckcW2KCoWFCk7lPb8/ri/G5o2y01y06S3r+fjwQPNcnNyE/LOOTnnc3zGGCMAAAAAADzCn+oGAAAAAADgJjq6AAAAAABPoaMLAAAAAPAUOroAAAAAAE+howsAAAAA8BQ6ugAAAAAAT6GjCwAAAADwFDq6AAAAAABPoaMLAAAAAPAUOroAaiyfzxf0JysrS82bN9cRRxyhUaNGaf78+dq3b1+qm5n23nrrLfXp00cNGzYMnMtY7NmzR02aNJHP59OAAQOS1Ep3TZ48ucr7J9SfdevWpbqpCbGf5+OPP57SdowaNSrovPr9fuXm5qp9+/YaNGiQpk2bpuLi4pS2EQDgLZmpbgAAJGrkyJGSpPLycpWUlGjNmjV68skn9cQTT6hTp06aO3eujj322BS3Mj19//33+v3vf6+9e/fqpJNOUsuWLWM+xiuvvKItW7ZIkhYvXqwffvhBbdu2da2NkydP1u23367HHntMo0aNcu24knTUUUepW7duYa/Pyclx9fFqu969e6tTp06SpB07dmjDhg363//+p1deeUV/+ctfdMcdd+imm26KebAllPbt2+u7776TMSbhY8Xj8ccf16WXXqrbbrtNkydPTkkbAKA2o6MLoMYL9WtVQUGB/vSnP+m5555T//79tXTp0ogdmtrq7bff1o4dOwKdjHj861//kiS1bt1aGzZs0Ny5c/XHP/7RzWYmzTnnnEMnpBpdfvnlVQYrdu3apdmzZ+vmm2/WzTffrJKSEv31r39NTQMBAJ7B1GUAntSxY0c9++yzGj16tHbu3KnLLrss1U1KSz/88IMk6aCDDorr/ps3b9Zrr72m7OxszZo1S9L+ji/gRHZ2tiZMmKBXX31VGRkZuvPOO/X555+nulkAgBqOji4AT7v33nvVoEEDffrpp3rvvfeqXL9+/XqNHz9eHTt2VL169dS0aVOdddZZev/996vcdtGiRfL5fBo1apQ2btyo0aNHq1WrVmrQoIH69OkTdJ9//vOfOvLII5Wdna38/HxNnjxZ5eXlIdu4cuVKXXjhhWrdurXq1KmjAw44QJdccolWr14d8/PduXOnpkyZosMPP1zZ2dnKzc3ViSeeqHnz5oV8Lrfddpsk6dJLLw2sn4zlF85nn31WpaWlGjx4sM444wy1b99eX3/9tT799NOQt+/Xr1/Yta/r1q2Tz+dTv379Ape1b99et99+e5U2+nw+LVq0KOj+//rXv9SnTx81atRI9evX15FHHqk777xTu3fvdvx8Iqm43vXLL7/U4MGD1aRJEzVo0EB9+/YN+Z6xffjhhxo2bJgOOOAA1a1bV61bt9bAgQMDgwMVrV+/XldccYXatWununXrqmXLljr33HP18ccfhz3+f/7zH/Xq1Uv169dXs2bNNGTIEK1Zsybi89m5c6fuvPNOHX300crJyVFOTo6OP/54PfHEEyFv7/P51L59e+3du1d33HGHunTporp16+qcc86J+DhO9evXT8OHD5ckPfjgg1Wu37dvnx5++GH16tVLjRo1UnZ2trp166b7778/aC2+/d7+7rvvAu22/7Rv3z6uY1a0Y8cO3XXXXerZs6caNWqkBg0aqEuXLho3blzgnPfr10+XXnqpJOn2228PakPlGSivvfaaTj75ZDVp0kT16tVT586ddfPNNweWA1RU8T340Ucf6ayzzlKzZs3k8/n02WefOTnNAFB7GACooSQZJx9j5513npFk7rjjjqDL33//fdOkSRMjyXTu3Nmce+655oQTTjCZmZkmIyPDzJs3L+j2CxcuNJLM4MGDzUEHHWTatWtnhg4dao477jgjydSvX9989dVX5pprrjHZ2dnmjDPOMGeddZZp2LChkWT+9Kc/VWnb22+/bbKzs40kc/TRR5thw4aZbt26GUkmJyfHvPvuu47Px9atW02PHj2MJNOiRQtz3nnnmdNPP93UrVvXSDLXXHNN4LbffPONGTlypDnqqKOMJNO7d28zcuRIM3LkSLNgwQLHj9mrVy8jybz88svGGGP+9Kc/GUnmhhtuCHn7vn37GkmmqKioynVFRUVGkunbt2/gsokTJ4Zs48iRI80333wTuN3YsWONJFOvXj1zxhlnmPPOO880b97cSDK9evUyO3bsCHqs2267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XbvUtGnTKgMjocTzfrDv065du4j3qch+799666269dZbw7YnVBGvli1bqm7dumHvk6iK/97sc2a3d9asWSGLd1W0efPmsP8+K4rnmOvXr5dkVXR3QyL//g888EBX2gAAXkZHF4Dn2RWAu3btGrjM/lXzvPPOi9gRC/XraKhfwWK53im3f7Fx83j2r7VbtmxRnz59qlyflZWlHTt26IUXXqjyi284bv3SXJnb59Gt1zdWbj0P+zz36dMn5k5bvXr1XGlDOPa/1YMPPjjwq7bd3m7duumoo46KeH+nnfBkHNNtkV7vZL8OAOAFdHQBeFpJSYnefPNNSVL//v0Dl7dt21arV6/WzTffrB49eqSkbW3atJGkwDYoldm/Ojn5hSrasUpKSrRlyxZlZ2c7+nUxktLSUj333HOSpE2bNmnTpk1hb/uvf/0rqKNbp04dSdL27dur3Nb+xSwWzZo1U506dfTLL7+E/fU4lvPopubNmys7O1ubN2/Wli1b1Lhx44i3j+f90Lp1a61evVrfffdd0ECOLdSx7F+kzznnHE2cONHJU6k2zz77rKSq/1Ylq2MeatuheMRzzPz8fElSQUGBK21o06aNioqKwr52qXrfAoBXsEYXgKdNnDhRO3bs0DHHHKNevXoFLj/55JMlSQsWLEhV0wLrgJ955pmQ1z/11FNBt4ukR48eys7O1vLly7V27dqwx+rdu3fCv0i+9tpr+vXXX9WzZ08Zq6hhlT92p/N///tf0LrV1q1bS1LIPV7feuutkI9nd45D7WualZWl448/XpKq7BUsSV999ZU+//xz5eTkqFu3bjE/10RkZGQE9gSeOXNm1Nvbr/Pzzz+vsrKyKteHej/Y/20PPFS0efPmwHrcitLhvR/KokWLNG/ePPl8Pk2YMCFwef/+/ZWRkaFXXnlFpaWljo8X6X0TzzFPOukkSda/11ADNbE8vhT53/+mTZv05ptvyufzRV1eAQAIjY4uAE8qLCzU0KFD9eijj6pBgwZ69NFHg66/4oor1LJlS02bNk0zZ86sMm123759evPNN/XVV18lrY0XXHCB8vLy9N5771XpCD3wwAP65JNPdMABB2jIkCFRj9WgQQNddtllKi8v17hx47Rjx47AdWvWrNHUqVMlSddcc03C7banLQ8fPjzsberXr6/BgwervLxcTz/9dODyvn37SpLuvfde7dy5M3D5O++8o/vvvz/ksexfOlevXh3yertTNHnyZBUWFgYu37Ztm8aPHy9jjK644oqUTPf84x//KJ/Pp//7v//TwoULg67bt2+fXnvttcD/9+vXT0cccYTWrVunSZMmBRVmWrBggV544QXl5OTosssuC1x+6aWXqm7dupo7d26gWJJk/ep+/fXXB70PbMcdd5xOPvlkLV26VOPGjdPWrVur3Obzzz/XG2+8kdBzd2r37t166KGHdOaZZ6qsrEx/+ctfdPjhhweuP+CAA3TZZZdp3bp1Gj58uIqLi6sc49tvv9X8+fODLov0vonnmMcee6z69++vjRs3auzYsVXO7bp16/Tll186enxJGjdunPx+f+Dfum3v3r2aMGGCdu3apXPPPTfwSzIAIEapKvcMAInS/9+GZOTIkWbkyJHm4osvNmeffbY59NBDA1v9HHzwwebjjz8Oef9ly5aZ5s2bG0kmPz/fnH766WbEiBFmwIABpnHjxkaSWbBgQeD29vZCI0eODHm8SNuZhNsi5+233zbZ2dlGkunRo4cZPny4Ofroo40kk5OTY959913H52Pr1q2BLYlatmxpzj//fHPGGWeYevXqGUnmmmuucdyucH777TdTt25d4/f7o+6l+p///KfKNj07d+40nTt3DmyjM2TIEHPccccZv99vbrzxxpDbC/3444+mXr16JiMjw5x22mnmsssuM6NHjzarVq0K3Gbs2LFGksnOzjZnnnmmOf/8802LFi2MJHP88cebHTt2hHzeRx11VOD9E+rP8uXLHZ+rcK//3XffHXg/9uzZ0wwfPtycfPLJpmXLliY3Nzfotl988YVp1qyZkWQOPfRQM3z4cNO7d28jyWRmZppnn322yvEfeughI8n4/X7Tr18/M2zYMNO+fXuTm5sb2Eu3cpuLi4sD77PGjRubfv36mREjRpgzzzzT5OfnB/bYrUghtk9yyt5eqHfv3oFze/7555sTTjghsAVS3bp1zbRp00Jum7Nz505z8sknG0mmQYMGpnfv3mb48OFm8ODBplOnTkaSOfvss4Puc++99xpJJi8vzwwbNsyMHj3a/PGPf0zomD/88EPg/du0aVMzePBgc/7555vu3bsbv99vpk+fHrjtrl27AvtX9+3b11x66aVm9OjRZunSpYHb/N///V/gtT3ppJPMsGHDAuf/4IMPDmyxZEtk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9NFHHyVl1lIiQp1TtzVv3rzGzihA+mKNrsfZa0ImT56sNWvWaNiwYcrLy5Pf79eLL74oSfr22281efJk9erVS61atVKdOnXUtm1bXXLJJVqzZk3I44Zac7Nu3Tr5fD7169dPu3bt0s0336x27dqpbt266tSpk+66666YpoVu2rRJktSiRYuYn/f69es1fvx4dezYUfXq1VPTpk111lln6f333w+63ahRo9S/f39J0hNPPBG0dsbJSPe9994rY4yuvfbakJ3cinw+n44++uigy5y8PpL02muv6eSTT1aTJk1Ur149de7cWTfffLO2bNlS5XGirY0NtdamYju+//57jRgxQi1atFB2drZ69uypl19+OezzmjNnjrp166bs7Gy1atVKo0aN0s8//xzxXCSi4vN788031b9/fzVu3Fg+n09btmwJeh+GUnkdkL1G+LvvvpMkR+vVXnzxRR1//PFq0KCBmjZtquHDh+uHH35IwrMFgOrB94Xkfl+IpEGDBjrkkEMC7ZGcfz/45ptvNGrUKOXn56tu3brKy8vTsGHD9PXXX4d8rLKyMt1zzz3q0qWL6tWrp/z8fF177bXaunVr2PZFysNvvvlGo0ePVvv27VW3bl21bNlSvXv31j333KN9+/YFXuvFixdLkjp06BB07myR1uj++uuv+sMf/qCDDz448Bqddtpp+u9//xuxvWVlZbrrrrt0yCGHqG7dusrPz9cf//hH7dmzJ+xzhbfwi24tsXr1ah1zzDFq1qyZ+vfvr99++y0wDWX27NmaNm2aDj/8cB1zzDGqW7euVq5cqX/961966aWXtGTJEh155JGOH2vv3r065ZRTtHLlSvXr1087duzQ4sWLdfPNN2vbtm2aOnWqo+Pk5+dr7dq1mj17ts444wzH02aWLVumM888U7/99ps6d+6sM888U5s2bdKbb76pN954Q3PnztXQoUMlWVOIfv75Z7355ptB62YkVVm7VFlZWZneeustSdLw4cMdtS2cSK/PnXfeqT/96U/KzMxU37591bx5cy1dulR33XWXFixYoHfffVd5eXkJPb5t3bp1OuaYY9SwYUMNHDhQ33//vZYtW6ZzzjlHr7/+uk455ZSg299888266667lJWVpf79+ys3N1evv/66Fi5cqKOOOsqVNoXz9NNPa/bs2erZs6dOP/10FRQUxFXwxF4jbK8JrrimLdTo8j/+8Q/dd999OuGEE3TGGWfoww8/1Lx587R8+XJ9/vnnys7OTuh5AUAq8X3B/e8LTmzbtk2SVLdu3aDLI70eL774ooYNG6Y9e/aoW7duOv7447V+/Xo999xzevnll/X666/rxBNPDDreRRddpHnz5ql+/fo65ZRTlJmZqSeeeEJLly6NeXry888/r4svvlh79uzRoYceqt///vcqKSnR119/rT/84Q+6/PLLlZOTo5EjR+qNN95QcXGxhgwZopycHMeP8eOPP+rEE09UYWGhDjzwQJ1zzjnatGmT3n77bb355pu67777dP3114e874gRI/Taa6+pX79+6ty5s5YsWaJp06bpxx9/1FNPPRXTc0UNZeAJI0eONJLMbbfdFnT5Y489ZiQZSWb8+PFm3759Ve67bNkyU1hYWOXyOXPmGEmmf//+Va5r166dqfz2KSoqCjxW3759TUlJSeC6jz/+2GRkZJj69eubbdu2OXpOzzzzTOB4Bx54oLnuuuvMs88+a7799tuw9ykpKTGtW7c2GRkZ5qmnngq67uOPPzZNmjQxOTk5ZuPGjYHLFy5caCSZkSNHOmqXbe3atUaSqVu3rikrK4vpvrZor89HH31k/H6/ycnJMR988EHg8t27d5vzzz/fSDJDhgwJuo/9Xli4cGHIx5Rk2rVrF7YdEydODHo+06dPN5LMCSecEHSfZcuWGZ/PZ3Jzc82KFSsCl2/bts0MGDAgcLxw7YjGfo9Vvr/9/CSZefPmVbmf/T7s27dvyOPedtttRpJ57LHHQj5eOH379jWSTP369c37778fuHzHjh3md7/7nZFkHn30UcfPDwBSge8Llur8vmDM/vMb6r5ff/21ycjIMJLM2rVrg24f7vUoKioyDRo0MDk5Oeatt94Kuu711183WVlZJj8/3+zZsydw+bx58wLnqKioKHB5cXGxOfzwwwOPV/E6Y0J/b1izZo2pV6+eyczMNHPnzg26rry83Lz55ptm9+7dgcvsDK18bFu4bD7rrLOMJDNixIig57JkyRJTv359k5GRYT799NMq7ZVkDj30ULNhw4bA5YWFhaZx48ZGUsT3BryDqcu1RIsWLXTXXXcpIyOjynXHH3+8OnToUOXySy+9VL1799aiRYtUUlLi+LH8fr8eeeQRNWrUKHCZ/avbzp079cknnzg6zrBhw3TfffepQYMG+v7773X//fdr6NCh6tSpkzp06KC//e1v2r17d9B95syZow0bNui6666rUl2xZ8+e+stf/qLt27e7MpL366+/SpKaNGkiv7/qP6Vly5Zp1KhRVf6EEu71eeihh1ReXq4JEybouOOOC1xet25dPfTQQ8rOztaCBQsCU50S1aFDB/31r38Nej7jx49XkyZN9MEHH2jv3r2Byx9++OHAtO2KU7JzcnL04IMPJn07iTPPPDMw0l6drr/+evXq1Svw//Xr19cNN9wgSXr33XervT0A4Ca+L7j/fSGcHTt26H//+5/OPfdclZWV6aSTTlKnTp2CbhPu9bj//vu1Y8cO3XnnnTrppJOCrjvttNN01VVXaf369Xr11VcDl//jH/+QZE0TrjgVuWXLlrr77rtjavv06dO1e/duXX755RoxYkTQdT6fT6ecckqVX6djVVhYqFdeeSXwvaJika4+ffroyiuvVFlZmWbMmBHy/g888EDQrg0dOnTQRRddJElasmRJQm1DzcDU5VripJNOUv369cNev337dr388sv67LPPtHnz5kCFxA0bNsgYo4KCAnXv3t3RY7Vr1y7kelV7/cmGDRsct/v666/XyJEjNX/+fC1atEgff/yx1q5dq3Xr1umWW27RSy+9pHfeeScwXdRer3HuueeGPN4JJ5wgSfroo48ctyFeBQUFIas8hlp/Eu71sT+IQ22J0LJlS51yyil66aWXtHTpUg0bNizhNvfr169KtcfMzEx16NBBK1as0K+//hqoiGi3LdTjdu3aVUcddVRSi2+laguGytO3pfje2wCQjvi+YEnW94Unnngi5HeDnj176l//+leVy8O9Hk7a/8ADD+ijjz7S73//e5WWluqDDz6QpJCDxKeddpqaNGmi3377zdHzePvttyVJV1xxhaPbx+O9994LtK1p06ZVrr/44ot13333hey02kuqKiOvaxc6urXEgQceGPa6d955R8OGDQsUcwjFXjviRNu2bUNe3rBhQ0mKuQhA06ZNNWbMGI0ZM0aS9N1332nGjBm677779MEHH+i+++7TrbfeKkmBTc579+4d8Zi//PJLTG0IpVmzZpKk3377TeXl5VV+1b3ooosCI4eSVK9evbDPPdzr89NPP0lS2CIQ9uU//vhjLE0PK5bXzm5bu3btwrYtmR3dSO/pZAp1juJ9bwNAuuH7QjA3vi9UVHF9b1ZWlvLy8nTCCSfo5JNPDjk7LNzrYbf/gAMOiPh4dvt//fVX7d27Vy1atAg7kNGuXTvHHV17Jlkyq2on8h2oVatWIWclkNe1Cx3dWqJevXohL9++fbsuuOACbd68WZMmTdKwYcPUrl07ZWdny+fzacSIEXrmmWdiqn4Y6oPaTe3atdO0adO0b98+TZ8+Xa+++moguMrLyyVJ5513nho0aBD2GG6Uyu/QoYMaNmyobdu2aeXKlTr88MPjPla41yeaWKcH2+cnnGS/dm6K95xFOwfR1KRzBACx4vtCMLe31qm8j2404V4Pu/0VCyiGUnHZk9dE+g5EVkOio1vrLVmyRL/++qvOO+883X777VWuLywsTEGrnBkwYICmT58eNNratm1brV69WjfffLN69OiR1MfPyMjQKaecovnz52vevHmOq0PGok2bNioqKtJ3332nrl27Vrk+1IiuPfV4+/btVW7v1lpeSWrdurXWrVun7777ToceemiV6+3teqpbpOcvuXsOAKC24PtCemnbtq0KCgp07733BmaYRdKsWTPVqVNHmzZt0q5du0LuEPD99987fny70nVBQYErVadDadOmjaTw3yec/qqN2ovhjlrOnqISavrQt99+qxUrVlR3kwKijQp/++23koI/4E4++WRJ0oIFCxw/jt0x2rdvX6xN1MSJEyVZRSFWr14d8/2jsdcIPfPMM1Wus7dA8Pl8QVOv7DW0ofY0tLdDcrNtzz33XJXrVq1aldRpy5E0b95cmZmZKioqqvKalpaWBvbyqyyR9wEAeB3fF9IrJ2Jtf1ZWVuDX3VC5/d///lebN292/Ph2AayZM2c6un08586e4v3GG29oy5YtVa63C4XZ30eAyujo1nL2ovwXXnghaM3Nli1bNHr06ECRiVQYPHiwHnjggZAfvB9++KGmTJkiyZp2ZLviiivUsmVLTZs2TTNnzqwyTXXfvn1688039dVXXwUus0cM4+mo9urVSzfeeKN27Nihvn376qWXXgp5u48++khlZWUxH3/cuHHy+/164IEHgqpP7t27VxMmTNCuXbt07rnnKj8/P3Bd3759JVlVke3K0JL02WefadKkSTG3IZwrr7xSktXJ//zzzwOX79ixQxMmTIhp+pqb6tSpo169emnz5s1BlRj37duniRMnqqioKOT9EnkfAIDX8X0hvXJi4sSJys7O1o033qgXXnihyvV79uzRv//9b/3www+By6666ipJ0m233Rb06+0vv/yiP/zhDzE9/nXXXad69epp1qxZevbZZ4OuM8borbfeCloHG8+5O+igg3TmmWdq27Ztuvbaa4PeY8uWLdPDDz+sjIwMjRs3Lqa2o/Zg6nIt17NnT5188sl66623dMghh6hfv36SpEWLFql58+Y6++yzw3bekm39+vW69tprNXHiRHXr1k0dOnRQeXm5CgoKAr8WDho0KKjiX+PGjfXSSy8FLp86daoOP/xwNWnSRD///LNWrFihLVu2aMGCBYE1te3bt9eRRx6pTz75RMcee6wOO+wwZWRkaPDgwY4q+06bNk1169bVnXfeqXPOOUetWrVSz5491ahRI/3yyy8qKChQQUFBYA1TLI499lhNmTJFt956q3r16qV+/fqpefPmWrp0qdavX6+DDz64Sln9/v37q2/fvlq8eLG6du2q3r1765dfftGHH36oa665Rvfcc09MbQjnd7/7nW688Ubdc889OuaYYzRgwADl5uZq8eLFqlu3rgYNGqSXX37ZlceK1aRJk3Tqqafquuuu07PPPqtWrVpp+fLl2rlzp0aOHBmy4uXgwYO1ePFiDRw4UP3791eDBg3UvHlz/e1vf0vBMwCA9ML3hcS/L7ipU6dOeuaZZzRixAgNGTJEnTp10qGHHqoGDRroxx9/1IoVK7Rjxw59+umngV/hhw8frgULFuj5559X165dNXDgQGVmZuqdd97RQQcdpOOPPz5QmTmaQw45RI899pguueQSDRs2THfccYeOPPJIlZSU6KuvvtL69ev122+/BbYYGjx4sJ544gmNGDFCp5xyinJzcyVJs2fPjvg4jzzyiE444QQ9+eSTWrx4sXr16qVNmzZp0aJFKisr07333pu0qdOo+fhFF3rppZd06623qkWLFnr99de1fPlyDRs2TB988IEaN26csnb9+9//1gMPPKDTTz9dW7du1euvv67//Oc/Ki4u1plnnqmnn35aL730kjIzg8drjj/+eH355Ze66aab1KhRIy1evFgvvviivvvuO/Xt21ePP/54lT3n5s+fr3POOUeFhYV68skn9eijjzqehuXz+TR16lR9/fXXuvbaa9WiRQstWbJEzz33nJYvX66WLVvqpptu0ldffaW5c+fGfB7+9Kc/6ZVXXlHf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/+qiiy5KdbOCdOzYMemPkZubq9zc3KQ/DsAa3Vpq3759evjhh9WrVy81atRI2dnZ6tatm+6//37t27evyu03bdqkm2++WV27dlVOTo5yc3N1yCGH6JJLLgmsRbXXXEhWhzDWNZabNm2SJLVo0SLm57N582bdcsst6tq1q7Kzs5Wbm6sBAwbolVdeCbrd5MmT1aFDB0nS4sWLg9ro5FfEBx98UHv27NGwYcPCdnIr6tGjR9D/2+t2Ro0apZ9//lmXX3652rZtq8zMTN1///2B2y1btkxnn322WrRoobp166p9+/a6+uqr9dNPP1V5jGhrY0Ott6nYjs2bN+uqq65S69atVbduXR1++OGBKWGh/Oc//1GvXr1Uv359NWvWTEOGDNGaNWuinot4VXx+H330kc466yw1a9ZMPp9Pn332mSRFXEtWeS2QvUZ48eLFkqQOHToEvQ9CeffddzVgwAA1bNhQjRo10plnnqmVK1e6/VQBIK3wXSG+7wqR+P1+HXXUUZKk9evXS3L+3WD9+vUaP368OnbsqHr16qlp06Y666yz9P7774d9vDlz5qhbt27Kzs5Wq1atAo8RTqQ1uuvXr9c111yjQw45RNnZ2WratKl69uyp22+/XVu3bpVk5fETTzwhSerfv3/QubOnqUdao7tz505NmTJFhx9+eOA1OvHEEzVv3ryo7Z09e7aOPPLIwHO94oortGXLlrDPFd7HL7q10K5du3TmmWdq4cKFatq0qY4//njVq1dPH374oa6//notXLhQCxYskN9vjYNs27ZNxx13nIqKipSfn6+TTz5ZmZmZ+v777zVv3jwddNBBOvbYY9WpUyeNHDlSTzzxhBo0aKDzzjsv8JhO1ljm5+dLkp588kmNHj1aOTk5jp7PmjVrdNJJJ2n9+vVq3769Tj31VG3btk0ffPCBBg0apLvvvls33nijJKlbt24aMmSI5s+fH7R2RpL69OkT9bFef/11SdLw4cMdtS2cTZs26ZhjjtG+ffvUp08f7d69W/Xr15ckPfXUUxo1apTKysrUu3dv5efna8WKFXr44Yf1wgsvaNGiRa6tWd2yZYt69eql7du364QTTtAvv/yid999V6NHj1Z5ebkuv/zyoNv/85//1FVXXSWfz6cTTjhBrVu31gcffKBjjz1WgwYNcqVN4bz77rsaO3asDjnkEJ1yyin66aefAu/RWNhrhO01wUOGDIn4Xnv55Zf197//XT179tQZZ5yhzz77TK+99po+/PBDffXVVwmtAQOAdMV3hfi/K0Szbds2SaoyvTrSd4Nly5bpzDPP1G+//abOnTvrzDPP1KZNm/Tmm2/qjTfe0Ny5czV06NCg491888266667lJWVpf79+ys3N1evv/66Fi5cGOhsO7VkyRINHjxYW7ZsUfv27TVo0CDt2rVLq1at0uTJk3X22WerW7duGjlyZGDd96mnnhqUkdFeq23btql///5avny5WrRoobPOOks7duzQO++8oyVLlmjZsmX6+9//HvK+N910k/7+97+rX79+6tSpk5YuXaqZM2fqm2++CQxWoBYy8KyRI0caSea2224Luvzqq682kszQoUPNli1bApdv3brVnHHGGUaSefjhhwOXz5kzx0gygwcPNmVlZUHH2rhxo/nyyy+DLpNk2rVrF3N733vvPeP3+40k06JFC3PllVeaJ5980nz99demvLw85H327dtnjjjiCCPJTJs2Lah9a9euNR06dDAZGRlBbSwqKjKSTN++fWNq3969e43P5zOSzA8//BDz8zPGmIULFxpJRpL5/e9/b3bt2hV0/ffff2+ys7NNRkaGeemllwKXl5WVmeuuu85IMj179gy6z2233WYkmcceeyzkY7Zr185U/qdesR3Dhg0zu3fvDly3YMECI8kceOCBQfdZt26dqVevnsnKyjJvvPFG4PK9e/eaCy+8MHC8cO2Ipm/fviHvbz8/Seauu+4Ked9I77nHHnss5L8D+/GKiopC3s/+9+P3+82CBQsCl+/bt88MGTLESDJ/+ctfHD47AEhPfFdw97uCMfszNtR9i4uLTaNGjYwk89ZbbwXdPtx3g5KSEtO6dWuTkZFhnnrqqaDrPv74Y9OkSROTk5NjNm7cGLh82bJlxufzmdzcXLNixYrA5du2bTMDBgwIPN7ChQuDjhfqO8Ovv/5qWrRoYSSZu+++u8rr+/7775vi4uLA/9vvqcrHtoXL5fHjxxtJpn///mbr1q2By7/55hvTsmVLI8m8/PLLIdvbqlUrs2rVqsDlmzZtMp06dTKSzP/+97+Q7YD3MXW5ltm4caNmzZql/Px8PfbYY0FrJBo2bKhHH31UderU0cMPPxy43J4mNGDAgCq/oLVo0UKHH364K23r3bu3nnrqKTVr1kybNm3SP//5T11yySU67LDD1Lp1a91yyy0qKSkJus/LL7+sL7/8UkOGDNEf/vCHoPZ16tRJ9957r8rKyjRr1qyE27d582YZYySFrkS5du1ajRo1qsqfX375pcpt69atqwcffFD16tULunz27NnatWuXLrjgAg0ePDhwud/v19/+9je1adNGn3zyiZYuXZrw85GkRo0a6aGHHgoaVT7nnHN0+OGH6/vvvw+qhjlnzhzt3r1bw4cP16mnnhq4PCsrS3//+98Do87JcsQRR+gPf/hDUh8jlOHDh+ucc84J/H9GRoZuueUWSdavzADgNXxXcN/u3bv14YcfavDgwdq6das6d+6s/v37B90m3HeDOXPmaMOGDbruuut04YUXBl3Xs2dP/eUvf9H27dv11FNPBS5/+OGHZYzRtddeq6OPPjpweU5Ojh588MGYfuGcPXu2Nm3apNNOO0033nhjlde3V69eCRfV2rFjhx599FH5/X794x//UMOGDQPXdenSRX/+858lKewvulOmTFHnzp0D/9+8eXNdeeWVksjq2oyObi2zaNEilZaW6rTTTlN2dnaV61u1aqWDDz5YX375pXbt2iVp/zrTu+++W/PmzQtMuUmG4cOH67vvvtNTTz2lSy+9VIcffrh8Pp+Ki4v1t7/9TT179tTGjRsDt//vf/8rSTr33HNDHu+EE06QpGrZ07a4uFhPPPFElT/bt2+vctvu3bvrgAMOqHL5kiVLJKlKkElWAJ5//vlBt0tUjx491KxZsyqXH3LIIZKkDRs2VGnbsGHDqty+WbNmOuWUU1xpUzhnnXVWSqYehXpeoc4PAHgF3xXcUXF9b3Z2to4//nh9+OGH6tSpk1588cUqOzaE+24QT/sjZXbXrl1jmrr89ttvS5KuuOIKx/eJ1fLly7Vr1y5179495BT2iy++WJK0dOlSlZeXV7merEYodHRrGfsXulmzZoXdIP7rr7+WMUabN2+WJA0cOFDXX3+9fvrpJw0fPlxNmzbVcccdpz//+c8qLCx0vY0NGjTQhRdeqDlz5ujLL7/Uhg0bdOeddyo7O1vffvutbr311irP58ILLwz5XOxiFaF+VY1V06ZNAx2tUMfr06ePjDGBPxVHFis78MADQ15uF5sKV1jJvvzHH3+MoeXhtW3bNuTl9kjqnj17qrStXbt2EduWLOHOWbKFOkehzg8AeAXfFdyRl5enkSNHauTIkRo9erRuuukmvfDCC1q5cmXIzly4nLPb37t375DtP+aYY6q0383MtotmJbMic7TvP40bN1Zubq527dql3377rcr1ZDVCoRhVLWOPgnXr1i3qaF7F6az33XefrrjiCr300kt6++23tXTpUn300UeaNm2annnmGQ0ZMiRpbc7Ly9PNN9+s+vXr69prr9Wrr74auM5+Pqeddpry8vLCHsONvdqysrJ06KGHauXKlfr0009Djro6VXlaklPx/KIZauTTFk8xp1SJ95xFev5O1KRzBABu4LuCOyrvoxtNuJyz23/eeeepQYMGER/PyyJ9ByKrEQod3VrGHvHq06ePHnzwwZju27lzZ91000266aabtHv3bj300EP6wx/+oKuuuiqp4WUbMGCApOARS/v5XH755dXShtNPP10rV67UvHnzdNZZZ7l+/DZt2mj16tX67rvvdNhhh1W53h7VrdjJrlOnjiSFnCJdVlYWcRuBWLRu3TrQtq5du1a5/rvvvnPlceKRlZUV8vlL+0eiAQDO8F0hvbRt21arV6/WzTffXGXbwnBat26tdevW6bvvvtOhhx5a5fpYMjs/P1+rVq1SQUGBjjjiCMf3i0WbNm0itqukpERbtmxRdna2mjRpkpQ2wHsY/qhl+vfvr4yMDL3yyisqLS2N+zj16tXTjTfeqNatW2vTpk1Ba2GysrJC7q8XjV3oKZxvv/1WUnAn7+STT5YkLViwwPHj2B3DeNo4YcIE1alTR88880xSihvY62yeeeaZKtft3btXzz//fNDtJCvMJIXcy3bhwoUJvc6h2vbcc89VuW7z5s2BNUSp0Lp1a/3666/69ddfq1xnry2qLJH3AQB4Gd8V0isj4ml/pMxetWpVYB96J0466SRJ0syZMx3dPp5z16NHD2VnZ2v58uVau3ZtlevtQlu9e/fm11s4xjulljnggAN02WWXad26dRo+fLiKi4ur3Obbb7/V/PnzA///4osv6oMPPqhyu+XLl6u4uFg5OTlq3Lhx4PI2bdqouLg45k26L7/8ck2dOjWwTqOi1atXa+LEiZIUtOfekCFD1LVrV82dO1dTpkypsg7DGKOlS5cGVSlu3ry5srKyVFBQoLKyspja2K5dO913330qLy/XmWeeqcceeyzkMVatWhVyDUk0o0ePVnZ2tubNm1dl2tWf/vQn/fjjj+rRo4d69+4duO7EE0+UZIVAxSrJRUVFuuaaa2JuQziXXnqp6tatq7lz5wZ1HktLS3X99ddrx44drj1WrPr27StJmjp1atDl06ZN03vvvRfyPvbo8erVq5PbOACoYfiukNh3BbddccUVatmypaZNm6aZM2dWWZKzb98+vfnmm/rqq68Cl9kVh++//359/vnngct37NihCRMmRB0wqOjyyy9X8+bN9frrr+v++++vct8PPvggaBAjnnxt0KCBLrvsMpWXl2vcuHFB3ynWrFkTyHc3v9egFkjJpkaoFuH2xtu5c6c5+eSTjSTToEED07t3bzN8+HAzePDgwJ5jZ599duD21157rZFkDjjgAHPWWWeZESNGmH79+pmMjAwjydx7771Bx58wYYKRZDp06GAuvPBCM3r0aDNt2rSo7T377LMD+5YeccQRZsiQIeaCCy4wxx13XGDPvGOPPdaUlJQE3W/NmjWmQ4cORpJp2bKlOemkk8yIESPMKaecEth3bfr06UH3GTRokJFkDjvsMHPxxReb0aNHmzlz5jg+tzNmzDB169Y1kkzTpk3NaaedZkaMGGFOP/1007Vr18D+dKeddprZtm1b4H72XnkjR44Me+wnn3zS+P1+4/P5TJ8+fczw4cNN586djSSTl5dnvvnmmyr3ueSSS4wkk5ubawYNGmQGDhxoGjRoYM4///yI++iGa0e4PfAeeuihwGvUr18/M2zYMNO+fXuTm5sb2Es3WfvoRjruV199ZbKzs40k061bNzNkyBBzyCGHmOzs7MBekJX/HcyfP99IMo0aNTLnnXeeGT16tBk9enTUc2BTnHtAAkA64buC+98VIu2jG+n2kb4bLFu2zDRv3txIMvn5+eb00083I0aMMAMGDDCNGzc2koL2fDfGmBtvvNFIMllZWebUU081F1xwgcnLyzMHHnhg4Lk52UfXbmPDhg0Dr9kFF1xgBg0aFHgvfPrpp4HbfvLJJ8bn85l69eqZs88+O5Cvv/zyizEm/D66W7duNT169Ai8Rueff74544wzTL169Ywkc80111RpV7j2Oj2v8DY6uh4WLryMsTZPf+KJJ8yAAQNM06ZNTVZWlmnTpo3p1auXuf32283q1asDt/3000/NxIkTzTHHHGNatmxp6tata9q1a2cGDRpk3n777SrH3r59uxk/frzJz883mZmZjj/s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p2MCUEBZr75msl59vVratw8oALIegBdsZr3kbd6HMdGtVFyPoG0TExP6lV/5laafc9NNN+mll17SL/3SL9kZFABI3fXq61a9vn1AK4HkPVkPwFs2s17yOu/937rs6VvhvSiVStqwYUNP3+Ott97S5ZdfbmhEAArBZgN3V337EK7I8p6sB+CEzayXvM57/9/RtfxW+Jtvvql9+/bp+uuv15VXXqmtW7fqqaeekiQdPHhQa9euXfb5jz32mJKfbQ04ePCgHnnkET3zzDNKkkRJkujgwYOXPEa97Uzf//739YEPfECrV6/W+vXr9eEPf1ivvvpq7ePbt2/XAw88oAcffFDXXnut7r77bqVpqomJCd1888264oordOONN2rfvn3GrwmAiPT3S//v/7X+10s/v5WVHgtU4RE9sJj3ZD2AqNnIesn7vPd7ouvgrfA/+ZM/0Ve/+lV96Utf0okTJ7R582bdfffdeu2111p+7X333aePfexj+sVf/EW99NJLeumll3Tfffe1/Lof//jHev/736877rhD//mf/6mvf/3rOn36tD70oQ8t+7wvfelLuvzyy/Wd73xHf/M3f6OvfvWr+sxnPqMDBw7o+eef12OPPaahoaGuf3YAAfJxq2fB+/ahC5bznqwHEBQfs17yPu/93rps+a3wN954Q5///Od18OBBfeADH5AkfeELX9A3v/lNffGLX9R1113X9OtXrVql1atX67LLLutou9LnPvc53XHHHfrkJz9Z+29/+7d/q5tuukn/+7//q5/7uZ+TJN1222369Kc/Xfucf/mXf9GGDRv0W7/1WyqXy7r55pv17ne/u5MfGUDIfNzq2ajSo+kKj4iLxbwn6wEExcesl4LIe3/f0XXwVvjs7KwqlYre+9731v5buVzWu9/9bv3P//xPbo/7zDPP6OjRo1q9enXt38///M/XxpS58847l33d7/zO7+gnP/mJNm3apI985CP6p3/6J7399tu5jROAZ3ysclhvdTfj0SovPGI578l6AEHxMeulIPLe34muh2+F9/X1KV1RwaxiYCvB66+/rp07d+rkyZPL/j3//PPatm1b7fOuvvrqZV9300036bnnntNf//Vfa9WqVbr//vu1bds2I2MC4DkfqxyunLCs5NnZHXjCs7wn6wF4w8esl4LJez8nuo0uXs4XbXBwsHYuJlOpVPTUU0/pF37hF3Tdddfp3LlzeuONN2ofX9kf7/LLL1e1wzLdW7Zs0X//93/r1ltv1ebNm5f9Wxl4K61atUo7d+7U/v37dezYMT355JM6depUR48PIEBLJwd5TQo6fSFtu28fwucg78l6AMGwkfVStHnv50TX0VvhV199tT760Y/qj//4j/X1r39dzz77rD7ykY/o/Pnz+qM/+iP92q/9mq666ir96Z/+qWZnZ/Xoo49eUmnx1ltv1fz8vE6ePKlXX31Vb775ZsvH3bNnj1577TX97u/+rp566inNzs7qG9/4hv7gD/6gaZAePHhQX/ziF/X9739fc3Nz+vKXv6xVq1bplltu6fVSAPCZja2eTzwhXXed9OST7X2+7b59iIODvCfrAQTB1rGOiPPev4mu47fC//zP/1z33nuvPvzhD2vLli36v//7P33jG9/QunXrdM011+jLX/6yjhw5oqGhIX3lK1/RxMTEsq+/9957dc899+iuu+7Sddddp6985SstH/PGG2/Ud77zHVWrVf32b/+2hoaG9OCDD2rt2rXq62v8FK1du1Zf+MIX9N73vle33367/u3f/k2HDx/WO97xjl4vAwCf2djq2emZoKxv3w9/2Prfyy/33rcP4XOY92Q9AO/ZOtYRcd4n6cqDKG06e/asBgYGdObMGfWv6MH005/+VPPz89q4caOuvPLKzr7xXXdJ3/pW81WCJJG2b/emGXEoenpeAPjh8celJef56n681yqHKx/DxPe0pFk2oXO5Zb1E3ueErAciYCPr6z1OIHnfbtb79Y5uQG+FA4ATNrZ62joThOIi7wGgMVvHOiLPe7/66GZvhZ871/pz16xh6xuAYmnUsy5jonfdysfwqB8eIkLeA0B9NrK+3uNEmPd+TXQlqb//wj8AwHJZlcNWWz3Hx7vf6pmt7i59By1b5WX7KEwi7wHgUjayPnucyPPer63LAID6bGz1dNTaDQAAyN6xjoLkfa7v6HZZ5wo54fkAAmZjq2e91d2ljx/RKi/MIVv8wvMBBMzWsY6C5H0uE91yuSxJOn/+vFatWpXHQ6AL58+fl3Tx+QEQmDy3eto6E4RokPV+IuuBwOV9rKNAeZ/LRLdUKmnt2rV65ZVXJElXXXWVkiTJ46HQhjRNdf78eb3yyitau3atShT1ALCSrTNBiAZZ7xeyHkBbCpT3uW1d3rBhgyTVAhDurV27tva8AEBNN2eCeBENkfU+IusBNFSwvM9topskiW644QZdf/31qlQqeT0M2lQul1ndBVAfrV7QJbLeL2Q9gKYKlve5txcqlUrcdAHAd7R6QQ/IegAIRIHynvZCAAAAAICoMNEFAAAAAESFiS4AAAAAICpdn9HNGpKfPXvW2GAAAOhFlklpq4qSaAtZDwDwTbtZ3/VE99zPqnXddNNN3X4LAAByce7cOQ0MDLgeRvDIegCAr1plfZJ2uey9uLioF198UWvWrKFBPADAC2ma6ty5c7rxxhvV18fpnF6R9QAA37Sb9V1PdAEAAAAA8BHL3QAAAACAqDDRBQAAAABEhYkuAAAAACAqTHQBAAAAAFFhogsAAAAAiAoTXQAAAABAVJjoAgAAAACiwkQXAAAAABAVJroAAAAAgKgw0QUAAAAARIWJLgAAAAAgKkx0AQAAAABR+f+jgVGk3RpGcgAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "visualize(clf_name, X_train2d, y_train, X_test2d, y_test, y_train_pred,\n", - " y_test_pred, show_figure=True, save_figure=False)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3.7.0 64-bit", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.0" - }, - "orig_nbformat": 4, - "vscode": { - "interpreter": { - "hash": "87bac98d5385f6783b05398a03c79125cccda40901956e27bb2e7b9e4f3c6c81" - } - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/package-exe.py b/package-exe.py index 16873aa..7381d15 100644 --- a/package-exe.py +++ b/package-exe.py @@ -1,3 +1,25 @@ +# MIT License +# +# Copyright (c) 2022 Cong Feng +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + import os # NAME = '异常流量数据分析软件' diff --git a/res_rc.py b/res_rc.py index 3d101e9..5a0aadb 100644 --- a/res_rc.py +++ b/res_rc.py @@ -1,3 +1,25 @@ +# MIT License +# +# Copyright (c) 2022 Cong Feng +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + # -*- coding: utf-8 -*- # Resource object code diff --git a/scripts/convert-ico.py b/scripts/convert-ico.py index 1b055b4..84a2ce8 100644 --- a/scripts/convert-ico.py +++ b/scripts/convert-ico.py @@ -1,3 +1,25 @@ +# MIT License +# +# Copyright (c) 2022 Cong Feng +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + import sys from PIL import Image from pathlib import Path as P diff --git a/setup-env.py b/setup-env.py index 5089803..319f0a3 100644 --- a/setup-env.py +++ b/setup-env.py @@ -1,3 +1,25 @@ +# MIT License +# +# Copyright (c) 2022 Cong Feng +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + import os print('安装依赖。。。')