diff --git a/pyproject.toml b/pyproject.toml index 6eb7e1d..771b882 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,7 +8,7 @@ dependencies = [ "jupyterlab>=4.6.4", "matplotlib>=3.11.2", "numpy>=2.5.4", - "pandas>=3.0.6", + "pandas==3.1.0", "plotly>=7.1.0", "scikit-learn>=1.9.1", ] diff --git a/uv.lock b/uv.lock index bbec391..7352f62 100644 --- a/uv.lock +++ b/uv.lock @@ -1211,7 +1211,7 @@ requires-dist = [ { name = "jupyterlab", specifier = ">=4.6.4" }, { name = "matplotlib", specifier = ">=3.11.2" }, { name = "numpy", specifier = ">=2.5.4" }, - { name = "pandas", specifier = ">=3.0.6" }, + { name = "pandas", specifier = "==3.1.0" }, { name = "plotly", specifier = ">=7.1.0" }, { name = "scikit-learn", specifier = ">=1.9.1" }, ] @@ -1293,47 +1293,47 @@ wheels = [ [[package]] name = "pandas" -version = "3.0.6" +version = "3.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, { name = "python-dateutil" }, { name = "tzdata", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e2/17/d7b106e05bfa642e8694451e7d3d759c6a241c5386a5d962e4f66c047e06/pandas-3.0.6.tar.gz", hash = "sha256:66b07ef7315a31bfe1089cd3d71a7de781c9dca986762d0b4fe7c0ef17465d10", size = 4667686, upload-time = "2026-09-17T23:23:18.345Z" } +sdist = { url = "https://files.pythonhosted.org/packages/55/b1/a10c0d1a7e3ce44eb42635771004aa503e3b9ddde0bd39c524dda65f7eff/pandas-3.1.0.tar.gz", hash = "sha256:ecb9b2d8a817b1e1ba1fdb90c0abe9eab31b4fdf2562b7a56b86ac66ace17e49", size = 5933421, upload-time = "2026-10-22T11:57:03.087Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/75/55/1a8875395b05ccd572cbca0b9255dcd2db6e6508e632a558c1a6884b39ad/pandas-3.0.6-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:ee913a91669056c1de1a6b733fbfeab711de9e54e3bee2dfa5fe79d9457247d1", size = 10492213, upload-time = "2026-09-17T23:21:40.746Z" }, - { url = "https://files.pythonhosted.org/packages/35/61/47ae13476995cc8a40cd609e93e7cf11f273d8692925c2903cb6d38aa0d1/pandas-3.0.6-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ff51a4459ed036e93d1eb1bb5e6e7b28685d3cb6b7c12b91c05b31024e234729", size = 10156618, upload-time = "2026-09-17T23:21:44.142Z" }, - { url = "https://files.pythonhosted.org/packages/bc/f2/cc5f2adb8d6e86a85d9fb5128f8cf205a61189336f70d1f7faf0d1b53ec9/pandas-3.0.6-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:654aae059295dbba6ecd2328ca12712a2cf1676214c8699f1c29213f7ccf9c34", size = 10375479, upload-time = "2026-09-17T23:21:47.159Z" }, - { url = "https://files.pythonhosted.org/packages/ca/ba/ffdcb19be4ff6bfe7d969e7cef2c567c633df5a3a1cc1053394ad053bca8/pandas-3.0.6-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:62f51d7f651c8054c5e82a69265c98082e795d1442df7ca6edc3a545d61214b1", size = 10783244, upload-time = "2026-09-17T23:21:50.367Z" }, - { url = "https://files.pythonhosted.org/packages/77/5b/e150075b2c6eb69fae896f2d9239bc6ed07db97735971d53d66de6553460/pandas-3.0.6-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:22172a92e7ee678ec0140c7af4fc9366b55413834a1cd86af78b3caa0b0574de", size = 11382223, upload-time = "2026-09-17T23:21:53.355Z" }, - { url = "https://files.pythonhosted.org/packages/d6/8a/b441c587dc7355bf6e1f68a91b4f76a6c29740f0c23be3acc5d4ebbeea6d/pandas-3.0.6-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:583be68728a31d0d750d5b8d9e00f02b153df0d4655f858bde93cb84cfc4227c", size = 11854881, upload-time = "2026-09-17T23:21:56.342Z" }, - { url = "https://files.pythonhosted.org/packages/b7/e9/f43410fada510b43fec09993c08f552086c3d247d3ee801a678f3cb10ea5/pandas-3.0.6-cp314-cp314-win_amd64.whl", hash = "sha256:77ccbe5057aece6fc172b9b77f19c04335af6882bc2e10c8f3ee4e6bfb3da553", size = 9791672, upload-time = "2026-09-17T23:21:59.332Z" }, - { url = "https://files.pythonhosted.org/packages/8b/9e/db14c059c21f9baa1907d436f8bf30e0c76c6288225c5e8b79a08ba8b2c5/pandas-3.0.6-cp314-cp314-win_arm64.whl", hash = "sha256:fb625f426b375bcc96e3a04c5d5d266cd7be6ae5d6866e0e703382ab5164068c", size = 9121246, upload-time = "2026-09-17T23:22:02.123Z" }, - { url = "https://files.pythonhosted.org/packages/67/ba/bad0f8dac020ab38a8637fddab01a57a82da7a496a6e6f19590aad53ab62/pandas-3.0.6-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:9e492cd4bdba6778de4fe0df7f4590c012161ebcf9902dce01b01dc683105514", size = 10920612, upload-time = "2026-09-17T23:22:05.404Z" }, - { url = "https://files.pythonhosted.org/packages/c4/a9/b500982e9aac6d52a58da4ad3f11e14168a315b06906b3f397c427878065/pandas-3.0.6-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:d7dcd21238cbb4828ff148481ba01cac8946dc5121457b5aeba28636f8f99a60", size = 10570213, upload-time = "2026-09-17T23:22:08.44Z" }, - { url = "https://files.pythonhosted.org/packages/4b/fa/e6ecd0073c98be8f840ac3125b955272835d7d9fd69f5944383b164deb5e/pandas-3.0.6-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6ff482fa91fa2bafd92e8fe66ce3645c851824310f295c1f0a2f96e928fc4541", size = 10252356, upload-time = "2026-09-17T23:22:11.302Z" }, - { url = "https://files.pythonhosted.org/packages/04/f5/001e230a7a7803590d9275a1a3f7e1bb605e3a495cfe5e8d3a532090621b/pandas-3.0.6-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:db7ec631f26223beee8e5c9e0b8f23c24d8197bbd1d982421d4e3188bea51965", size = 10655952, upload-time = "2026-09-17T23:22:14.283Z" }, - { url = "https://files.pythonhosted.org/packages/ca/ab/bab587148a3852c96aae26c4b5f9e04ce2221801ad94e166b4fbf969ede0/pandas-3.0.6-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:bd75ed0c840f709fc2ae26ddd9534ac77ca1a48ac0cce521a74acaa85f3340a7", size = 11274177, upload-time = "2026-09-17T23:22:17.352Z" }, - { url = "https://files.pythonhosted.org/packages/f3/32/74b48d87df2b80892d713c149abfe36d5db4de41b4eccb042a2bc07dafc1/pandas-3.0.6-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ef738d71d1059245b6bb03e312be06d8b3821326a83486c1ad03b9aba3710e44", size = 11719041, upload-time = "2026-09-17T23:22:20.227Z" }, - { url = "https://files.pythonhosted.org/packages/f6/c6/d64b72d64d7eb0fad9fe424d34138e45dee70ddbea1360dcd0adf30e28f6/pandas-3.0.6-cp314-cp314t-win_amd64.whl", hash = "sha256:429d9df32731ab01383ed98f2baa7a60368090d1a94fc06019a12062510e8630", size = 10191388, upload-time = "2026-09-17T23:22:23.524Z" }, - { url = "https://files.pythonhosted.org/packages/7a/30/5e5b2ccabeca73ae2b03fc82bca3eabb7466cf43737f05ac08d591665d47/pandas-3.0.6-cp314-cp314t-win_arm64.whl", hash = "sha256:a4dbd4dc65cbe645b92b8785d0f96dd7311010dc6606cf620e51b07b8788a12a", size = 9387796, upload-time = "2026-09-17T23:22:26.64Z" }, - { url = "https://files.pythonhosted.org/packages/b6/77/47c5fb0be8bdd00116814c2c40d9ec42dbeb943865ef95130fe58a898226/pandas-3.0.6-cp315-cp315-macosx_10_15_x86_64.whl", hash = "sha256:50c44cbf5820b6b91a5f74aae04972472aefadd3cd9fbd1010409d85528bd570", size = 10483960, upload-time = "2026-09-17T23:22:30.071Z" }, - { url = "https://files.pythonhosted.org/packages/09/08/a310cb2fefe6d2b4623ab2150da818d93d4e73e33b58e4d163bb74243c5a/pandas-3.0.6-cp315-cp315-macosx_11_0_arm64.whl", hash = "sha256:eb6900de08ac85f93ac4948aa6b80842eba555875337b8359035ac9c43e92d34", size = 10149432, upload-time = "2026-09-17T23:22:32.818Z" }, - { url = "https://files.pythonhosted.org/packages/54/36/6af478ec3a26d7754555cd62c3101c589c0931b1d85398e4fa5403910a1c/pandas-3.0.6-cp315-cp315-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e25e2e1adee99ddfada6f7206a79ae8e9c8a8861b0e3eaaba165006d3eef18e", size = 10360981, upload-time = "2026-09-17T23:22:35.621Z" }, - { url = "https://files.pythonhosted.org/packages/43/20/5ece0e9cb79a6473216620db6a90546f578001c2bd857b77c444b27acad1/pandas-3.0.6-cp315-cp315-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4ff44b2cb51cbd691c91f92c4ea6c71e34003f239ebd67c2e857dc898466b49c", size = 10776585, upload-time = "2026-09-17T23:22:38.427Z" }, - { url = "https://files.pythonhosted.org/packages/2f/b6/cd3038f31ade5e8d2b4e1c9549d4b31e4d598469562f47142b2ad9171c0a/pandas-3.0.6-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:5edd0a7abb0986ecce1ac81f56d99b6763f86aa6946dceb6c661224f90af5a19", size = 11385249, upload-time = "2026-09-17T23:22:41.18Z" }, - { url = "https://files.pythonhosted.org/packages/0a/87/05bb3003737f80375d7311774916a24d161e2e591abe8c672aed7813defc/pandas-3.0.6-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:1bcb3e9ed29e74a7439cedff9e2aefd3ea65de84d7de9ccb6c194192541bd60e", size = 11848595, upload-time = "2026-09-17T23:22:44.207Z" }, - { url = "https://files.pythonhosted.org/packages/c0/30/1c0d46acf236d19ef975e9cdd5d1e0dd54924b03f0ed8287096ad4a18152/pandas-3.0.6-cp315-cp315-win_amd64.whl", hash = "sha256:253e12cb9081b0afbac607920f6142975966bc315135e09de275fdbaa415d2de", size = 9783810, upload-time = "2026-09-17T23:22:47.097Z" }, - { url = "https://files.pythonhosted.org/packages/87/03/df3304a9c2833c4810e7f1c887b04105b24731f9deef8b5d5d04522a375b/pandas-3.0.6-cp315-cp315-win_arm64.whl", hash = "sha256:97274c9adf6255bb48c620cd6959805efa7f09ea2167f0e0ae006a448cd2fca7", size = 9116820, upload-time = "2026-09-17T23:22:50.149Z" }, - { url = "https://files.pythonhosted.org/packages/47/25/d5f6cce5efa17c38e4f752a875b4a26d66cfadd529cb8c81672f0376d6a6/pandas-3.0.6-cp315-cp315t-macosx_10_15_x86_64.whl", hash = "sha256:265f562fdd1079f69f3de96dd425c3405224038c0af4f920c54bd240ee2c4640", size = 10894614, upload-time = "2026-09-17T23:22:53.223Z" }, - { url = "https://files.pythonhosted.org/packages/ea/8b/e1876bfdc1df06bafc022d33202b5663bd86c81df2a6140aacafd0344669/pandas-3.0.6-cp315-cp315t-macosx_11_0_arm64.whl", hash = "sha256:c6e4aae3e9bea26c6c9a20d88d96c86ec4a99b4db5fd516bcb4e829ab2c0ee36", size = 10546973, upload-time = "2026-09-17T23:22:56.155Z" }, - { url = "https://files.pythonhosted.org/packages/e9/27/e0a27a5a5c27f7db66657b44def9e93121fd0ad4f0808355b9898fcbf204/pandas-3.0.6-cp315-cp315t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a77a1a44e4d88f1c6a2a64d3eb12efec8420875722e14279800b173a7c7c2804", size = 10239717, upload-time = "2026-09-17T23:22:59.603Z" }, - { url = "https://files.pythonhosted.org/packages/d5/4f/4eadb7d86a921c1e8bc70916cfe601ed667c4169118d17d69958611c21f8/pandas-3.0.6-cp315-cp315t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:86fa853a12e0b70927e2b1ee00d56d2224ec9cbb4b9d58348b5ad52d2f21150e", size = 10641275, upload-time = "2026-09-17T23:23:02.81Z" }, - { url = "https://files.pythonhosted.org/packages/c7/d1/eba72e9d905e84e79aefeefdcc6bc1abe15d9077973566643f4211636966/pandas-3.0.6-cp315-cp315t-musllinux_1_2_aarch64.whl", hash = "sha256:c826e9babb7790142c399f58599d8de679bea059d7b39c5b6efa2096fac37266", size = 11262919, upload-time = "2026-09-17T23:23:06.038Z" }, - { url = "https://files.pythonhosted.org/packages/9d/8a/1c5bd2642b450e374b6191189f47c49538fe41f82348a66de6f647e6ab59/pandas-3.0.6-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:8fe77b408d82e2615674dfed62533b95e18a03610573877422aada4f625d4947", size = 11709148, upload-time = "2026-09-17T23:23:09.082Z" }, - { url = "https://files.pythonhosted.org/packages/73/3d/1b142bd0d0f1326a5d98c91c955b923cd1e06b5eecb428cd9d8817fa01c0/pandas-3.0.6-cp315-cp315t-win_amd64.whl", hash = "sha256:83e91d15738d7783c050197cef2f2cf82fc6353dae9865aa87ed1fa16aa4d55a", size = 10161518, upload-time = "2026-09-17T23:23:12.365Z" }, - { url = "https://files.pythonhosted.org/packages/0b/a3/6419c14da2adc1f09a6a183b8f91d7494d325b287f4ca984ac04f663638a/pandas-3.0.6-cp315-cp315t-win_arm64.whl", hash = "sha256:963ca21199097a84c7827c4678b04e30833084fbf8ef44fde3fa7180a29f8fa0", size = 9364529, upload-time = "2026-09-17T23:23:15.274Z" }, + { url = "https://files.pythonhosted.org/packages/c3/a9/e82d44fe20dc61dd2e15bdd17c78aa0023d860d55620e4fe82f9e644a089/pandas-3.1.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:a8c44d40cbb6d00128bf2d8f8bb66c8d561744b6d44686b5a1a01f3b3fd1245f", size = 11675868, upload-time = "2026-10-22T11:55:46.617Z" }, + { url = "https://files.pythonhosted.org/packages/83/38/6be618d98e2cbbb99a40349717532f0c2b6794ddc62f1199e3f83e45a40f/pandas-3.1.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:89b66823678cdd53cf97187e7cd6861402bdd147d11a383706093136a4e83f45", size = 11262553, upload-time = "2026-10-22T11:55:49.143Z" }, + { url = "https://files.pythonhosted.org/packages/06/5c/66e27fb0d691e835bd55b336bdf47312a541a66a17ba4d72a988d743bb79/pandas-3.1.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2a8dc7780720b9e2182799ee86279d4cc7d1fd30b230ea1b202da5b6f7e14c3a", size = 11548155, upload-time = "2026-10-22T11:55:51.674Z" }, + { url = "https://files.pythonhosted.org/packages/37/1e/42e81484c5a6791ab1b8c52c1ff1ef0483c119f710ed58ee603d241b8792/pandas-3.1.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e4455cdcc03e42c17233184e8e4ea65c3ed2925d8b1d9d7dd8e6fced3f6e43c1", size = 12029136, upload-time = "2026-10-22T11:55:53.823Z" }, + { url = "https://files.pythonhosted.org/packages/cd/c9/a3b4fd156457f3eb2585838cd56427a113eeeba679204de435a3224b8cc3/pandas-3.1.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:224a9267e5fa70c16bf4f8a317435eef98387940ce6c8c611f1f68f2c3415e10", size = 12575350, upload-time = "2026-10-22T11:55:56.006Z" }, + { url = "https://files.pythonhosted.org/packages/4e/25/23a017003d792117b297bbd87e35a1bb5658509f610ecd5aeaebb84762aa/pandas-3.1.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:c261c7a808982557c2917d40ffd27916769f26aacb4e6775c01e4467bcd34c3b", size = 13096142, upload-time = "2026-10-22T11:55:58.434Z" }, + { url = "https://files.pythonhosted.org/packages/1c/d2/f4074b7d1234d112aaa23a796be1574441a9fa873707eb98312a237a6185/pandas-3.1.0-cp314-cp314-win_amd64.whl", hash = "sha256:e77112cfcabb3bef7281a72170670db9a5b31409a1cd3199939abb1fba67a7ad", size = 10885958, upload-time = "2026-10-22T11:56:00.895Z" }, + { url = "https://files.pythonhosted.org/packages/25/9f/bcfc9e0ea07f5c7583e129e62cd0529747317977ac1b85878b80235bb322/pandas-3.1.0-cp314-cp314-win_arm64.whl", hash = "sha256:6c51273b89784c9d54020ed2f60e20524169aef349bddf6cba9f5e83b46077a7", size = 10281257, upload-time = "2026-10-22T11:56:03.478Z" }, + { url = "https://files.pythonhosted.org/packages/05/e4/b3bf0b702c0a886e4abcfc2ebdc681310498592a10d9ca0ce5db6df47b70/pandas-3.1.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:84377fa82d0b40165379a0058d8a1a267ceb09e65160de6fcc75475d4d595884", size = 12134028, upload-time = "2026-10-22T11:56:05.696Z" }, + { url = "https://files.pythonhosted.org/packages/3e/ff/9e08cf048d73f4dfdb10da859790cd1a4213465dec39ea367a606d580c4a/pandas-3.1.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:37f88576f3449bfd86c1052f6b42274b61d7250c8d9dcc55f9dc4de7fe9883ae", size = 11729164, upload-time = "2026-10-22T11:56:08.335Z" }, + { url = "https://files.pythonhosted.org/packages/1f/ff/a0df60d70fac10006841457c30d35647ae0c93af33e420e5e047b15e058d/pandas-3.1.0-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:756fd67995f3efb6b25f8eaea95c0e893f84e0068e2c53c5fdbb65275041d4db", size = 11413041, upload-time = "2026-10-22T11:56:11.38Z" }, + { url = "https://files.pythonhosted.org/packages/55/04/e6742d85ba7d166a1a8a99ff9f4aa9e585fb24028522daa187859ce50b5d/pandas-3.1.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c4d9252b57bded194d09cd5ebf18d9b4edac238b16f56984ea8281d2ecfe39cd", size = 11869427, upload-time = "2026-10-22T11:56:13.637Z" }, + { url = "https://files.pythonhosted.org/packages/0a/a1/c9f4915408ef10b541f31b7812ca038dd903572c163b7be7bdcece8a5110/pandas-3.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:461b79db058639e446ddf90dd7f4804fae385acf0669f6e31321333e14cb6bc5", size = 12430367, upload-time = "2026-10-22T11:56:15.829Z" }, + { url = "https://files.pythonhosted.org/packages/9f/ed/636b9cc8d30b3e2027b43036dd5a8e9e7cfdd5aa86f4454235c5ef7f96db/pandas-3.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:bfac077874a396b7ae61a307b27aa6f0256cf31c143b7f96ac622765754cc300", size = 12945204, upload-time = "2026-10-22T11:56:18.419Z" }, + { url = "https://files.pythonhosted.org/packages/e6/5e/5c28942fa8c6cf2d8b4e941abee43a44ba0a123f9fef6411f0319aefddd5/pandas-3.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:1340f823a1d189fae8365de314c4d3c2ea0173c61bca66cc76a91385c64d9d3d", size = 11297553, upload-time = "2026-10-22T11:56:20.934Z" }, + { url = "https://files.pythonhosted.org/packages/cd/a4/5991dfb2cccd233ae754f2fb37a4b1474d90595d83f6790467dc5a7d8041/pandas-3.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:2bb3f8cc42fae0c0de5186778f4a4957656b9b3955aca48383abfdac44a83598", size = 10626068, upload-time = "2026-10-22T11:56:23.187Z" }, + { url = "https://files.pythonhosted.org/packages/77/26/5cd42609d8e6cb3991242116a0e499d09f29f5bcf574f72f0a4aba13a87e/pandas-3.1.0-cp315-cp315-macosx_10_15_x86_64.whl", hash = "sha256:04ca88727dfa86837030c493d7512bb1c008aa4f5f14149c5f8d3ff446791340", size = 11666949, upload-time = "2026-10-22T11:56:25.842Z" }, + { url = "https://files.pythonhosted.org/packages/97/5f/ca1ac99da700c215c52fb0f5063a7fbf14878c6e100f687704c21985640e/pandas-3.1.0-cp315-cp315-macosx_11_0_arm64.whl", hash = "sha256:c0bfec4d188fb0c05bba47b9f9def87624b8c545913aa3585a28f19f27ce847e", size = 11255062, upload-time = "2026-10-22T11:56:28.201Z" }, + { url = "https://files.pythonhosted.org/packages/d3/eb/8d7aef062e7d1f48869288e5c5ae5d109923f37ed3bbd0fdcaecc87784e9/pandas-3.1.0-cp315-cp315-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bbfb087db83eb79ca348047961d367bdd4bf9820d90a5945f3652c7060da7363", size = 11547558, upload-time = "2026-10-22T11:56:30.492Z" }, + { url = "https://files.pythonhosted.org/packages/06/c4/a041c786bc29935afe44806f72c0111f2643cbac5cab761007a227e12e97/pandas-3.1.0-cp315-cp315-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4b5ce18612ca955e7a95d0bacc20120aedf97e2fbbebbe4de029fc24479e79b8", size = 12026259, upload-time = "2026-10-22T11:56:33.219Z" }, + { url = "https://files.pythonhosted.org/packages/d3/4a/ce6690c7e6081c96857ad7dcbe3b978394d8db682610755919e61863516f/pandas-3.1.0-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:a13199463b129363701a540c7b79586581b246b10b6a7ad682c41b268e7991d5", size = 12563821, upload-time = "2026-10-22T11:56:35.402Z" }, + { url = "https://files.pythonhosted.org/packages/75/ec/ae440ecbfa8f5ba0230541b4519c1fed0c4293ff362f18f7f353b12e2dca/pandas-3.1.0-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:8e4de3fe8017e3445f1174707cd977e4e1154a704af2c060a1f648862f81acb9", size = 13086426, upload-time = "2026-10-22T11:56:37.666Z" }, + { url = "https://files.pythonhosted.org/packages/e7/1e/6459d4b0ed9c3d72b9ab63387ec11e1e658579e702e0ef117be8b5d7d0d1/pandas-3.1.0-cp315-cp315-win_amd64.whl", hash = "sha256:eee72bba8a72f0bf9522132e5c87cd10fce9d77440b50f65326b093ec9fb8d43", size = 10877850, upload-time = "2026-10-22T11:56:39.994Z" }, + { url = "https://files.pythonhosted.org/packages/f5/22/e5fad1828e5f923e80a8d7ba9187f687159004a10f99f95dd5346b04c54e/pandas-3.1.0-cp315-cp315-win_arm64.whl", hash = "sha256:9ea2983fe096a3d997c8c4b9f26775fa51e7fb251b10634bd7f87e6fe3542d52", size = 10276384, upload-time = "2026-10-22T11:56:42.193Z" }, + { url = "https://files.pythonhosted.org/packages/59/76/89820c2e1950425f39d30695d2296a8c7d400c4c2d279e7618363a7289ac/pandas-3.1.0-cp315-cp315t-macosx_10_15_x86_64.whl", hash = "sha256:84d73e0814a38711e4f2a24b272f748a0b4335169d2f9752407ae26bde22990f", size = 12107257, upload-time = "2026-10-22T11:56:44.498Z" }, + { url = "https://files.pythonhosted.org/packages/c8/2c/af4397e6e855d2c0dcb3392ab7788087be4ef53f6a3f166daad8b83c783e/pandas-3.1.0-cp315-cp315t-macosx_11_0_arm64.whl", hash = "sha256:d3920d9b4de89fbef76ba6b863d58a330b5bfb720c9f8f58eb9b7da9b711d034", size = 11704430, upload-time = "2026-10-22T11:56:46.791Z" }, + { url = "https://files.pythonhosted.org/packages/fd/9e/7791cd269099f9fca7dc4718955cfe4bb94aedb6634b59eeffefb1ed6a74/pandas-3.1.0-cp315-cp315t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a1d61e0eae5219cd024fcbc21304de759964b5642ddcdbb28d9a8ba442ab6901", size = 11378442, upload-time = "2026-10-22T11:56:49.113Z" }, + { url = "https://files.pythonhosted.org/packages/54/6c/da4013bd33c49a12eb3127771111caeed3222a985651e3465bc06f839ce7/pandas-3.1.0-cp315-cp315t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bbb121205af7bc5e587b94a07b5f67b5ba687a918665b9e8748f21388a88b044", size = 11850193, upload-time = "2026-10-22T11:56:51.558Z" }, + { url = "https://files.pythonhosted.org/packages/14/89/8c820bd6fb6ad8f0edb2877639bc7e164bfb4b8e4cdf7a2202f54959ea1b/pandas-3.1.0-cp315-cp315t-musllinux_1_2_aarch64.whl", hash = "sha256:684ef3add5a92abb99c1622f2bd04b54b8843075a266e8240106ca94ce1d1237", size = 12394022, upload-time = "2026-10-22T11:56:53.785Z" }, + { url = "https://files.pythonhosted.org/packages/92/f5/9d753d85c4ea85b6d1c3735496ae5b416d7ef6905f1845c70e9521d124d9/pandas-3.1.0-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:dde9a55ecd3c4f9100ac50ab15e852e4c54fcf372d800e4495e0b2159a0122ab", size = 12916085, upload-time = "2026-10-22T11:56:56.084Z" }, + { url = "https://files.pythonhosted.org/packages/e6/f9/4a6965677477dbbb19f8881befb01b67eb6009809db73f7f1b7a0132faf1/pandas-3.1.0-cp315-cp315t-win_amd64.whl", hash = "sha256:3fe234bfb9999552dc54c45851752e56e163218d7663897dca950b4a7c32af39", size = 11267097, upload-time = "2026-10-22T11:56:58.479Z" }, + { url = "https://files.pythonhosted.org/packages/99/35/e60fd8228db4eb848802988dbc6e3a0f1a81c57f06ad95ebe4cd534fa655/pandas-3.1.0-cp315-cp315t-win_arm64.whl", hash = "sha256:f1a93c24175129bfc9922ef748ddae1d8137c743ed835e2615be329f606fed4d", size = 10597861, upload-time = "2026-10-22T11:57:00.776Z" }, ] [[package]] diff --git a/Übung 4/SLN.py b/Übung 4/SLN.py index 6426ebc..beb508d 100644 --- a/Übung 4/SLN.py +++ b/Übung 4/SLN.py @@ -1,11 +1,12 @@ -import numpy as np -import nnwplot import matplotlib.pyplot as plt +import numpy as np + +import nnwplot def error_rate(Y, T): if Y.ndim == 1 or Y.shape[0] == 1: - errors = Y - T + errors = Y != T return errors.sum() / Y.size else: # für mehrere Ausgaben in one-hot Kodierung: errors = Y.argmax(0) != T.argmax(0) @@ -21,15 +22,9 @@ class SLN: self._W = np.random.randn(dIn, cOut) / np.sqrt(dIn + 1) def neuron(self, X): - N = X.shape[1] - net = np.zeros(N) + net = self._W.T.dot(X) + self._b - for n in range(0, N): - value = 0 - for i in range(self.dIn): - value += X[i, n] * self._W[i][0] - net[n] += value + self._b[0][0] - return net + return net >= 0 def delta_train(self, X, T, eta, maxIter, maxErrorRate): N = X.shape[1] # Anzahl Trainingsdaten @@ -37,22 +32,17 @@ class SLN: for it in range(maxIter): Y = self.neuron(X) # nur ein Aufruf err = error_rate(Y, T) - if (it % 10) == 0: - print('#{} err:{}\n{}\n{}'.format(it, err, self._W, self._b)) - nnwplot.plotTwoFeatures(X, T, self.neuron) - plt.pause(0.05) # warte auf GUI event loop (je nach python Version notwendig oder nicht) + # if (it % 10) == 0: + print('#{} err:{}\n{}\n{}'.format(it, err, self._W, self._b)) + nnwplot.plotTwoFeatures(X, T, self.neuron) + plt.pause(0.05) # warte auf GUI event loop (je nach python Version notwendig oder nicht) if err <= maxErrorRate: break - # update _W - for n in range(N): - for j in range(self.dIn): - weighted_error = err * X[j, n] - to_learn = weighted_error * eta - #print("{:.2f} = {} * {} * {}".format(to_learn, err, X[j, n], eta)) - self._W[j, 0] += to_learn - self._b[0][0] -= to_learn - # update _b - ... + + delta = T - Y + self._W += X.dot(delta.T) * eta + self._b += delta.sum() * eta + print('#{} err:{}\n{}\n{}'.format(it, err, self._W, self._b)) nnwplot.plotTwoFeatures(X, T, self.neuron) plt.pause(0.05) # warte auf GUI event loop (je nach python Version notwendig oder nicht) diff --git a/Übung 4/nnwplot.py b/Übung 4/nnwplot.py index 8b715cd..44a3155 100644 --- a/Übung 4/nnwplot.py +++ b/Übung 4/nnwplot.py @@ -16,7 +16,7 @@ def plotTwoFeatures(X,T,pred_func): # determine canvas borders mins = np.amin(X,1); - mins = mins - 0.1*np.abs(mins); + mins = mins - np.where(mins == 0, 0.1, 0.1 * np.abs(mins)) maxs = np.amax(X,1); maxs = maxs + 0.1*maxs; @@ -45,5 +45,5 @@ def plotTwoFeatures(X,T,pred_func): # Plot the contour and training examples plt.contourf(xs, ys, Z, cmap=plt.cm.Spectral) plt.scatter(X[0,:], X[1,:], c=T, s=50, - cmap=colors.ListedColormap(['orange', 'blue', 'green'])) + cmap=colors.ListedColormap(['blue', 'green'])) plt.show() diff --git a/Übung 4/training.ipynb b/Übung 4/training.ipynb new file mode 100644 index 0000000..2a1e759 --- /dev/null +++ b/Übung 4/training.ipynb @@ -0,0 +1,232 @@ +{ + "cells": [ + { + "metadata": { + "ExecuteTime": { + "end_time": "2026-10-27T07:21:20.697208100Z", + "start_time": "2026-10-27T07:21:20.549994800Z" + } + }, + "cell_type": "code", + "source": [ + "from importlib import reload\n", + "import numpy as np\n", + "from nnwplot import plotTwoFeatures\n", + "import SLN as import_sln\n", + "reload(import_sln)" + ], + "id": "de83e0a3826971b5", + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 1 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2026-10-27T07:21:20.748481200Z", + "start_time": "2026-10-27T07:21:20.725628100Z" + } + }, + "cell_type": "code", + "source": [ + "X = np.array([[0., 0., 1., 1.], [0., 1., 0., 1.]])\n", + "T = np.array([0., 0., 0., 1.])\n" + ], + "id": "d04fd0aaafa7b2e3", + "outputs": [], + "execution_count": 2 + }, + { + "cell_type": "code", + "id": "initial_id", + "metadata": { + "collapsed": true, + "ExecuteTime": { + "end_time": "2026-10-27T07:21:20.797664700Z", + "start_time": "2026-10-27T07:21:20.755600900Z" + } + }, + "source": [ + "sln = import_sln.SLN(2, 1)\n", + "sln._W = np.array([[1], [1]])\n", + "sln._b = np.array([[-2]])" + ], + "outputs": [], + "execution_count": 3 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2026-10-27T07:21:20.819163400Z", + "start_time": "2026-10-27T07:21:20.800115900Z" + } + }, + "cell_type": "code", + "source": "sln.neuron(X)", + "id": "5cb7b328ef2abe20", + "outputs": [], + "execution_count": 4 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2026-10-27T07:21:20.868604400Z", + "start_time": "2026-10-27T07:21:20.835236400Z" + } + }, + "cell_type": "code", + "source": "plotTwoFeatures(X, T, sln.neuron)", + "id": "19d68b97fca5a7e7", + "outputs": [], + "execution_count": 5 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2026-10-27T07:21:22.319853100Z", + "start_time": "2026-10-27T07:21:20.871602500Z" + } + }, + "cell_type": "code", + "source": [ + "train_sln = import_sln.SLN(2, 1)\n", + "train_sln.delta_train(X, T, 0.1, 100, 0.001)" + ], + "id": "e97b83cdad840616", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "#0 err:0.5\n", + "[[ 0.28677805]\n", + " [-0.07982693]]\n", + "[[0.]]\n" + ] + }, + { + "data": { + "text/plain": [ + "
" + ], + "image/png": "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" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "#1 err:0.25\n", + "[[ 0.18677805]\n", + " [-0.07982693]]\n", + "[[-0.2]]\n" + ] + }, + { + "data": { + "text/plain": [ + "
" + ], + "image/png": "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AgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMCo4IJWiIiIUN8+fVSzZg3t3bdPc+fO0/nz5y9aJyqqurp06aJKFSvq6LFjWrRosU6dOvVH2g0AAPyxZ6R8+XJatHC+Bg8epNDQUD00ZrQ++/QThYeF5VsnJiZGq1auUPv27ez1Ht27a+2aVbr22mv/eOsBAIB/9Yw89NBDCgwK0m239VP6uXN65dVXtWLFct1332C9+tq0POs8OGKYli37WiNGjHSXzZ37uYYMGayHH97yx/8CAADgPz0jPXt017x58+0gYjl9OklLl36hHj175FsnKSlZwSG5M09IcLCSkpIK22YAAOCPPSMOh0O1atXS/n37c5Xv379fXbrcnG+9J58ar+eff1bvzXxXu3bvVtMmTfTDD3s1adJLF30ua8kRGRnpaTMBAICvhpHw8HD7Z0pqSq7ylDNnFPHLY3mpXKmSrqxTR7t27VZaaqoyMjJUt+5VKl++vM6cOZNnnTGjRyk2dpznfwUAAPD9MHL27FllZ2erTOnSucrLlC1rP5afKVMma82atfrLX//mLnv7rTf0wvPP6s67BuRdZ2qcpsUn5OoZ2bxpg6dNBQAAvjhnxLp898CBRF111VW5yq+68krt3r0n7/88MNDeftOmzbnKN27arAYNGuT7XE6nU6mpqe4lLS3N02YCAABfnsA6b9489enTW6VKlbLXq1Spoptvvskuz9Ghww0aN/YR+3erJ2Xfvn1qf/3Pl/XmaN+urXbvyTvAAAAA/1KgS3unxr2izp1jNH/eHK1dt04xnTrpu23b9M67M93btG7VSkOHPqB/vfRve/3xx/+hhIRpmjXrQ+347w61aNFC0dG1dfeAgUX/1wAAAN8OIykpKerVu6999UyNGjXsy3q/+mqZ3QOSY8WKlUq+YGLq8hUr1K7d9erQoYMqVa6kdevX65tvltvDLwAAAAHVo2q6vH03WMNCu3bukDNuoORMN90cAADgCUe4HKPeVf0GjS7aCcEX5QEAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAo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" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "#2 err:0.25\n", + "[[0.28677805]\n", + " [0.02017307]]\n", + "[[-0.1]]\n" + ] + }, + { + "data": { + "text/plain": [ + "
" + ], + "image/png": "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YQQAABhFGAEAAEYRRoACOBLiaR8AuMIIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjwCU4EuJpIwC4gggjQCEQSADgyiGMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADAqsKgFwsPDNaB/f9WtW0cHDh7UokWLlZmZWWCZyMjaio2NVbWqVXXs+HEtX75Cp06dupx6AwAAX+wZqVy5kpYvW6Jhw4YqJCRED40do48+/EBhoaH5lomJidG6tWvUuXMne713r17auGGdrr322suvPQAA8K2ekYceekj+AQG65ZY4pWdk6JVXX9WaNat1993D9Opr0/Msc/+oEUpI+FyjRo12b1u06GPdc88wPfzwjst/BQAAwHd6Rvr07qXFi5fYQcRy5kySVq36RL379M63TFJSsgKDcmeeoMBAJSUlFbfOAADAF3tGgoODVa9ePR06eCjX9kOHDik29qZ8yz3x5AQ999wzemfe29q7b5+iW7bUd98d0OTJLxb4XNZyQURERGGrCQAAvDWMhIWF2T9TUlNybU85e1bhvzyWl+rVqunqBg20d+8+paWm6vz582rUqKEqV66ss2fP5llm7JgH5XCML/yrAAAA3h9Gzp07p5ycHFUoXz7X9goVK9qP5WfKlJe0YcNG/enPf3Fve/ONOXr+uWd02x/vyLvM1GmaPmNmrp6R7du2FLaqAADAG8eMWNN3Dx9OVMOGDXNtb3j11dq3b3/ef9zf395/27btubZv3bZdTZs2zfe5nE6nUlNT3UtaWlphqwkAALx5AOvixYvVv38/lStXzl6vUaOGbrrpRnv7BV26XK/x4x6xf7d6Ug4ePKjOv/95Wu8FnTt11L79eQcYAADgW4oURqZOe0XJyclasnihPSh10cKP9PU33+itt+e592nfrp1GjBjuXn/88b+rZ48emj//P5rw5BNavGihWrRooQkTJpbsKwGuMEdCPG0MAKbvM5KSkqK+/QbYs2fq1KljT+v97LMEuwfkgjVr1ir5ooGpq9esUadOv1eXLl1UrXo1bdq8WV98sdq+/AKUxUAyuVuc6WoAgG/fDt4aO7J06bJ8H9/85Zf2crHT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TwpTewEAQJFn0/zrxX+rdu3amjVzhu6443bNnfuGsrOyNGPGDPc+A/r300svvUjrAgCAkg8jR44cUc9evbV//3517tRJmzdtVu8+/XTmTJJ7n7379mnFypX5/o0vN3+prVu3FeVpgTLJkRBvugoAUCb41Y6s65KHs6b37t2zW85pQyRnuunqAIU2uVvB9+ABAG8W7B8oR/RgezJKampqvvvxRXkAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijABXkCMh3l4AAPkjjAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAKXAkRBPOwNAPggjQCkhkABA3ggjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjAotaoGHDq3Xfffepbt06OnjwoKZPn6Effzya7/7BwcEaNChOnTp2VFBQkHbs2Kk3585Venr65dYdAAD4Ws/I1Vc30JLFixQeHqb335+v+vXq2+vVq1fPt8zCjz9Uq1bRSvj8cy1fvkIDB96shQs/UlhoaEnUHyhTHAnxpqsAAGW7Z2TcI49o//7v9Mgj4+11K1ysW7ta948aqacmPp1nmT/efqeSkpLc6+vWr9f2bVvUrXs3LV267HLrDwAAfKln5IYbumrFypXu9aysLH3yyafqekPXfMtcHEQsKSkpys7OVnh4eHHqCwAAfLVnxLqsUq1aNR09mnt8iLVer27dQj/h8OH3KSsrW2vXritwnIm1XBAREVHovw8AALw0jAT9Eg4yMjJybbcGogYF/S84FOTGG7vrsUcd+stf/k/Hjh3Ld7+xYx6Uw/HzpSAAAODdCh1G0tLSlJmZqUqVKuXaXrlyZSUnJ1+yfNcuXTRj+nT985ln9e57/ylw3ylTp2n6jJm5ekascSYAAMCHw4g1zmPPnj1q2bJFru3W+q5duwos26XL9Xr99dmaNGmSPRX4UpxO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YrnUC/EU1puioPQH2rK08Z6kLT0R70vfacfUQtSPAawAAMAowggAADCKMFJCnE6nJk/+l/0TtKUn4D1JW3oi3pe0Y5kewAoAALwTPSMAAMAowggAADCKMAIAAIwqM/cZ8QTNmzfTVVdF6fvvE7Vr13+vWBlvFxwcrHbt2ioiPELbd+zQTz/9dMkytWrV0u9+11wpZ1P0zTffKD0jo1Tq6umqVaumNq1b61z6OW3e/GWRBlDf0LWrKlWqpCVLlyorK0u+rjjHamhoqNq0aa2gwCB9uWWLzp07J19XnOPbeh+2aHGNwsLC9N133+nAgYOlUldPFx4erq5duyol5azWrVt/xc8JJjGAtRD8/f01beoU3XBDV+3YsVPRraK1ccNG3T/6gXxP4sUp4wuioqL03rvz7APkp59OqlWraD3++N/13n/+k+9J6oXnn9O117bS7m+/VWTtSFWtWkVjxj5U6IPTWw0aFKdnn/mndu78StWqVbU/GG+/485CnchvvLG7Zs6Ybpdp1vwanT17Vr6quMeq1YYv/muyfvzxRx09ekwNGkTpoYfH6auvvpKvKurxbblt8GBNnDhBu3btUnJysjp16qTPEhL04INjlZ2dLV8NdP/4+9/Uu3dvuVwuHTx4UINuHXxFzwmmcZmmEO688w516xaj3n366Y47h6hXrz7q3LmThg0bWqJlfMGkF563D4yYbjcqbtCtenLCU3rmmadVJzIyz/3Dw8P0wYcfql37jho69G7dFNtDS5cu02uvviI/Pz/5qtq1a+n55561289qx27db9J33x3Q5EmTCvXVCs89+4xeenlKqdTV0xXnWG3UqJEd5qZOe0W9evfVPffep0G33qaAAN8+pRb1+A4ICNDTTz+laa+8qj8MjNOwu+9Vnz79NKB/f8XGxspXBQYGav/+/bohppsSEhKu+DnBE/j2kVNIcbcM1IqVK3X48GF7/ciRI1q2bLnibrmlRMt4O+tgsU7ys2bPVk5Ojr3t3XffU3p6uvr175dnmR9/PGq328WWLlumqlWrKrJ2bfmqvn372v99vvfez/9xWu05c9YsdejQXnXr1s23nBXgpk59Wa++Nl17vt1TijX2XMU5Vu8fNdLeb8aM/31558mTJ7V9+w75quIc31YYsZbvv//eve2HH35QZmamgoOD5KvOnTun1994UykpKVf8nOApCCOF0KxZs9+cuK1LBs2aNS3RMt7OahPLxe1idYN/d+CA+7HC6NKli5KSknT02DH5qubNmtn/9Vgn7Qu+/fZb+2dB77FHHn5Imc5MzZ49p1TqWRYU51jt0LGDVq9eoypVqqhHbKzat2unsNBQ+bLiHN/Wh+fjf/u7xo17RCNHjtDtf7xNb7z5uh0OrR5QXPlzgqdgAGshVKhQwf7wu9iZM2fs63EhISE6f/58iZTxdhXKV7B/nsmjXSpW+PmxS2nfvr1GjRyhfzzxpPu/L19UvkL5PN5fSe73Xl6sD0zr0kOPnr1LpY5lRXGO1WpVq9rjI5YtXaxv9+xR/Xr1VL5CBY0cOUrbtm2XLyru8b1v336dS0tTv359lZyUrAZRUZoz5w2fHltXWucET0IYKQTrZBQeEfGbr0S2PgzzG6lcnDLe7vwvr9tqh4tnHVij7k+cOHHJ8i1bttQbr8+2uy/nzn1Lvsx53qka1av/ZuS9Jb+gO2nS80r4/At16tjRXrcGF1r69O6tHTt3uv+L8jXFPb6tWTTdb4zVsV966F59ZZo9oPWGmO7yRcU5vq2epXlvz9XzL0zSzJmz7G1WyPtk1QqdOn1K8+cvKKXa++Y5wZNwmaYQrGvJderUybWtbp069nVOa6RzSZXxdocPH7J//rpd6tSJ1OHExALLtmzRQu+9+47en79AEyY8JV+X5/vrl+vCiYfzbsuNGzcpNCREvXr1tJfWrVu7Z4U0btxIvqq4x7fVA3IhiFiWLV+uxo0b29NTfVFxjm8rEFvhZdGixe5thw4dsqfvd+7c+QrX2LscLsY5wZMQRgrhs88S1LNHDwUFBblHOvfu3UuffvqZe5+rr26gmwcMKFIZX7N797f24LT+/fq6t7Vufa3q16+vTz/51L2tS5frdd11bdzr11zzO7373jtaEL9ATzzxZKnX2xN9+tln9onHar8Lbh7Q355i+s2uXfa6dZnBek9aAwstf/rzXzT6gQfdy/TpM+ztjkcfy/Vh4GuKc3yvWvWJohpE2dOCL2jcqJFOnzljD9j0RcU5vq0B6paLw7A1rbVevfo6evTnx5C3Xx/fhTkneDLuM1II1syN5cuW2DfjWbpsuX3iat68uXr36avjx4/b+wwffp8mPPmEIuvUK3QZX9SnT2+7O3vWrNn2AFRr/MeWLVvtD8cLFi36WEe+P2Jvs6YErlixTMePn9DLv5qKunrNavc1UV80dcrL6tixg16bPkO1atbUiBHD7fuvXAgW1klq65YvNWLkKC1ZsvQ35Xv17Kk5c2b5/H1GinN8W93fixcttD98ly5dqquiojRi+H36+z+e0Lx578hXFfX4tsyaOcMOJ9ZlmqTkZN0ycKCaNGlsj226uOfJ18TG3qTwsHDdOeQO+/LLiy++ZG//eOHCfI/vS50TPBlhpAgnrGFD79JVUVfp+8Tv9ebct3LdWdC6T8HgW2/NddBdqoyvsq61Wyccq3t206bNen/+/FyDUR977FGdPnVKs+e8bnd7jx/3SJ5/57nnX7C7dH2VNU331lsHqWOHDvZ/4x9+9JF94r/4hnHP/PNpzZg5M88pp9HR0Rp9/yiNH+/w+TvaFuf4tgLJ0LvuUtNmTXXq5En7Tra+PLW3OMf3hfexdV+Rtm2vsy9xHThwQO++955P/6NhmfjUBPt9+WsX3oN5Hd+XOid4MsIIAAAwijEjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAmfT/ASJBJrJdNgWsAAAAAElFTkSuQmCC" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "#3 err:0.0\n", + "[[0.18677805]\n", + " [0.02017307]]\n", + "[[-0.2]]\n" + ] + }, + { + "data": { + "text/plain": [ + "
" + ], + "image/png": "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" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "#3 err:0.0\n", + "[[0.18677805]\n", + " [0.02017307]]\n", + "[[-0.2]]\n" + ] + }, + { + "data": { + "text/plain": [ + "
" + ], + "image/png": "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" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "execution_count": 6 + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}