├── .gitignore ├── .vscode └── settings.json ├── LICENSE ├── Pipfile ├── Pipfile.lock ├── README.md ├── data ├── iris-test.csv ├── iris-train.csv ├── iris.arff ├── iris.csv ├── labor.arff ├── points.txt └── top1000data.txt ├── dev └── mrcai │ └── datamining │ ├── association │ ├── Apriori.java │ └── IOUtils.java │ ├── classification │ ├── BackPropagation.m │ ├── IOUtils.java │ ├── Iris.java │ ├── KNN.java │ └── Perceptron.m │ ├── clustering │ ├── DBSCAN.java │ ├── IOUtils.java │ ├── KMeans.java │ └── Point.java │ └── preprocessing │ ├── FeatureSelection.java │ ├── IOUtils.java │ ├── MissingValueSubstitution.java │ ├── Normalization.java │ └── Visualization.py ├── lib ├── jcommon.jar ├── jfreechart.jar └── weka.jar ├── report.pdf └── requirements.txt /.gitignore: -------------------------------------------------------------------------------- 1 | outputs 2 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "java.project.referencedLibraries": [ 3 | "lib/**/*.jar", 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Attribution-NonCommercial-ShareAlike 4.0 International 2 | 3 | ======================================================================= 4 | 5 | Creative Commons Corporation ("Creative Commons") is not a law firm and 6 | does not provide legal services or legal advice. Distribution of 7 | Creative Commons public licenses does not create a lawyer-client or 8 | other relationship. Creative Commons makes its licenses and related 9 | information available on an "as-is" basis. Creative Commons gives no 10 | warranties regarding its licenses, any material licensed under their 11 | terms and conditions, or any related information. Creative Commons 12 | disclaims all liability for damages resulting from their use to the 13 | fullest extent possible. 14 | 15 | Using Creative Commons Public Licenses 16 | 17 | Creative Commons public licenses provide a standard set of terms and 18 | conditions that creators and other rights holders may use to share 19 | original works of authorship and other material subject to copyright 20 | and certain other rights specified in the public license below. The 21 | following considerations are for informational purposes only, are not 22 | exhaustive, and do not form part of our licenses. 23 | 24 | Considerations for licensors: Our public licenses are 25 | intended for use by those authorized to give the public 26 | permission to use material in ways otherwise restricted by 27 | copyright and certain other rights. Our licenses are 28 | irrevocable. Licensors should read and understand the terms 29 | and conditions of the license they choose before applying it. 30 | Licensors should also secure all rights necessary before 31 | applying our licenses so that the public can reuse the 32 | material as expected. Licensors should clearly mark any 33 | material not subject to the license. This includes other CC- 34 | licensed material, or material used under an exception or 35 | limitation to copyright. More considerations for licensors: 36 | wiki.creativecommons.org/Considerations_for_licensors 37 | 38 | Considerations for the public: By using one of our public 39 | licenses, a licensor grants the public permission to use the 40 | licensed material under specified terms and conditions. If 41 | the licensor's permission is not necessary for any reason--for 42 | example, because of any applicable exception or limitation to 43 | copyright--then that use is not regulated by the license. Our 44 | licenses grant only permissions under copyright and certain 45 | other rights that a licensor has authority to grant. Use of 46 | the licensed material may still be restricted for other 47 | reasons, including because others have copyright or other 48 | rights in the material. A licensor may make special requests, 49 | such as asking that all changes be marked or described. 50 | Although not required by our licenses, you are encouraged to 51 | respect those requests where reasonable. More considerations 52 | for the public: 53 | wiki.creativecommons.org/Considerations_for_licensees 54 | 55 | ======================================================================= 56 | 57 | Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International 58 | Public License 59 | 60 | By exercising the Licensed Rights (defined below), You accept and agree 61 | to be bound by the terms and conditions of this Creative Commons 62 | Attribution-NonCommercial-ShareAlike 4.0 International Public License 63 | ("Public License"). To the extent this Public License may be 64 | interpreted as a contract, You are granted the Licensed Rights in 65 | consideration of Your acceptance of these terms and conditions, and the 66 | Licensor grants You such rights in consideration of benefits the 67 | Licensor receives from making the Licensed Material available under 68 | these terms and conditions. 69 | 70 | 71 | Section 1 -- Definitions. 72 | 73 | a. Adapted Material means material subject to Copyright and Similar 74 | Rights that is derived from or based upon the Licensed Material 75 | and in which the Licensed Material is translated, altered, 76 | arranged, transformed, or otherwise modified in a manner requiring 77 | permission under the Copyright and Similar Rights held by the 78 | Licensor. For purposes of this Public License, where the Licensed 79 | Material is a musical work, performance, or sound recording, 80 | Adapted Material is always produced where the Licensed Material is 81 | synched in timed relation with a moving image. 82 | 83 | b. Adapter's License means the license You apply to Your Copyright 84 | and Similar Rights in Your contributions to Adapted Material in 85 | accordance with the terms and conditions of this Public License. 86 | 87 | c. BY-NC-SA Compatible License means a license listed at 88 | creativecommons.org/compatiblelicenses, approved by Creative 89 | Commons as essentially the equivalent of this Public License. 90 | 91 | d. Copyright and Similar Rights means copyright and/or similar rights 92 | closely related to copyright including, without limitation, 93 | performance, broadcast, sound recording, and Sui Generis Database 94 | Rights, without regard to how the rights are labeled or 95 | categorized. For purposes of this Public License, the rights 96 | specified in Section 2(b)(1)-(2) are not Copyright and Similar 97 | Rights. 98 | 99 | e. Effective Technological Measures means those measures that, in the 100 | absence of proper authority, may not be circumvented under laws 101 | fulfilling obligations under Article 11 of the WIPO Copyright 102 | Treaty adopted on December 20, 1996, and/or similar international 103 | agreements. 104 | 105 | f. Exceptions and Limitations means fair use, fair dealing, and/or 106 | any other exception or limitation to Copyright and Similar Rights 107 | that applies to Your use of the Licensed Material. 108 | 109 | g. License Elements means the license attributes listed in the name 110 | of a Creative Commons Public License. The License Elements of this 111 | Public License are Attribution, NonCommercial, and ShareAlike. 112 | 113 | h. Licensed Material means the artistic or literary work, database, 114 | or other material to which the Licensor applied this Public 115 | License. 116 | 117 | i. Licensed Rights means the rights granted to You subject to the 118 | terms and conditions of this Public License, which are limited to 119 | all Copyright and Similar Rights that apply to Your use of the 120 | Licensed Material and that the Licensor has authority to license. 121 | 122 | j. Licensor means the individual(s) or entity(ies) granting rights 123 | under this Public License. 124 | 125 | k. NonCommercial means not primarily intended for or directed towards 126 | commercial advantage or monetary compensation. For purposes of 127 | this Public License, the exchange of the Licensed Material for 128 | other material subject to Copyright and Similar Rights by digital 129 | file-sharing or similar means is NonCommercial provided there is 130 | no payment of monetary compensation in connection with the 131 | exchange. 132 | 133 | l. Share means to provide material to the public by any means or 134 | process that requires permission under the Licensed Rights, such 135 | as reproduction, public display, public performance, distribution, 136 | dissemination, communication, or importation, and to make material 137 | available to the public including in ways that members of the 138 | public may access the material from a place and at a time 139 | individually chosen by them. 140 | 141 | m. Sui Generis Database Rights means rights other than copyright 142 | resulting from Directive 96/9/EC of the European Parliament and of 143 | the Council of 11 March 1996 on the legal protection of databases, 144 | as amended and/or succeeded, as well as other essentially 145 | equivalent rights anywhere in the world. 146 | 147 | n. You means the individual or entity exercising the Licensed Rights 148 | under this Public License. Your has a corresponding meaning. 149 | 150 | 151 | Section 2 -- Scope. 152 | 153 | a. License grant. 154 | 155 | 1. Subject to the terms and conditions of this Public License, 156 | the Licensor hereby grants You a worldwide, royalty-free, 157 | non-sublicensable, non-exclusive, irrevocable license to 158 | exercise the Licensed Rights in the Licensed Material to: 159 | 160 | a. reproduce and Share the Licensed Material, in whole or 161 | in part, for NonCommercial purposes only; and 162 | 163 | b. produce, reproduce, and Share Adapted Material for 164 | NonCommercial purposes only. 165 | 166 | 2. Exceptions and Limitations. For the avoidance of doubt, where 167 | Exceptions and Limitations apply to Your use, this Public 168 | License does not apply, and You do not need to comply with 169 | its terms and conditions. 170 | 171 | 3. Term. The term of this Public License is specified in Section 172 | 6(a). 173 | 174 | 4. Media and formats; technical modifications allowed. The 175 | Licensor authorizes You to exercise the Licensed Rights in 176 | all media and formats whether now known or hereafter created, 177 | and to make technical modifications necessary to do so. The 178 | Licensor waives and/or agrees not to assert any right or 179 | authority to forbid You from making technical modifications 180 | necessary to exercise the Licensed Rights, including 181 | technical modifications necessary to circumvent Effective 182 | Technological Measures. For purposes of this Public License, 183 | simply making modifications authorized by this Section 2(a) 184 | (4) never produces Adapted Material. 185 | 186 | 5. Downstream recipients. 187 | 188 | a. Offer from the Licensor -- Licensed Material. Every 189 | recipient of the Licensed Material automatically 190 | receives an offer from the Licensor to exercise the 191 | Licensed Rights under the terms and conditions of this 192 | Public License. 193 | 194 | b. Additional offer from the Licensor -- Adapted Material. 195 | Every recipient of Adapted Material from You 196 | automatically receives an offer from the Licensor to 197 | exercise the Licensed Rights in the Adapted Material 198 | under the conditions of the Adapter's License You apply. 199 | 200 | c. No downstream restrictions. You may not offer or impose 201 | any additional or different terms or conditions on, or 202 | apply any Effective Technological Measures to, the 203 | Licensed Material if doing so restricts exercise of the 204 | Licensed Rights by any recipient of the Licensed 205 | Material. 206 | 207 | 6. No endorsement. Nothing in this Public License constitutes or 208 | may be construed as permission to assert or imply that You 209 | are, or that Your use of the Licensed Material is, connected 210 | with, or sponsored, endorsed, or granted official status by, 211 | the Licensor or others designated to receive attribution as 212 | provided in Section 3(a)(1)(A)(i). 213 | 214 | b. Other rights. 215 | 216 | 1. Moral rights, such as the right of integrity, are not 217 | licensed under this Public License, nor are publicity, 218 | privacy, and/or other similar personality rights; however, to 219 | the extent possible, the Licensor waives and/or agrees not to 220 | assert any such rights held by the Licensor to the limited 221 | extent necessary to allow You to exercise the Licensed 222 | Rights, but not otherwise. 223 | 224 | 2. Patent and trademark rights are not licensed under this 225 | Public License. 226 | 227 | 3. To the extent possible, the Licensor waives any right to 228 | collect royalties from You for the exercise of the Licensed 229 | Rights, whether directly or through a collecting society 230 | under any voluntary or waivable statutory or compulsory 231 | licensing scheme. In all other cases the Licensor expressly 232 | reserves any right to collect such royalties, including when 233 | the Licensed Material is used other than for NonCommercial 234 | purposes. 235 | 236 | 237 | Section 3 -- License Conditions. 238 | 239 | Your exercise of the Licensed Rights is expressly made subject to the 240 | following conditions. 241 | 242 | a. Attribution. 243 | 244 | 1. If You Share the Licensed Material (including in modified 245 | form), You must: 246 | 247 | a. retain the following if it is supplied by the Licensor 248 | with the Licensed Material: 249 | 250 | i. identification of the creator(s) of the Licensed 251 | Material and any others designated to receive 252 | attribution, in any reasonable manner requested by 253 | the Licensor (including by pseudonym if 254 | designated); 255 | 256 | ii. a copyright notice; 257 | 258 | iii. a notice that refers to this Public License; 259 | 260 | iv. a notice that refers to the disclaimer of 261 | warranties; 262 | 263 | v. a URI or hyperlink to the Licensed Material to the 264 | extent reasonably practicable; 265 | 266 | b. indicate if You modified the Licensed Material and 267 | retain an indication of any previous modifications; and 268 | 269 | c. indicate the Licensed Material is licensed under this 270 | Public License, and include the text of, or the URI or 271 | hyperlink to, this Public License. 272 | 273 | 2. You may satisfy the conditions in Section 3(a)(1) in any 274 | reasonable manner based on the medium, means, and context in 275 | which You Share the Licensed Material. For example, it may be 276 | reasonable to satisfy the conditions by providing a URI or 277 | hyperlink to a resource that includes the required 278 | information. 279 | 3. If requested by the Licensor, You must remove any of the 280 | information required by Section 3(a)(1)(A) to the extent 281 | reasonably practicable. 282 | 283 | b. ShareAlike. 284 | 285 | In addition to the conditions in Section 3(a), if You Share 286 | Adapted Material You produce, the following conditions also apply. 287 | 288 | 1. The Adapter's License You apply must be a Creative Commons 289 | license with the same License Elements, this version or 290 | later, or a BY-NC-SA Compatible License. 291 | 292 | 2. You must include the text of, or the URI or hyperlink to, the 293 | Adapter's License You apply. You may satisfy this condition 294 | in any reasonable manner based on the medium, means, and 295 | context in which You Share Adapted Material. 296 | 297 | 3. You may not offer or impose any additional or different terms 298 | or conditions on, or apply any Effective Technological 299 | Measures to, Adapted Material that restrict exercise of the 300 | rights granted under the Adapter's License You apply. 301 | 302 | 303 | Section 4 -- Sui Generis Database Rights. 304 | 305 | Where the Licensed Rights include Sui Generis Database Rights that 306 | apply to Your use of the Licensed Material: 307 | 308 | a. for the avoidance of doubt, Section 2(a)(1) grants You the right 309 | to extract, reuse, reproduce, and Share all or a substantial 310 | portion of the contents of the database for NonCommercial purposes 311 | only; 312 | 313 | b. if You include all or a substantial portion of the database 314 | contents in a database in which You have Sui Generis Database 315 | Rights, then the database in which You have Sui Generis Database 316 | Rights (but not its individual contents) is Adapted Material, 317 | including for purposes of Section 3(b); and 318 | 319 | c. You must comply with the conditions in Section 3(a) if You Share 320 | all or a substantial portion of the contents of the database. 321 | 322 | For the avoidance of doubt, this Section 4 supplements and does not 323 | replace Your obligations under this Public License where the Licensed 324 | Rights include other Copyright and Similar Rights. 325 | 326 | 327 | Section 5 -- Disclaimer of Warranties and Limitation of Liability. 328 | 329 | a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE 330 | EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS 331 | AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF 332 | ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, 333 | IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, 334 | WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR 335 | PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, 336 | ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT 337 | KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT 338 | ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. 339 | 340 | b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE 341 | TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, 342 | NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, 343 | INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, 344 | COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR 345 | USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN 346 | ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR 347 | DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR 348 | IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. 349 | 350 | c. The disclaimer of warranties and limitation of liability provided 351 | above shall be interpreted in a manner that, to the extent 352 | possible, most closely approximates an absolute disclaimer and 353 | waiver of all liability. 354 | 355 | 356 | Section 6 -- Term and Termination. 357 | 358 | a. This Public License applies for the term of the Copyright and 359 | Similar Rights licensed here. However, if You fail to comply with 360 | this Public License, then Your rights under this Public License 361 | terminate automatically. 362 | 363 | b. Where Your right to use the Licensed Material has terminated under 364 | Section 6(a), it reinstates: 365 | 366 | 1. automatically as of the date the violation is cured, provided 367 | it is cured within 30 days of Your discovery of the 368 | violation; or 369 | 370 | 2. upon express reinstatement by the Licensor. 371 | 372 | For the avoidance of doubt, this Section 6(b) does not affect any 373 | right the Licensor may have to seek remedies for Your violations 374 | of this Public License. 375 | 376 | c. For the avoidance of doubt, the Licensor may also offer the 377 | Licensed Material under separate terms or conditions or stop 378 | distributing the Licensed Material at any time; however, doing so 379 | will not terminate this Public License. 380 | 381 | d. Sections 1, 5, 6, 7, and 8 survive termination of this Public 382 | License. 383 | 384 | 385 | Section 7 -- Other Terms and Conditions. 386 | 387 | a. The Licensor shall not be bound by any additional or different 388 | terms or conditions communicated by You unless expressly agreed. 389 | 390 | b. Any arrangements, understandings, or agreements regarding the 391 | Licensed Material not stated herein are separate from and 392 | independent of the terms and conditions of this Public License. 393 | 394 | 395 | Section 8 -- Interpretation. 396 | 397 | a. For the avoidance of doubt, this Public License does not, and 398 | shall not be interpreted to, reduce, limit, restrict, or impose 399 | conditions on any use of the Licensed Material that could lawfully 400 | be made without permission under this Public License. 401 | 402 | b. To the extent possible, if any provision of this Public License is 403 | deemed unenforceable, it shall be automatically reformed to the 404 | minimum extent necessary to make it enforceable. If the provision 405 | cannot be reformed, it shall be severed from this Public License 406 | without affecting the enforceability of the remaining terms and 407 | conditions. 408 | 409 | c. No term or condition of this Public License will be waived and no 410 | failure to comply consented to unless expressly agreed to by the 411 | Licensor. 412 | 413 | d. Nothing in this Public License constitutes or may be interpreted 414 | as a limitation upon, or waiver of, any privileges and immunities 415 | that apply to the Licensor or You, including from the legal 416 | processes of any jurisdiction or authority. 417 | 418 | ======================================================================= 419 | 420 | Creative Commons is not a party to its public 421 | licenses. Notwithstanding, Creative Commons may elect to apply one of 422 | its public licenses to material it publishes and in those instances 423 | will be considered the “Licensor.” The text of the Creative Commons 424 | public licenses is dedicated to the public domain under the CC0 Public 425 | Domain Dedication. Except for the limited purpose of indicating that 426 | material is shared under a Creative Commons public license or as 427 | otherwise permitted by the Creative Commons policies published at 428 | creativecommons.org/policies, Creative Commons does not authorize the 429 | use of the trademark "Creative Commons" or any other trademark or logo 430 | of Creative Commons without its prior written consent including, 431 | without limitation, in connection with any unauthorized modifications 432 | to any of its public licenses or any other arrangements, 433 | understandings, or agreements concerning use of licensed material. For 434 | the avoidance of doubt, this paragraph does not form part of the 435 | public licenses. 436 | 437 | Creative Commons may be contacted at creativecommons.org. 438 | -------------------------------------------------------------------------------- /Pipfile: -------------------------------------------------------------------------------- 1 | [[source]] 2 | url = "https://mirrors.aliyun.com/pypi/simple/" 3 | verify_ssl = true 4 | name = "aliyun" 5 | 6 | [packages] 7 | seaborn = "*" 8 | 9 | [dev-packages] 10 | black = "*" 11 | 12 | [requires] 13 | python_version = "3.10" 14 | -------------------------------------------------------------------------------- /Pipfile.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_meta": { 3 | "hash": { 4 | "sha256": "cbe95a784b71e116334e9da705c8de785aaaa0d075af4183352eba1ffae6d567" 5 | }, 6 | "pipfile-spec": 6, 7 | "requires": { 8 | "python_version": "3.10" 9 | }, 10 | "sources": [ 11 | { 12 | "name": "aliyun", 13 | "url": "https://mirrors.aliyun.com/pypi/simple/", 14 | "verify_ssl": true 15 | } 16 | ] 17 | }, 18 | "default": { 19 | "contourpy": { 20 | "hashes": [ 21 | "sha256:0236875c5a0784215b49d00ebbe80c5b6b5d5244b3655a36dda88105334dea17", 22 | "sha256:03d1b9c6b44a9e30d554654c72be89af94fab7510b4b9f62356c64c81cec8b7d", 23 | "sha256:0537cc1195245bbe24f2913d1f9211b8f04eb203de9044630abd3664c6cc339c", 24 | "sha256:06ca79e1efbbe2df795822df2fa173d1a2b38b6e0f047a0ec7903fbca1d1847e", 25 | "sha256:08e8d09d96219ace6cb596506fb9b64ea5f270b2fb9121158b976d88871fcfd1", 26 | "sha256:0b1e66346acfb17694d46175a0cea7d9036f12ed0c31dfe86f0f405eedde2bdd", 27 | "sha256:0b97454ed5b1368b66ed414c754cba15b9750ce69938fc6153679787402e4cdf", 28 | "sha256:0e4854cc02006ad6684ce092bdadab6f0912d131f91c2450ce6dbdea78ee3c0b", 29 | "sha256:12a7dc8439544ed05c6553bf026d5e8fa7fad48d63958a95d61698df0e00092b", 30 | "sha256:1b1ee48a130da4dd0eb8055bbab34abf3f6262957832fd575e0cab4979a15a41", 31 | "sha256:1c0e1308307a75e07d1f1b5f0f56b5af84538a5e9027109a7bcf6cb47c434e72", 32 | "sha256:1dedf4c64185a216c35eb488e6f433297c660321275734401760dafaeb0ad5c2", 33 | "sha256:208bc904889c910d95aafcf7be9e677726df9ef71e216780170dbb7e37d118fa", 34 | "sha256:211dfe2bd43bf5791d23afbe23a7952e8ac8b67591d24be3638cabb648b3a6eb", 35 | "sha256:341330ed19074f956cb20877ad8d2ae50e458884bfa6a6df3ae28487cc76c768", 36 | "sha256:344cb3badf6fc7316ad51835f56ac387bdf86c8e1b670904f18f437d70da4183", 37 | "sha256:358f6364e4873f4d73360b35da30066f40387dd3c427a3e5432c6b28dd24a8fa", 38 | "sha256:371f6570a81dfdddbb837ba432293a63b4babb942a9eb7aaa699997adfb53278", 39 | "sha256:375d81366afd547b8558c4720337218345148bc2fcffa3a9870cab82b29667f2", 40 | "sha256:3a1917d3941dd58732c449c810fa7ce46cc305ce9325a11261d740118b85e6f3", 41 | "sha256:4081918147fc4c29fad328d5066cfc751da100a1098398742f9f364be63803fc", 42 | "sha256:444fb776f58f4906d8d354eb6f6ce59d0a60f7b6a720da6c1ccb839db7c80eb9", 43 | "sha256:46deb310a276cc5c1fd27958e358cce68b1e8a515fa5a574c670a504c3a3fe30", 44 | "sha256:494efed2c761f0f37262815f9e3c4bb9917c5c69806abdee1d1cb6611a7174a0", 45 | "sha256:50627bf76abb6ba291ad08db583161939c2c5fab38c38181b7833423ab9c7de3", 46 | "sha256:5641927cc5ae66155d0c80195dc35726eae060e7defc18b7ab27600f39dd1fe7", 47 | "sha256:5b117d29433fc8393b18a696d794961464e37afb34a6eeb8b2c37b5f4128a83e", 48 | "sha256:613c665529899b5d9fade7e5d1760111a0b011231277a0d36c49f0d3d6914bd6", 49 | "sha256:6e459ebb8bb5ee4c22c19cc000174f8059981971a33ce11e17dddf6aca97a142", 50 | "sha256:6f56515e7c6fae4529b731f6c117752247bef9cdad2b12fc5ddf8ca6a50965a5", 51 | "sha256:730c27978a0003b47b359935478b7d63fd8386dbb2dcd36c1e8de88cbfc1e9de", 52 | "sha256:75a2e638042118118ab39d337da4c7908c1af74a8464cad59f19fbc5bbafec9b", 53 | "sha256:78ced51807ccb2f45d4ea73aca339756d75d021069604c2fccd05390dc3c28eb", 54 | "sha256:7ee394502026d68652c2824348a40bf50f31351a668977b51437131a90d777ea", 55 | "sha256:8468b40528fa1e15181cccec4198623b55dcd58306f8815a793803f51f6c474a", 56 | "sha256:84c593aeff7a0171f639da92cb86d24954bbb61f8a1b530f74eb750a14685832", 57 | "sha256:913bac9d064cff033cf3719e855d4f1db9f1c179e0ecf3ba9fdef21c21c6a16a", 58 | "sha256:9447c45df407d3ecb717d837af3b70cfef432138530712263730783b3d016512", 59 | "sha256:9b0e7fe7f949fb719b206548e5cde2518ffb29936afa4303d8a1c4db43dcb675", 60 | "sha256:9bc407a6af672da20da74823443707e38ece8b93a04009dca25856c2d9adadb1", 61 | "sha256:9e8e686a6db92a46111a1ee0ee6f7fbfae4048f0019de207149f43ac1812cf95", 62 | "sha256:9fc4e7973ed0e1fe689435842a6e6b330eb7ccc696080dda9a97b1a1b78e41db", 63 | "sha256:a457ee72d9032e86730f62c5eeddf402e732fdf5ca8b13b41772aa8ae13a4563", 64 | "sha256:a628bba09ba72e472bf7b31018b6281fd4cc903f0888049a3724afba13b6e0b8", 65 | "sha256:a79d239fc22c3b8d9d3de492aa0c245533f4f4c7608e5749af866949c0f1b1b9", 66 | "sha256:aa4674cf3fa2bd9c322982644967f01eed0c91bb890f624e0e0daf7a5c3383e9", 67 | "sha256:acd2bd02f1a7adff3a1f33e431eb96ab6d7987b039d2946a9b39fe6fb16a1036", 68 | "sha256:b3b1bd7577c530eaf9d2bc52d1a93fef50ac516a8b1062c3d1b9bcec9ebe329b", 69 | "sha256:b48d94386f1994db7c70c76b5808c12e23ed7a4ee13693c2fc5ab109d60243c0", 70 | "sha256:b64f747e92af7da3b85631a55d68c45a2d728b4036b03cdaba4bd94bcc85bd6f", 71 | "sha256:b98c820608e2dca6442e786817f646d11057c09a23b68d2b3737e6dcb6e4a49b", 72 | "sha256:c1baa49ab9fedbf19d40d93163b7d3e735d9cd8d5efe4cce9907902a6dad391f", 73 | "sha256:c38c6536c2d71ca2f7e418acaf5bca30a3af7f2a2fa106083c7d738337848dbe", 74 | "sha256:c78bfbc1a7bff053baf7e508449d2765964d67735c909b583204e3240a2aca45", 75 | "sha256:cd2bc0c8f2e8de7dd89a7f1c10b8844e291bca17d359373203ef2e6100819edd", 76 | "sha256:d2eff2af97ea0b61381828b1ad6cd249bbd41d280e53aea5cccd7b2b31b8225c", 77 | "sha256:d8834c14b8c3dd849005e06703469db9bf96ba2d66a3f88ecc539c9a8982e0ee", 78 | "sha256:d912f0154a20a80ea449daada904a7eb6941c83281a9fab95de50529bfc3a1da", 79 | "sha256:da1ef35fd79be2926ba80fbb36327463e3656c02526e9b5b4c2b366588b74d9a", 80 | "sha256:dbe6fe7a1166b1ddd7b6d887ea6fa8389d3f28b5ed3f73a8f40ece1fc5a3d340", 81 | "sha256:dcd556c8fc37a342dd636d7eef150b1399f823a4462f8c968e11e1ebeabee769", 82 | "sha256:e13b31d1b4b68db60b3b29f8e337908f328c7f05b9add4b1b5c74e0691180109", 83 | "sha256:e1739496c2f0108013629aa095cc32a8c6363444361960c07493818d0dea2da4", 84 | "sha256:e43255a83835a129ef98f75d13d643844d8c646b258bebd11e4a0975203e018f", 85 | "sha256:e626cefff8491bce356221c22af5a3ea528b0b41fbabc719c00ae233819ea0bf", 86 | "sha256:eadad75bf91897f922e0fb3dca1b322a58b1726a953f98c2e5f0606bd8408621", 87 | "sha256:f33da6b5d19ad1bb5e7ad38bb8ba5c426d2178928bc2b2c44e8823ea0ecb6ff3", 88 | "sha256:f4052a8a4926d4468416fc7d4b2a7b2a3e35f25b39f4061a7e2a3a2748c4fc48", 89 | "sha256:f6ca38dd8d988eca8f07305125dec6f54ac1c518f1aaddcc14d08c01aebb6efc" 90 | ], 91 | "markers": "python_version >= '3.7'", 92 | "version": "==1.0.6" 93 | }, 94 | "cycler": { 95 | "hashes": [ 96 | "sha256:3a27e95f763a428a739d2add979fa7494c912a32c17c4c38c4d5f082cad165a3", 97 | "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f" 98 | ], 99 | "markers": "python_version >= '3.6'", 100 | "version": "==0.11.0" 101 | }, 102 | "fonttools": { 103 | "hashes": [ 104 | "sha256:2bb244009f9bf3fa100fc3ead6aeb99febe5985fa20afbfbaa2f8946c2fbdaf1", 105 | "sha256:820466f43c8be8c3009aef8b87e785014133508f0de64ec469e4efb643ae54fb" 106 | ], 107 | "markers": "python_version >= '3.7'", 108 | "version": "==4.38.0" 109 | }, 110 | "kiwisolver": { 111 | "hashes": [ 112 | "sha256:02f79693ec433cb4b5f51694e8477ae83b3205768a6fb48ffba60549080e295b", 113 | "sha256:03baab2d6b4a54ddbb43bba1a3a2d1627e82d205c5cf8f4c924dc49284b87166", 114 | "sha256:1041feb4cda8708ce73bb4dcb9ce1ccf49d553bf87c3954bdfa46f0c3f77252c", 115 | "sha256:10ee06759482c78bdb864f4109886dff7b8a56529bc1609d4f1112b93fe6423c", 116 | "sha256:1d1573129aa0fd901076e2bfb4275a35f5b7aa60fbfb984499d661ec950320b0", 117 | "sha256:283dffbf061a4ec60391d51e6155e372a1f7a4f5b15d59c8505339454f8989e4", 118 | "sha256:28bc5b299f48150b5f822ce68624e445040595a4ac3d59251703779836eceff9", 119 | "sha256:2a66fdfb34e05b705620dd567f5a03f239a088d5a3f321e7b6ac3239d22aa286", 120 | "sha256:2e307eb9bd99801f82789b44bb45e9f541961831c7311521b13a6c85afc09767", 121 | "sha256:2e407cb4bd5a13984a6c2c0fe1845e4e41e96f183e5e5cd4d77a857d9693494c", 122 | "sha256:2f5e60fabb7343a836360c4f0919b8cd0d6dbf08ad2ca6b9cf90bf0c76a3c4f6", 123 | "sha256:36dafec3d6d6088d34e2de6b85f9d8e2324eb734162fba59d2ba9ed7a2043d5b", 124 | "sha256:3fe20f63c9ecee44560d0e7f116b3a747a5d7203376abeea292ab3152334d004", 125 | "sha256:41dae968a94b1ef1897cb322b39360a0812661dba7c682aa45098eb8e193dbdf", 126 | "sha256:4bd472dbe5e136f96a4b18f295d159d7f26fd399136f5b17b08c4e5f498cd494", 127 | "sha256:4ea39b0ccc4f5d803e3337dd46bcce60b702be4d86fd0b3d7531ef10fd99a1ac", 128 | "sha256:5853eb494c71e267912275e5586fe281444eb5e722de4e131cddf9d442615626", 129 | "sha256:5bce61af018b0cb2055e0e72e7d65290d822d3feee430b7b8203d8a855e78766", 130 | "sha256:6295ecd49304dcf3bfbfa45d9a081c96509e95f4b9d0eb7ee4ec0530c4a96514", 131 | "sha256:62ac9cc684da4cf1778d07a89bf5f81b35834cb96ca523d3a7fb32509380cbf6", 132 | "sha256:70e7c2e7b750585569564e2e5ca9845acfaa5da56ac46df68414f29fea97be9f", 133 | "sha256:7577c1987baa3adc4b3c62c33bd1118c3ef5c8ddef36f0f2c950ae0b199e100d", 134 | "sha256:75facbe9606748f43428fc91a43edb46c7ff68889b91fa31f53b58894503a191", 135 | "sha256:787518a6789009c159453da4d6b683f468ef7a65bbde796bcea803ccf191058d", 136 | "sha256:78d6601aed50c74e0ef02f4204da1816147a6d3fbdc8b3872d263338a9052c51", 137 | "sha256:7c43e1e1206cd421cd92e6b3280d4385d41d7166b3ed577ac20444b6995a445f", 138 | "sha256:81e38381b782cc7e1e46c4e14cd997ee6040768101aefc8fa3c24a4cc58e98f8", 139 | "sha256:841293b17ad704d70c578f1f0013c890e219952169ce8a24ebc063eecf775454", 140 | "sha256:872b8ca05c40d309ed13eb2e582cab0c5a05e81e987ab9c521bf05ad1d5cf5cb", 141 | "sha256:877272cf6b4b7e94c9614f9b10140e198d2186363728ed0f701c6eee1baec1da", 142 | "sha256:8c808594c88a025d4e322d5bb549282c93c8e1ba71b790f539567932722d7bd8", 143 | "sha256:8ed58b8acf29798b036d347791141767ccf65eee7f26bde03a71c944449e53de", 144 | "sha256:91672bacaa030f92fc2f43b620d7b337fd9a5af28b0d6ed3f77afc43c4a64b5a", 145 | "sha256:968f44fdbf6dd757d12920d63b566eeb4d5b395fd2d00d29d7ef00a00582aac9", 146 | "sha256:9f85003f5dfa867e86d53fac6f7e6f30c045673fa27b603c397753bebadc3008", 147 | "sha256:a553dadda40fef6bfa1456dc4be49b113aa92c2a9a9e8711e955618cd69622e3", 148 | "sha256:a68b62a02953b9841730db7797422f983935aeefceb1679f0fc85cbfbd311c32", 149 | "sha256:abbe9fa13da955feb8202e215c4018f4bb57469b1b78c7a4c5c7b93001699938", 150 | "sha256:ad881edc7ccb9d65b0224f4e4d05a1e85cf62d73aab798943df6d48ab0cd79a1", 151 | "sha256:b1792d939ec70abe76f5054d3f36ed5656021dcad1322d1cc996d4e54165cef9", 152 | "sha256:b428ef021242344340460fa4c9185d0b1f66fbdbfecc6c63eff4b7c29fad429d", 153 | "sha256:b533558eae785e33e8c148a8d9921692a9fe5aa516efbdff8606e7d87b9d5824", 154 | "sha256:ba59c92039ec0a66103b1d5fe588fa546373587a7d68f5c96f743c3396afc04b", 155 | "sha256:bc8d3bd6c72b2dd9decf16ce70e20abcb3274ba01b4e1c96031e0c4067d1e7cd", 156 | "sha256:bc9db8a3efb3e403e4ecc6cd9489ea2bac94244f80c78e27c31dcc00d2790ac2", 157 | "sha256:bf7d9fce9bcc4752ca4a1b80aabd38f6d19009ea5cbda0e0856983cf6d0023f5", 158 | "sha256:c2dbb44c3f7e6c4d3487b31037b1bdbf424d97687c1747ce4ff2895795c9bf69", 159 | "sha256:c79ebe8f3676a4c6630fd3f777f3cfecf9289666c84e775a67d1d358578dc2e3", 160 | "sha256:c97528e64cb9ebeff9701e7938653a9951922f2a38bd847787d4a8e498cc83ae", 161 | "sha256:d0611a0a2a518464c05ddd5a3a1a0e856ccc10e67079bb17f265ad19ab3c7597", 162 | "sha256:d06adcfa62a4431d404c31216f0f8ac97397d799cd53800e9d3efc2fbb3cf14e", 163 | "sha256:d41997519fcba4a1e46eb4a2fe31bc12f0ff957b2b81bac28db24744f333e955", 164 | "sha256:d5b61785a9ce44e5a4b880272baa7cf6c8f48a5180c3e81c59553ba0cb0821ca", 165 | "sha256:da152d8cdcab0e56e4f45eb08b9aea6455845ec83172092f09b0e077ece2cf7a", 166 | "sha256:da7e547706e69e45d95e116e6939488d62174e033b763ab1496b4c29b76fabea", 167 | "sha256:db5283d90da4174865d520e7366801a93777201e91e79bacbac6e6927cbceede", 168 | "sha256:db608a6757adabb32f1cfe6066e39b3706d8c3aa69bbc353a5b61edad36a5cb4", 169 | "sha256:e0ea21f66820452a3f5d1655f8704a60d66ba1191359b96541eaf457710a5fc6", 170 | "sha256:e7da3fec7408813a7cebc9e4ec55afed2d0fd65c4754bc376bf03498d4e92686", 171 | "sha256:e92a513161077b53447160b9bd8f522edfbed4bd9759e4c18ab05d7ef7e49408", 172 | "sha256:ecb1fa0db7bf4cff9dac752abb19505a233c7f16684c5826d1f11ebd9472b871", 173 | "sha256:efda5fc8cc1c61e4f639b8067d118e742b812c930f708e6667a5ce0d13499e29", 174 | "sha256:f0a1dbdb5ecbef0d34eb77e56fcb3e95bbd7e50835d9782a45df81cc46949750", 175 | "sha256:f0a71d85ecdd570ded8ac3d1c0f480842f49a40beb423bb8014539a9f32a5897", 176 | "sha256:f4f270de01dd3e129a72efad823da90cc4d6aafb64c410c9033aba70db9f1ff0", 177 | "sha256:f6cb459eea32a4e2cf18ba5fcece2dbdf496384413bc1bae15583f19e567f3b2", 178 | "sha256:f8ad8285b01b0d4695102546b342b493b3ccc6781fc28c8c6a1bb63e95d22f09", 179 | "sha256:f9f39e2f049db33a908319cf46624a569b36983c7c78318e9726a4cb8923b26c" 180 | ], 181 | "markers": "python_version >= '3.7'", 182 | "version": "==1.4.4" 183 | }, 184 | "matplotlib": { 185 | "hashes": [ 186 | "sha256:0844523dfaaff566e39dbfa74e6f6dc42e92f7a365ce80929c5030b84caa563a", 187 | "sha256:0eda9d1b43f265da91fb9ae10d6922b5a986e2234470a524e6b18f14095b20d2", 188 | "sha256:168093410b99f647ba61361b208f7b0d64dde1172b5b1796d765cd243cadb501", 189 | "sha256:1836f366272b1557a613f8265db220eb8dd883202bbbabe01bad5a4eadfd0c95", 190 | "sha256:19d61ee6414c44a04addbe33005ab1f87539d9f395e25afcbe9a3c50ce77c65c", 191 | "sha256:252957e208c23db72ca9918cb33e160c7833faebf295aaedb43f5b083832a267", 192 | "sha256:32d29c8c26362169c80c5718ce367e8c64f4dd068a424e7110df1dd2ed7bd428", 193 | "sha256:380d48c15ec41102a2b70858ab1dedfa33eb77b2c0982cb65a200ae67a48e9cb", 194 | "sha256:3964934731fd7a289a91d315919cf757f293969a4244941ab10513d2351b4e83", 195 | "sha256:3cef89888a466228fc4e4b2954e740ce8e9afde7c4315fdd18caa1b8de58ca17", 196 | "sha256:4426c74761790bff46e3d906c14c7aab727543293eed5a924300a952e1a3a3c1", 197 | "sha256:5024b8ed83d7f8809982d095d8ab0b179bebc07616a9713f86d30cf4944acb73", 198 | "sha256:52c2bdd7cd0bf9d5ccdf9c1816568fd4ccd51a4d82419cc5480f548981b47dd0", 199 | "sha256:54fa9fe27f5466b86126ff38123261188bed568c1019e4716af01f97a12fe812", 200 | "sha256:5ba73aa3aca35d2981e0b31230d58abb7b5d7ca104e543ae49709208d8ce706a", 201 | "sha256:5e16dcaecffd55b955aa5e2b8a804379789c15987e8ebd2f32f01398a81e975b", 202 | "sha256:5ecfc6559132116dedfc482d0ad9df8a89dc5909eebffd22f3deb684132d002f", 203 | "sha256:74153008bd24366cf099d1f1e83808d179d618c4e32edb0d489d526523a94d9f", 204 | "sha256:78ec3c3412cf277e6252764ee4acbdbec6920cc87ad65862272aaa0e24381eee", 205 | "sha256:795ad83940732b45d39b82571f87af0081c120feff2b12e748d96bb191169e33", 206 | "sha256:7f716b6af94dc1b6b97c46401774472f0867e44595990fe80a8ba390f7a0a028", 207 | "sha256:83dc89c5fd728fdb03b76f122f43b4dcee8c61f1489e232d9ad0f58020523e1c", 208 | "sha256:8a0ae37576ed444fe853709bdceb2be4c7df6f7acae17b8378765bd28e61b3ae", 209 | "sha256:8a8dbe2cb7f33ff54b16bb5c500673502a35f18ac1ed48625e997d40c922f9cc", 210 | "sha256:8a9d899953c722b9afd7e88dbefd8fb276c686c3116a43c577cfabf636180558", 211 | "sha256:8d0068e40837c1d0df6e3abf1cdc9a34a6d2611d90e29610fa1d2455aeb4e2e5", 212 | "sha256:9347cc6822f38db2b1d1ce992f375289670e595a2d1c15961aacbe0977407dfc", 213 | "sha256:9f335e5625feb90e323d7e3868ec337f7b9ad88b5d633f876e3b778813021dab", 214 | "sha256:b03fd10a1709d0101c054883b550f7c4c5e974f751e2680318759af005964990", 215 | "sha256:b0ca2c60d3966dfd6608f5f8c49b8a0fcf76de6654f2eda55fc6ef038d5a6f27", 216 | "sha256:b2604c6450f9dd2c42e223b1f5dca9643a23cfecc9fde4a94bb38e0d2693b136", 217 | "sha256:ca0e7a658fbafcddcaefaa07ba8dae9384be2343468a8e011061791588d839fa", 218 | "sha256:d0e9ac04065a814d4cf2c6791a2ad563f739ae3ae830d716d54245c2b96fead6", 219 | "sha256:d50e8c1e571ee39b5dfbc295c11ad65988879f68009dd281a6e1edbc2ff6c18c", 220 | "sha256:d840adcad7354be6f2ec28d0706528b0026e4c3934cc6566b84eac18633eab1b", 221 | "sha256:e0bbee6c2a5bf2a0017a9b5e397babb88f230e6f07c3cdff4a4c4bc75ed7c617", 222 | "sha256:e5afe0a7ea0e3a7a257907060bee6724a6002b7eec55d0db16fd32409795f3e1", 223 | "sha256:e68be81cd8c22b029924b6d0ee814c337c0e706b8d88495a617319e5dd5441c3", 224 | "sha256:ec9be0f4826cdb3a3a517509dcc5f87f370251b76362051ab59e42b6b765f8c4", 225 | "sha256:f04f97797df35e442ed09f529ad1235d1f1c0f30878e2fe09a2676b71a8801e0", 226 | "sha256:f41e57ad63d336fe50d3a67bb8eaa26c09f6dda6a59f76777a99b8ccd8e26aec" 227 | ], 228 | "markers": "python_version >= '3.8'", 229 | "version": "==3.6.2" 230 | }, 231 | "numpy": { 232 | "hashes": [ 233 | "sha256:01dd17cbb340bf0fc23981e52e1d18a9d4050792e8fb8363cecbf066a84b827d", 234 | "sha256:06005a2ef6014e9956c09ba07654f9837d9e26696a0470e42beedadb78c11b07", 235 | "sha256:09b7847f7e83ca37c6e627682f145856de331049013853f344f37b0c9690e3df", 236 | "sha256:0aaee12d8883552fadfc41e96b4c82ee7d794949e2a7c3b3a7201e968c7ecab9", 237 | "sha256:0cbe9848fad08baf71de1a39e12d1b6310f1d5b2d0ea4de051058e6e1076852d", 238 | "sha256:1b1766d6f397c18153d40015ddfc79ddb715cabadc04d2d228d4e5a8bc4ded1a", 239 | "sha256:33161613d2269025873025b33e879825ec7b1d831317e68f4f2f0f84ed14c719", 240 | "sha256:5039f55555e1eab31124a5768898c9e22c25a65c1e0037f4d7c495a45778c9f2", 241 | "sha256:522e26bbf6377e4d76403826ed689c295b0b238f46c28a7251ab94716da0b280", 242 | "sha256:56e454c7833e94ec9769fa0f86e6ff8e42ee38ce0ce1fa4cbb747ea7e06d56aa", 243 | "sha256:58f545efd1108e647604a1b5aa809591ccd2540f468a880bedb97247e72db387", 244 | "sha256:5e05b1c973a9f858c74367553e236f287e749465f773328c8ef31abe18f691e1", 245 | "sha256:7903ba8ab592b82014713c491f6c5d3a1cde5b4a3bf116404e08f5b52f6daf43", 246 | "sha256:8969bfd28e85c81f3f94eb4a66bc2cf1dbdc5c18efc320af34bffc54d6b1e38f", 247 | "sha256:92c8c1e89a1f5028a4c6d9e3ccbe311b6ba53694811269b992c0b224269e2398", 248 | "sha256:9c88793f78fca17da0145455f0d7826bcb9f37da4764af27ac945488116efe63", 249 | "sha256:a7ac231a08bb37f852849bbb387a20a57574a97cfc7b6cabb488a4fc8be176de", 250 | "sha256:abdde9f795cf292fb9651ed48185503a2ff29be87770c3b8e2a14b0cd7aa16f8", 251 | "sha256:af1da88f6bc3d2338ebbf0e22fe487821ea4d8e89053e25fa59d1d79786e7481", 252 | "sha256:b2a9ab7c279c91974f756c84c365a669a887efa287365a8e2c418f8b3ba73fb0", 253 | "sha256:bf837dc63ba5c06dc8797c398db1e223a466c7ece27a1f7b5232ba3466aafe3d", 254 | "sha256:ca51fcfcc5f9354c45f400059e88bc09215fb71a48d3768fb80e357f3b457e1e", 255 | "sha256:ce571367b6dfe60af04e04a1834ca2dc5f46004ac1cc756fb95319f64c095a96", 256 | "sha256:d208a0f8729f3fb790ed18a003f3a57895b989b40ea4dce4717e9cf4af62c6bb", 257 | "sha256:dbee87b469018961d1ad79b1a5d50c0ae850000b639bcb1b694e9981083243b6", 258 | "sha256:e9f4c4e51567b616be64e05d517c79a8a22f3606499941d97bb76f2ca59f982d", 259 | "sha256:f063b69b090c9d918f9df0a12116029e274daf0181df392839661c4c7ec9018a", 260 | "sha256:f9a909a8bae284d46bbfdefbdd4a262ba19d3bc9921b1e76126b1d21c3c34135" 261 | ], 262 | "markers": "python_version >= '3.8'", 263 | "version": "==1.23.5" 264 | }, 265 | "packaging": { 266 | "hashes": [ 267 | "sha256:2198ec20bd4c017b8f9717e00f0c8714076fc2fd93816750ab48e2c41de2cfd3", 268 | "sha256:957e2148ba0e1a3b282772e791ef1d8083648bc131c8ab0c1feba110ce1146c3" 269 | ], 270 | "markers": "python_version >= '3.7'", 271 | "version": "==22.0" 272 | }, 273 | "pandas": { 274 | "hashes": [ 275 | "sha256:0183cb04a057cc38fde5244909fca9826d5d57c4a5b7390c0cc3fa7acd9fa883", 276 | "sha256:1fc87eac0541a7d24648a001d553406f4256e744d92df1df8ebe41829a915028", 277 | "sha256:220b98d15cee0b2cd839a6358bd1f273d0356bf964c1a1aeb32d47db0215488b", 278 | "sha256:2552bffc808641c6eb471e55aa6899fa002ac94e4eebfa9ec058649122db5824", 279 | "sha256:315e19a3e5c2ab47a67467fc0362cb36c7c60a93b6457f675d7d9615edad2ebe", 280 | "sha256:344021ed3e639e017b452aa8f5f6bf38a8806f5852e217a7594417fb9bbfa00e", 281 | "sha256:375262829c8c700c3e7cbb336810b94367b9c4889818bbd910d0ecb4e45dc261", 282 | "sha256:457d8c3d42314ff47cc2d6c54f8fc0d23954b47977b2caed09cd9635cb75388b", 283 | "sha256:4aed257c7484d01c9a194d9a94758b37d3d751849c05a0050c087a358c41ad1f", 284 | "sha256:530948945e7b6c95e6fa7aa4be2be25764af53fba93fe76d912e35d1c9ee46f5", 285 | "sha256:5ae7e989f12628f41e804847a8cc2943d362440132919a69429d4dea1f164da0", 286 | "sha256:71f510b0efe1629bf2f7c0eadb1ff0b9cf611e87b73cd017e6b7d6adb40e2b3a", 287 | "sha256:73f219fdc1777cf3c45fde7f0708732ec6950dfc598afc50588d0d285fddaefc", 288 | "sha256:8092a368d3eb7116e270525329a3e5c15ae796ccdf7ccb17839a73b4f5084a39", 289 | "sha256:82ae615826da838a8e5d4d630eb70c993ab8636f0eff13cb28aafc4291b632b5", 290 | "sha256:9608000a5a45f663be6af5c70c3cbe634fa19243e720eb380c0d378666bc7702", 291 | "sha256:a40dd1e9f22e01e66ed534d6a965eb99546b41d4d52dbdb66565608fde48203f", 292 | "sha256:b4f5a82afa4f1ff482ab8ded2ae8a453a2cdfde2001567b3ca24a4c5c5ca0db3", 293 | "sha256:c009a92e81ce836212ce7aa98b219db7961a8b95999b97af566b8dc8c33e9519", 294 | "sha256:c218796d59d5abd8780170c937b812c9637e84c32f8271bbf9845970f8c1351f", 295 | "sha256:cc3cd122bea268998b79adebbb8343b735a5511ec14efb70a39e7acbc11ccbdc", 296 | "sha256:d0d8fd58df5d17ddb8c72a5075d87cd80d71b542571b5f78178fb067fa4e9c72", 297 | "sha256:e18bc3764cbb5e118be139b3b611bc3fbc5d3be42a7e827d1096f46087b395eb", 298 | "sha256:e2b83abd292194f350bb04e188f9379d36b8dfac24dd445d5c87575f3beaf789", 299 | "sha256:e7469271497960b6a781eaa930cba8af400dd59b62ec9ca2f4d31a19f2f91090", 300 | "sha256:e9dbacd22555c2d47f262ef96bb4e30880e5956169741400af8b306bbb24a273", 301 | "sha256:f6257b314fc14958f8122779e5a1557517b0f8e500cfb2bd53fa1f75a8ad0af2" 302 | ], 303 | "markers": "python_version >= '3.8'", 304 | "version": "==1.5.2" 305 | }, 306 | "pillow": { 307 | "hashes": [ 308 | "sha256:03150abd92771742d4a8cd6f2fa6246d847dcd2e332a18d0c15cc75bf6703040", 309 | "sha256:073adb2ae23431d3b9bcbcff3fe698b62ed47211d0716b067385538a1b0f28b8", 310 | "sha256:0b07fffc13f474264c336298d1b4ce01d9c5a011415b79d4ee5527bb69ae6f65", 311 | "sha256:0b7257127d646ff8676ec8a15520013a698d1fdc48bc2a79ba4e53df792526f2", 312 | "sha256:12ce4932caf2ddf3e41d17fc9c02d67126935a44b86df6a206cf0d7161548627", 313 | "sha256:15c42fb9dea42465dfd902fb0ecf584b8848ceb28b41ee2b58f866411be33f07", 314 | "sha256:18498994b29e1cf86d505edcb7edbe814d133d2232d256db8c7a8ceb34d18cef", 315 | "sha256:1c7c8ae3864846fc95f4611c78129301e203aaa2af813b703c55d10cc1628535", 316 | "sha256:22b012ea2d065fd163ca096f4e37e47cd8b59cf4b0fd47bfca6abb93df70b34c", 317 | "sha256:276a5ca930c913f714e372b2591a22c4bd3b81a418c0f6635ba832daec1cbcfc", 318 | "sha256:2e0918e03aa0c72ea56edbb00d4d664294815aa11291a11504a377ea018330d3", 319 | "sha256:3033fbe1feb1b59394615a1cafaee85e49d01b51d54de0cbf6aa8e64182518a1", 320 | "sha256:3168434d303babf495d4ba58fc22d6604f6e2afb97adc6a423e917dab828939c", 321 | "sha256:32a44128c4bdca7f31de5be641187367fe2a450ad83b833ef78910397db491aa", 322 | "sha256:3dd6caf940756101205dffc5367babf288a30043d35f80936f9bfb37f8355b32", 323 | "sha256:40e1ce476a7804b0fb74bcfa80b0a2206ea6a882938eaba917f7a0f004b42502", 324 | "sha256:41e0051336807468be450d52b8edd12ac60bebaa97fe10c8b660f116e50b30e4", 325 | "sha256:4390e9ce199fc1951fcfa65795f239a8a4944117b5935a9317fb320e7767b40f", 326 | "sha256:502526a2cbfa431d9fc2a079bdd9061a2397b842bb6bc4239bb176da00993812", 327 | "sha256:51e0e543a33ed92db9f5ef69a0356e0b1a7a6b6a71b80df99f1d181ae5875636", 328 | "sha256:57751894f6618fd4308ed8e0c36c333e2f5469744c34729a27532b3db106ee20", 329 | "sha256:5d77adcd56a42d00cc1be30843d3426aa4e660cab4a61021dc84467123f7a00c", 330 | "sha256:655a83b0058ba47c7c52e4e2df5ecf484c1b0b0349805896dd350cbc416bdd91", 331 | "sha256:68943d632f1f9e3dce98908e873b3a090f6cba1cbb1b892a9e8d97c938871fbe", 332 | "sha256:6c738585d7a9961d8c2821a1eb3dcb978d14e238be3d70f0a706f7fa9316946b", 333 | "sha256:73bd195e43f3fadecfc50c682f5055ec32ee2c933243cafbfdec69ab1aa87cad", 334 | "sha256:772a91fc0e03eaf922c63badeca75e91baa80fe2f5f87bdaed4280662aad25c9", 335 | "sha256:77ec3e7be99629898c9a6d24a09de089fa5356ee408cdffffe62d67bb75fdd72", 336 | "sha256:7db8b751ad307d7cf238f02101e8e36a128a6cb199326e867d1398067381bff4", 337 | "sha256:801ec82e4188e935c7f5e22e006d01611d6b41661bba9fe45b60e7ac1a8f84de", 338 | "sha256:82409ffe29d70fd733ff3c1025a602abb3e67405d41b9403b00b01debc4c9a29", 339 | "sha256:828989c45c245518065a110434246c44a56a8b2b2f6347d1409c787e6e4651ee", 340 | "sha256:829f97c8e258593b9daa80638aee3789b7df9da5cf1336035016d76f03b8860c", 341 | "sha256:871b72c3643e516db4ecf20efe735deb27fe30ca17800e661d769faab45a18d7", 342 | "sha256:89dca0ce00a2b49024df6325925555d406b14aa3efc2f752dbb5940c52c56b11", 343 | "sha256:90fb88843d3902fe7c9586d439d1e8c05258f41da473952aa8b328d8b907498c", 344 | "sha256:97aabc5c50312afa5e0a2b07c17d4ac5e865b250986f8afe2b02d772567a380c", 345 | "sha256:9aaa107275d8527e9d6e7670b64aabaaa36e5b6bd71a1015ddd21da0d4e06448", 346 | "sha256:9f47eabcd2ded7698106b05c2c338672d16a6f2a485e74481f524e2a23c2794b", 347 | "sha256:a0a06a052c5f37b4ed81c613a455a81f9a3a69429b4fd7bb913c3fa98abefc20", 348 | "sha256:ab388aaa3f6ce52ac1cb8e122c4bd46657c15905904b3120a6248b5b8b0bc228", 349 | "sha256:ad58d27a5b0262c0c19b47d54c5802db9b34d38bbf886665b626aff83c74bacd", 350 | "sha256:ae5331c23ce118c53b172fa64a4c037eb83c9165aba3a7ba9ddd3ec9fa64a699", 351 | "sha256:af0372acb5d3598f36ec0914deed2a63f6bcdb7b606da04dc19a88d31bf0c05b", 352 | "sha256:afa4107d1b306cdf8953edde0534562607fe8811b6c4d9a486298ad31de733b2", 353 | "sha256:b03ae6f1a1878233ac620c98f3459f79fd77c7e3c2b20d460284e1fb370557d4", 354 | "sha256:b0915e734b33a474d76c28e07292f196cdf2a590a0d25bcc06e64e545f2d146c", 355 | "sha256:b4012d06c846dc2b80651b120e2cdd787b013deb39c09f407727ba90015c684f", 356 | "sha256:b472b5ea442148d1c3e2209f20f1e0bb0eb556538690fa70b5e1f79fa0ba8dc2", 357 | "sha256:b59430236b8e58840a0dfb4099a0e8717ffb779c952426a69ae435ca1f57210c", 358 | "sha256:b90f7616ea170e92820775ed47e136208e04c967271c9ef615b6fbd08d9af0e3", 359 | "sha256:b9a65733d103311331875c1dca05cb4606997fd33d6acfed695b1232ba1df193", 360 | "sha256:bac18ab8d2d1e6b4ce25e3424f709aceef668347db8637c2296bcf41acb7cf48", 361 | "sha256:bca31dd6014cb8b0b2db1e46081b0ca7d936f856da3b39744aef499db5d84d02", 362 | "sha256:be55f8457cd1eac957af0c3f5ece7bc3f033f89b114ef30f710882717670b2a8", 363 | "sha256:c7025dce65566eb6e89f56c9509d4f628fddcedb131d9465cacd3d8bac337e7e", 364 | "sha256:c935a22a557a560108d780f9a0fc426dd7459940dc54faa49d83249c8d3e760f", 365 | "sha256:dbb8e7f2abee51cef77673be97760abff1674ed32847ce04b4af90f610144c7b", 366 | "sha256:e6ea6b856a74d560d9326c0f5895ef8050126acfdc7ca08ad703eb0081e82b74", 367 | "sha256:ebf2029c1f464c59b8bdbe5143c79fa2045a581ac53679733d3a91d400ff9efb", 368 | "sha256:f1ff2ee69f10f13a9596480335f406dd1f70c3650349e2be67ca3139280cade0" 369 | ], 370 | "markers": "python_version >= '3.7'", 371 | "version": "==9.3.0" 372 | }, 373 | "pyparsing": { 374 | "hashes": [ 375 | "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb", 376 | "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc" 377 | ], 378 | "markers": "python_full_version >= '3.6.8'", 379 | "version": "==3.0.9" 380 | }, 381 | "python-dateutil": { 382 | "hashes": [ 383 | "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", 384 | "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" 385 | ], 386 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", 387 | "version": "==2.8.2" 388 | }, 389 | "pytz": { 390 | "hashes": [ 391 | "sha256:7ccfae7b4b2c067464a6733c6261673fdb8fd1be905460396b97a073e9fa683a", 392 | "sha256:93007def75ae22f7cd991c84e02d434876818661f8df9ad5df9e950ff4e52cfd" 393 | ], 394 | "version": "==2022.7" 395 | }, 396 | "seaborn": { 397 | "hashes": [ 398 | "sha256:a9eb39cba095fcb1e4c89a7fab1c57137d70a715a7f2eefcd41c9913c4d4ed65", 399 | "sha256:bb1eb1d51d3097368c187c3ef089c0288ec1fe8aa1c69fb324c68aa1d02df4c1" 400 | ], 401 | "index": "aliyun", 402 | "version": "==0.12.1" 403 | }, 404 | "six": { 405 | "hashes": [ 406 | "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", 407 | "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" 408 | ], 409 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", 410 | "version": "==1.16.0" 411 | } 412 | }, 413 | "develop": { 414 | "black": { 415 | "hashes": [ 416 | "sha256:101c69b23df9b44247bd88e1d7e90154336ac4992502d4197bdac35dd7ee3320", 417 | "sha256:159a46a4947f73387b4d83e87ea006dbb2337eab6c879620a3ba52699b1f4351", 418 | "sha256:1f58cbe16dfe8c12b7434e50ff889fa479072096d79f0a7f25e4ab8e94cd8350", 419 | "sha256:229351e5a18ca30f447bf724d007f890f97e13af070bb6ad4c0a441cd7596a2f", 420 | "sha256:436cc9167dd28040ad90d3b404aec22cedf24a6e4d7de221bec2730ec0c97bcf", 421 | "sha256:559c7a1ba9a006226f09e4916060982fd27334ae1998e7a38b3f33a37f7a2148", 422 | "sha256:7412e75863aa5c5411886804678b7d083c7c28421210180d67dfd8cf1221e1f4", 423 | "sha256:77d86c9f3db9b1bf6761244bc0b3572a546f5fe37917a044e02f3166d5aafa7d", 424 | "sha256:82d9fe8fee3401e02e79767016b4907820a7dc28d70d137eb397b92ef3cc5bfc", 425 | "sha256:9eedd20838bd5d75b80c9f5487dbcb06836a43833a37846cf1d8c1cc01cef59d", 426 | "sha256:c116eed0efb9ff870ded8b62fe9f28dd61ef6e9ddd28d83d7d264a38417dcee2", 427 | "sha256:d30b212bffeb1e252b31dd269dfae69dd17e06d92b87ad26e23890f3efea366f" 428 | ], 429 | "index": "aliyun", 430 | "version": "==22.12.0" 431 | }, 432 | "click": { 433 | "hashes": [ 434 | "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e", 435 | "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48" 436 | ], 437 | "markers": "python_version >= '3.7'", 438 | "version": "==8.1.3" 439 | }, 440 | "mypy-extensions": { 441 | "hashes": [ 442 | "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d", 443 | "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8" 444 | ], 445 | "version": "==0.4.3" 446 | }, 447 | "pathspec": { 448 | "hashes": [ 449 | "sha256:3c95343af8b756205e2aba76e843ba9520a24dd84f68c22b9f93251507509dd6", 450 | "sha256:56200de4077d9d0791465aa9095a01d421861e405b5096955051deefd697d6f6" 451 | ], 452 | "markers": "python_version >= '3.7'", 453 | "version": "==0.10.3" 454 | }, 455 | "platformdirs": { 456 | "hashes": [ 457 | "sha256:1a89a12377800c81983db6be069ec068eee989748799b946cce2a6e80dcc54ca", 458 | "sha256:b46ffafa316e6b83b47489d240ce17173f123a9b9c83282141c3daf26ad9ac2e" 459 | ], 460 | "markers": "python_version >= '3.7'", 461 | "version": "==2.6.0" 462 | }, 463 | "tomli": { 464 | "hashes": [ 465 | "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", 466 | "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" 467 | ], 468 | "markers": "python_full_version < '3.11.0a7'", 469 | "version": "==2.0.1" 470 | } 471 | } 472 | } 473 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 数据挖掘与大数据分析 2 | 3 | 电子科技大学 2020 级《数据挖掘与大数据分析》课程代码。 4 | 5 | ## ✨ 项目介绍 6 | 7 | 1. 认识数据与数据预处理 8 | - 归一化 9 | - 缺失值处理 10 | - 特征筛选 11 | - 数据可视化 12 | 2. 关联规则挖掘 13 | - Apriori 14 | 3. 分类 15 | - KNN 16 | - 感知器 17 | - 反向传播 18 | 4. 聚类分析 19 | - K 均值 20 | - DBSCAN 21 | 22 | ## 📄 许可证 23 | 24 | [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://creativecommons.org/licenses/by-nc-sa/4.0/) 25 | -------------------------------------------------------------------------------- /data/iris-test.csv: -------------------------------------------------------------------------------- 1 | 5.1,3.5,1.4,0.2,setosa 2 | 4.9,3,1.4,0.2,setosa 3 | 4.7,3.2,1.3,0.2,setosa 4 | 4.6,3.1,1.5,0.2,setosa 5 | 5,3.6,1.4,0.2,setosa 6 | 5.4,3.9,1.7,0.4,setosa 7 | 4.6,3.4,1.4,0.3,setosa 8 | 5,3.4,1.5,0.2,setosa 9 | 4.4,2.9,1.4,0.2,setosa 10 | 4.9,3.1,1.5,0.1,setosa 11 | 5.4,3.7,1.5,0.2,setosa 12 | 4.8,3.4,1.6,0.2,setosa 13 | 4.8,3,1.4,0.1,setosa 14 | 6.3,3.3,6,2.5,virginica 15 | 5.8,2.7,5.1,1.9,virginica 16 | 7.1,3,5.9,2.1,virginica 17 | 6.3,2.9,5.6,1.8,virginica 18 | 6.5,3,5.8,2.2,virginica 19 | 7.6,3,6.6,2.1,virginica 20 | 4.9,2.5,4.5,1.7,virginica 21 | 7.3,2.9,6.3,1.8,virginica 22 | 6.7,2.5,5.8,1.8,virginica 23 | 7.2,3.6,6.1,2.5,virginica 24 | 7,3.2,4.7,1.4,versicolor 25 | 6.4,3.2,4.5,1.5,versicolor 26 | 6.9,3.1,4.9,1.5,versicolor 27 | 5.5,2.3,4,1.3,versicolor 28 | 6.5,2.8,4.6,1.5,versicolor 29 | 5.7,2.8,4.5,1.3,versicolor 30 | 6.3,3.3,4.7,1.6,versicolor 31 | 4.9,2.4,3.3,1,versicolor 32 | 6.6,2.9,4.6,1.3,versicolor 33 | 5.2,2.7,3.9,1.4,versicolor 34 | 5,2,3.5,1,versicolor 35 | -------------------------------------------------------------------------------- /data/iris-train.csv: -------------------------------------------------------------------------------- 1 | 4.8,3.4,1.6,0.2,setosa 2 | 4.8,3,1.4,0.1,setosa 3 | 4.3,3,1.1,0.1,setosa 4 | 5.8,4,1.2,0.2,setosa 5 | 5.7,4.4,1.5,0.4,setosa 6 | 5.4,3.9,1.3,0.4,setosa 7 | 5.1,3.5,1.4,0.3,setosa 8 | 5.7,3.8,1.7,0.3,setosa 9 | 5.1,3.8,1.5,0.3,setosa 10 | 5.4,3.4,1.7,0.2,setosa 11 | 5.1,3.7,1.5,0.4,setosa 12 | 4.6,3.6,1,0.2,setosa 13 | 5.1,3.3,1.7,0.5,setosa 14 | 4.8,3.4,1.9,0.2,setosa 15 | 5,3,1.6,0.2,setosa 16 | 5,3.4,1.6,0.4,setosa 17 | 5.2,3.5,1.5,0.2,setosa 18 | 5.2,3.4,1.4,0.2,setosa 19 | 4.7,3.2,1.6,0.2,setosa 20 | 4.8,3.1,1.6,0.2,setosa 21 | 5.4,3.4,1.5,0.4,setosa 22 | 5.2,4.1,1.5,0.1,setosa 23 | 5.5,4.2,1.4,0.2,setosa 24 | 4.9,3.1,1.5,0.2,setosa 25 | 5,3.2,1.2,0.2,setosa 26 | 5.5,3.5,1.3,0.2,setosa 27 | 4.9,3.6,1.4,0.1,setosa 28 | 4.4,3,1.3,0.2,setosa 29 | 5.1,3.4,1.5,0.2,setosa 30 | 5,3.5,1.3,0.3,setosa 31 | 4.5,2.3,1.3,0.3,setosa 32 | 4.4,3.2,1.3,0.2,setosa 33 | 5,3.5,1.6,0.6,setosa 34 | 5.1,3.8,1.9,0.4,setosa 35 | 4.8,3,1.4,0.3,setosa 36 | 5.1,3.8,1.6,0.2,setosa 37 | 4.6,3.2,1.4,0.2,setosa 38 | 5.3,3.7,1.5,0.2,setosa 39 | 5,3.3,1.4,0.2,setosa 40 | 5.9,3,4.2,1.5,versicolor 41 | 6,2.2,4,1,versicolor 42 | 6.1,2.9,4.7,1.4,versicolor 43 | 5.6,2.9,3.6,1.3,versicolor 44 | 6.7,3.1,4.4,1.4,versicolor 45 | 5.6,3,4.5,1.5,versicolor 46 | 5.8,2.7,4.1,1,versicolor 47 | 6.2,2.2,4.5,1.5,versicolor 48 | 5.6,2.5,3.9,1.1,versicolor 49 | 5.9,3.2,4.8,1.8,versicolor 50 | 6.1,2.8,4,1.3,versicolor 51 | 6.3,2.5,4.9,1.5,versicolor 52 | 6.1,2.8,4.7,1.2,versicolor 53 | 6.4,2.9,4.3,1.3,versicolor 54 | 6.6,3,4.4,1.4,versicolor 55 | 6.8,2.8,4.8,1.4,versicolor 56 | 6.7,3,5,1.7,versicolor 57 | 6,2.9,4.5,1.5,versicolor 58 | 5.7,2.6,3.5,1,versicolor 59 | 5.5,2.4,3.8,1.1,versicolor 60 | 5.5,2.4,3.7,1,versicolor 61 | 5.8,2.7,3.9,1.2,versicolor 62 | 6,2.7,5.1,1.6,versicolor 63 | 5.4,3,4.5,1.5,versicolor 64 | 6,3.4,4.5,1.6,versicolor 65 | 6.7,3.1,4.7,1.5,versicolor 66 | 6.3,2.3,4.4,1.3,versicolor 67 | 5.6,3,4.1,1.3,versicolor 68 | 5.5,2.5,4,1.3,versicolor 69 | 5.5,2.6,4.4,1.2,versicolor 70 | 6.1,3,4.6,1.4,versicolor 71 | 5.8,2.6,4,1.2,versicolor 72 | 5,2.3,3.3,1,versicolor 73 | 5.6,2.7,4.2,1.3,versicolor 74 | 5.7,3,4.2,1.2,versicolor 75 | 5.7,2.9,4.2,1.3,versicolor 76 | 6.2,2.9,4.3,1.3,versicolor 77 | 5.1,2.5,3,1.1,versicolor 78 | 5.7,2.8,4.1,1.3,versicolor 79 | 6.5,3.2,5.1,2,virginica 80 | 6.4,2.7,5.3,1.9,virginica 81 | 6.8,3,5.5,2.1,virginica 82 | 5.7,2.5,5,2,virginica 83 | 5.8,2.8,5.1,2.4,virginica 84 | 6.4,3.2,5.3,2.3,virginica 85 | 6.5,3,5.5,1.8,virginica 86 | 7.7,3.8,6.7,2.2,virginica 87 | 7.7,2.6,6.9,2.3,virginica 88 | 6,2.2,5,1.5,virginica 89 | 6.9,3.2,5.7,2.3,virginica 90 | 5.6,2.8,4.9,2,virginica 91 | 7.7,2.8,6.7,2,virginica 92 | 6.3,2.7,4.9,1.8,virginica 93 | 6.7,3.3,5.7,2.1,virginica 94 | 7.2,3.2,6,1.8,virginica 95 | 6.2,2.8,4.8,1.8,virginica 96 | 6.1,3,4.9,1.8,virginica 97 | 6.4,2.8,5.6,2.1,virginica 98 | 7.2,3,5.8,1.6,virginica 99 | 7.4,2.8,6.1,1.9,virginica 100 | 7.9,3.8,6.4,2,virginica 101 | 6.4,2.8,5.6,2.2,virginica 102 | 6.3,2.8,5.1,1.5,virginica 103 | 6.1,2.6,5.6,1.4,virginica 104 | 7.7,3,6.1,2.3,virginica 105 | 6.3,3.4,5.6,2.4,virginica 106 | 6.4,3.1,5.5,1.8,virginica 107 | 6,3,4.8,1.8,virginica 108 | 6.9,3.1,5.4,2.1,virginica 109 | 6.7,3.1,5.6,2.4,virginica 110 | 6.9,3.1,5.1,2.3,virginica 111 | 5.8,2.7,5.1,1.9,virginica 112 | 6.8,3.2,5.9,2.3,virginica 113 | 6.7,3.3,5.7,2.5,virginica 114 | 6.7,3,5.2,2.3,virginica 115 | 6.3,2.5,5,1.9,virginica 116 | 6.5,3,5.2,2,virginica 117 | 6.2,3.4,5.4,2.3,virginica 118 | 5.9,3,5.1,1.8,virginica 119 | -------------------------------------------------------------------------------- /data/iris.arff: -------------------------------------------------------------------------------- 1 | % 1. Title: Iris Plants Database 2 | % 3 | % 2. Sources: 4 | % (a) Creator: R.A. Fisher 5 | % (b) Donor: Michael Marshall (MARSHALL%PLU@io.arc.nasa.gov) 6 | % (c) Date: July, 1988 7 | % 8 | % 3. Past Usage: 9 | % - Publications: too many to mention!!! Here are a few. 10 | % 1. Fisher,R.A. "The use of multiple measurements in taxonomic problems" 11 | % Annual Eugenics, 7, Part II, 179-188 (1936); also in "Contributions 12 | % to Mathematical Statistics" (John Wiley, NY, 1950). 13 | % 2. Duda,R.O., & Hart,P.E. (1973) Pattern Classification and Scene Analysis. 14 | % (Q327.D83) John Wiley & Sons. ISBN 0-471-22361-1. See page 218. 15 | % 3. Dasarathy, B.V. (1980) "Nosing Around the Neighborhood: A New System 16 | % Structure and Classification Rule for Recognition in Partially Exposed 17 | % Environments". IEEE Transactions on Pattern Analysis and Machine 18 | % Intelligence, Vol. PAMI-2, No. 1, 67-71. 19 | % -- Results: 20 | % -- very low misclassification rates (0% for the setosa class) 21 | % 4. Gates, G.W. (1972) "The Reduced Nearest Neighbor Rule". IEEE 22 | % Transactions on Information Theory, May 1972, 431-433. 23 | % -- Results: 24 | % -- very low misclassification rates again 25 | % 5. See also: 1988 MLC Proceedings, 54-64. Cheeseman et al's AUTOCLASS II 26 | % conceptual clustering system finds 3 classes in the data. 27 | % 28 | % 4. Relevant Information: 29 | % --- This is perhaps the best known database to be found in the pattern 30 | % recognition literature. Fisher's paper is a classic in the field 31 | % and is referenced frequently to this day. (See Duda & Hart, for 32 | % example.) The data set contains 3 classes of 50 instances each, 33 | % where each class refers to a type of iris plant. One class is 34 | % linearly separable from the other 2; the latter are NOT linearly 35 | % separable from each other. 36 | % --- Predicted attribute: class of iris plant. 37 | % --- This is an exceedingly simple domain. 38 | % 39 | % 5. Number of Instances: 150 (50 in each of three classes) 40 | % 41 | % 6. Number of Attributes: 4 numeric, predictive attributes and the class 42 | % 43 | % 7. Attribute Information: 44 | % 1. sepal length in cm 45 | % 2. sepal width in cm 46 | % 3. petal length in cm 47 | % 4. petal width in cm 48 | % 5. class: 49 | % -- Iris Setosa 50 | % -- Iris Versicolour 51 | % -- Iris Virginica 52 | % 53 | % 8. Missing Attribute Values: None 54 | % 55 | % Summary Statistics: 56 | % Min Max Mean SD Class Correlation 57 | % sepal length: 4.3 7.9 5.84 0.83 0.7826 58 | % sepal width: 2.0 4.4 3.05 0.43 -0.4194 59 | % petal length: 1.0 6.9 3.76 1.76 0.9490 (high!) 60 | % petal width: 0.1 2.5 1.20 0.76 0.9565 (high!) 61 | % 62 | % 9. Class Distribution: 33.3% for each of 3 classes. 63 | 64 | @RELATION iris 65 | 66 | @ATTRIBUTE sepallength REAL 67 | @ATTRIBUTE sepalwidth REAL 68 | @ATTRIBUTE petallength REAL 69 | @ATTRIBUTE petalwidth REAL 70 | @ATTRIBUTE class {Iris-setosa,Iris-versicolor,Iris-virginica} 71 | 72 | @DATA 73 | 5.1,3.5,1.4,0.2,Iris-setosa 74 | 4.9,3.0,1.4,0.2,Iris-setosa 75 | 4.7,3.2,1.3,0.2,Iris-setosa 76 | 4.6,3.1,1.5,0.2,Iris-setosa 77 | 5.0,3.6,1.4,0.2,Iris-setosa 78 | 5.4,3.9,1.7,0.4,Iris-setosa 79 | 4.6,3.4,1.4,0.3,Iris-setosa 80 | 5.0,3.4,1.5,0.2,Iris-setosa 81 | 4.4,2.9,1.4,0.2,Iris-setosa 82 | 4.9,3.1,1.5,0.1,Iris-setosa 83 | 5.4,3.7,1.5,0.2,Iris-setosa 84 | 4.8,3.4,1.6,0.2,Iris-setosa 85 | 4.8,3.0,1.4,0.1,Iris-setosa 86 | 4.3,3.0,1.1,0.1,Iris-setosa 87 | 5.8,4.0,1.2,0.2,Iris-setosa 88 | 5.7,4.4,1.5,0.4,Iris-setosa 89 | 5.4,3.9,1.3,0.4,Iris-setosa 90 | 5.1,3.5,1.4,0.3,Iris-setosa 91 | 5.7,3.8,1.7,0.3,Iris-setosa 92 | 5.1,3.8,1.5,0.3,Iris-setosa 93 | 5.4,3.4,1.7,0.2,Iris-setosa 94 | 5.1,3.7,1.5,0.4,Iris-setosa 95 | 4.6,3.6,1.0,0.2,Iris-setosa 96 | 5.1,3.3,1.7,0.5,Iris-setosa 97 | 4.8,3.4,1.9,0.2,Iris-setosa 98 | 5.0,3.0,1.6,0.2,Iris-setosa 99 | 5.0,3.4,1.6,0.4,Iris-setosa 100 | 5.2,3.5,1.5,0.2,Iris-setosa 101 | 5.2,3.4,1.4,0.2,Iris-setosa 102 | 4.7,3.2,1.6,0.2,Iris-setosa 103 | 4.8,3.1,1.6,0.2,Iris-setosa 104 | 5.4,3.4,1.5,0.4,Iris-setosa 105 | 5.2,4.1,1.5,0.1,Iris-setosa 106 | 5.5,4.2,1.4,0.2,Iris-setosa 107 | 4.9,3.1,1.5,0.1,Iris-setosa 108 | 5.0,3.2,1.2,0.2,Iris-setosa 109 | 5.5,3.5,1.3,0.2,Iris-setosa 110 | 4.9,3.1,1.5,0.1,Iris-setosa 111 | 4.4,3.0,1.3,0.2,Iris-setosa 112 | 5.1,3.4,1.5,0.2,Iris-setosa 113 | 5.0,3.5,1.3,0.3,Iris-setosa 114 | 4.5,2.3,1.3,0.3,Iris-setosa 115 | 4.4,3.2,1.3,0.2,Iris-setosa 116 | 5.0,3.5,1.6,0.6,Iris-setosa 117 | 5.1,3.8,1.9,0.4,Iris-setosa 118 | 4.8,3.0,1.4,0.3,Iris-setosa 119 | 5.1,3.8,1.6,0.2,Iris-setosa 120 | 4.6,3.2,1.4,0.2,Iris-setosa 121 | 5.3,3.7,1.5,0.2,Iris-setosa 122 | 5.0,3.3,1.4,0.2,Iris-setosa 123 | 7.0,3.2,4.7,1.4,Iris-versicolor 124 | 6.4,3.2,4.5,1.5,Iris-versicolor 125 | 6.9,3.1,4.9,1.5,Iris-versicolor 126 | 5.5,2.3,4.0,1.3,Iris-versicolor 127 | 6.5,2.8,4.6,1.5,Iris-versicolor 128 | 5.7,2.8,4.5,1.3,Iris-versicolor 129 | 6.3,3.3,4.7,1.6,Iris-versicolor 130 | 4.9,2.4,3.3,1.0,Iris-versicolor 131 | 6.6,2.9,4.6,1.3,Iris-versicolor 132 | 5.2,2.7,3.9,1.4,Iris-versicolor 133 | 5.0,2.0,3.5,1.0,Iris-versicolor 134 | 5.9,3.0,4.2,1.5,Iris-versicolor 135 | 6.0,2.2,4.0,1.0,Iris-versicolor 136 | 6.1,2.9,4.7,1.4,Iris-versicolor 137 | 5.6,2.9,3.6,1.3,Iris-versicolor 138 | 6.7,3.1,4.4,1.4,Iris-versicolor 139 | 5.6,3.0,4.5,1.5,Iris-versicolor 140 | 5.8,2.7,4.1,1.0,Iris-versicolor 141 | 6.2,2.2,4.5,1.5,Iris-versicolor 142 | 5.6,2.5,3.9,1.1,Iris-versicolor 143 | 5.9,3.2,4.8,1.8,Iris-versicolor 144 | 6.1,2.8,4.0,1.3,Iris-versicolor 145 | 6.3,2.5,4.9,1.5,Iris-versicolor 146 | 6.1,2.8,4.7,1.2,Iris-versicolor 147 | 6.4,2.9,4.3,1.3,Iris-versicolor 148 | 6.6,3.0,4.4,1.4,Iris-versicolor 149 | 6.8,2.8,4.8,1.4,Iris-versicolor 150 | 6.7,3.0,5.0,1.7,Iris-versicolor 151 | 6.0,2.9,4.5,1.5,Iris-versicolor 152 | 5.7,2.6,3.5,1.0,Iris-versicolor 153 | 5.5,2.4,3.8,1.1,Iris-versicolor 154 | 5.5,2.4,3.7,1.0,Iris-versicolor 155 | 5.8,2.7,3.9,1.2,Iris-versicolor 156 | 6.0,2.7,5.1,1.6,Iris-versicolor 157 | 5.4,3.0,4.5,1.5,Iris-versicolor 158 | 6.0,3.4,4.5,1.6,Iris-versicolor 159 | 6.7,3.1,4.7,1.5,Iris-versicolor 160 | 6.3,2.3,4.4,1.3,Iris-versicolor 161 | 5.6,3.0,4.1,1.3,Iris-versicolor 162 | 5.5,2.5,4.0,1.3,Iris-versicolor 163 | 5.5,2.6,4.4,1.2,Iris-versicolor 164 | 6.1,3.0,4.6,1.4,Iris-versicolor 165 | 5.8,2.6,4.0,1.2,Iris-versicolor 166 | 5.0,2.3,3.3,1.0,Iris-versicolor 167 | 5.6,2.7,4.2,1.3,Iris-versicolor 168 | 5.7,3.0,4.2,1.2,Iris-versicolor 169 | 5.7,2.9,4.2,1.3,Iris-versicolor 170 | 6.2,2.9,4.3,1.3,Iris-versicolor 171 | 5.1,2.5,3.0,1.1,Iris-versicolor 172 | 5.7,2.8,4.1,1.3,Iris-versicolor 173 | 6.3,3.3,6.0,2.5,Iris-virginica 174 | 5.8,2.7,5.1,1.9,Iris-virginica 175 | 7.1,3.0,5.9,2.1,Iris-virginica 176 | 6.3,2.9,5.6,1.8,Iris-virginica 177 | 6.5,3.0,5.8,2.2,Iris-virginica 178 | 7.6,3.0,6.6,2.1,Iris-virginica 179 | 4.9,2.5,4.5,1.7,Iris-virginica 180 | 7.3,2.9,6.3,1.8,Iris-virginica 181 | 6.7,2.5,5.8,1.8,Iris-virginica 182 | 7.2,3.6,6.1,2.5,Iris-virginica 183 | 6.5,3.2,5.1,2.0,Iris-virginica 184 | 6.4,2.7,5.3,1.9,Iris-virginica 185 | 6.8,3.0,5.5,2.1,Iris-virginica 186 | 5.7,2.5,5.0,2.0,Iris-virginica 187 | 5.8,2.8,5.1,2.4,Iris-virginica 188 | 6.4,3.2,5.3,2.3,Iris-virginica 189 | 6.5,3.0,5.5,1.8,Iris-virginica 190 | 7.7,3.8,6.7,2.2,Iris-virginica 191 | 7.7,2.6,6.9,2.3,Iris-virginica 192 | 6.0,2.2,5.0,1.5,Iris-virginica 193 | 6.9,3.2,5.7,2.3,Iris-virginica 194 | 5.6,2.8,4.9,2.0,Iris-virginica 195 | 7.7,2.8,6.7,2.0,Iris-virginica 196 | 6.3,2.7,4.9,1.8,Iris-virginica 197 | 6.7,3.3,5.7,2.1,Iris-virginica 198 | 7.2,3.2,6.0,1.8,Iris-virginica 199 | 6.2,2.8,4.8,1.8,Iris-virginica 200 | 6.1,3.0,4.9,1.8,Iris-virginica 201 | 6.4,2.8,5.6,2.1,Iris-virginica 202 | 7.2,3.0,5.8,1.6,Iris-virginica 203 | 7.4,2.8,6.1,1.9,Iris-virginica 204 | 7.9,3.8,6.4,2.0,Iris-virginica 205 | 6.4,2.8,5.6,2.2,Iris-virginica 206 | 6.3,2.8,5.1,1.5,Iris-virginica 207 | 6.1,2.6,5.6,1.4,Iris-virginica 208 | 7.7,3.0,6.1,2.3,Iris-virginica 209 | 6.3,3.4,5.6,2.4,Iris-virginica 210 | 6.4,3.1,5.5,1.8,Iris-virginica 211 | 6.0,3.0,4.8,1.8,Iris-virginica 212 | 6.9,3.1,5.4,2.1,Iris-virginica 213 | 6.7,3.1,5.6,2.4,Iris-virginica 214 | 6.9,3.1,5.1,2.3,Iris-virginica 215 | 5.8,2.7,5.1,1.9,Iris-virginica 216 | 6.8,3.2,5.9,2.3,Iris-virginica 217 | 6.7,3.3,5.7,2.5,Iris-virginica 218 | 6.7,3.0,5.2,2.3,Iris-virginica 219 | 6.3,2.5,5.0,1.9,Iris-virginica 220 | 6.5,3.0,5.2,2.0,Iris-virginica 221 | 6.2,3.4,5.4,2.3,Iris-virginica 222 | 5.9,3.0,5.1,1.8,Iris-virginica 223 | % 224 | % 225 | % 226 | -------------------------------------------------------------------------------- /data/iris.csv: -------------------------------------------------------------------------------- 1 | sepallength,sepalwidth,petallength,petalwidth,class 2 | 5.1,3.5,1.4,0.2,Iris-setosa 3 | 4.9,3,1.4,0.2,Iris-setosa 4 | 4.7,3.2,1.3,0.2,Iris-setosa 5 | 4.6,3.1,1.5,0.2,Iris-setosa 6 | 5,3.6,1.4,0.2,Iris-setosa 7 | 5.4,3.9,1.7,0.4,Iris-setosa 8 | 4.6,3.4,1.4,0.3,Iris-setosa 9 | 5,3.4,1.5,0.2,Iris-setosa 10 | 4.4,2.9,1.4,0.2,Iris-setosa 11 | 4.9,3.1,1.5,0.1,Iris-setosa 12 | 5.4,3.7,1.5,0.2,Iris-setosa 13 | 4.8,3.4,1.6,0.2,Iris-setosa 14 | 4.8,3,1.4,0.1,Iris-setosa 15 | 4.3,3,1.1,0.1,Iris-setosa 16 | 5.8,4,1.2,0.2,Iris-setosa 17 | 5.7,4.4,1.5,0.4,Iris-setosa 18 | 5.4,3.9,1.3,0.4,Iris-setosa 19 | 5.1,3.5,1.4,0.3,Iris-setosa 20 | 5.7,3.8,1.7,0.3,Iris-setosa 21 | 5.1,3.8,1.5,0.3,Iris-setosa 22 | 5.4,3.4,1.7,0.2,Iris-setosa 23 | 5.1,3.7,1.5,0.4,Iris-setosa 24 | 4.6,3.6,1,0.2,Iris-setosa 25 | 5.1,3.3,1.7,0.5,Iris-setosa 26 | 4.8,3.4,1.9,0.2,Iris-setosa 27 | 5,3,1.6,0.2,Iris-setosa 28 | 5,3.4,1.6,0.4,Iris-setosa 29 | 5.2,3.5,1.5,0.2,Iris-setosa 30 | 5.2,3.4,1.4,0.2,Iris-setosa 31 | 4.7,3.2,1.6,0.2,Iris-setosa 32 | 4.8,3.1,1.6,0.2,Iris-setosa 33 | 5.4,3.4,1.5,0.4,Iris-setosa 34 | 5.2,4.1,1.5,0.1,Iris-setosa 35 | 5.5,4.2,1.4,0.2,Iris-setosa 36 | 4.9,3.1,1.5,0.1,Iris-setosa 37 | 5,3.2,1.2,0.2,Iris-setosa 38 | 5.5,3.5,1.3,0.2,Iris-setosa 39 | 4.9,3.1,1.5,0.1,Iris-setosa 40 | 4.4,3,1.3,0.2,Iris-setosa 41 | 5.1,3.4,1.5,0.2,Iris-setosa 42 | 5,3.5,1.3,0.3,Iris-setosa 43 | 4.5,2.3,1.3,0.3,Iris-setosa 44 | 4.4,3.2,1.3,0.2,Iris-setosa 45 | 5,3.5,1.6,0.6,Iris-setosa 46 | 5.1,3.8,1.9,0.4,Iris-setosa 47 | 4.8,3,1.4,0.3,Iris-setosa 48 | 5.1,3.8,1.6,0.2,Iris-setosa 49 | 4.6,3.2,1.4,0.2,Iris-setosa 50 | 5.3,3.7,1.5,0.2,Iris-setosa 51 | 5,3.3,1.4,0.2,Iris-setosa 52 | 7,3.2,4.7,1.4,Iris-versicolor 53 | 6.4,3.2,4.5,1.5,Iris-versicolor 54 | 6.9,3.1,4.9,1.5,Iris-versicolor 55 | 5.5,2.3,4,1.3,Iris-versicolor 56 | 6.5,2.8,4.6,1.5,Iris-versicolor 57 | 5.7,2.8,4.5,1.3,Iris-versicolor 58 | 6.3,3.3,4.7,1.6,Iris-versicolor 59 | 4.9,2.4,3.3,1,Iris-versicolor 60 | 6.6,2.9,4.6,1.3,Iris-versicolor 61 | 5.2,2.7,3.9,1.4,Iris-versicolor 62 | 5,2,3.5,1,Iris-versicolor 63 | 5.9,3,4.2,1.5,Iris-versicolor 64 | 6,2.2,4,1,Iris-versicolor 65 | 6.1,2.9,4.7,1.4,Iris-versicolor 66 | 5.6,2.9,3.6,1.3,Iris-versicolor 67 | 6.7,3.1,4.4,1.4,Iris-versicolor 68 | 5.6,3,4.5,1.5,Iris-versicolor 69 | 5.8,2.7,4.1,1,Iris-versicolor 70 | 6.2,2.2,4.5,1.5,Iris-versicolor 71 | 5.6,2.5,3.9,1.1,Iris-versicolor 72 | 5.9,3.2,4.8,1.8,Iris-versicolor 73 | 6.1,2.8,4,1.3,Iris-versicolor 74 | 6.3,2.5,4.9,1.5,Iris-versicolor 75 | 6.1,2.8,4.7,1.2,Iris-versicolor 76 | 6.4,2.9,4.3,1.3,Iris-versicolor 77 | 6.6,3,4.4,1.4,Iris-versicolor 78 | 6.8,2.8,4.8,1.4,Iris-versicolor 79 | 6.7,3,5,1.7,Iris-versicolor 80 | 6,2.9,4.5,1.5,Iris-versicolor 81 | 5.7,2.6,3.5,1,Iris-versicolor 82 | 5.5,2.4,3.8,1.1,Iris-versicolor 83 | 5.5,2.4,3.7,1,Iris-versicolor 84 | 5.8,2.7,3.9,1.2,Iris-versicolor 85 | 6,2.7,5.1,1.6,Iris-versicolor 86 | 5.4,3,4.5,1.5,Iris-versicolor 87 | 6,3.4,4.5,1.6,Iris-versicolor 88 | 6.7,3.1,4.7,1.5,Iris-versicolor 89 | 6.3,2.3,4.4,1.3,Iris-versicolor 90 | 5.6,3,4.1,1.3,Iris-versicolor 91 | 5.5,2.5,4,1.3,Iris-versicolor 92 | 5.5,2.6,4.4,1.2,Iris-versicolor 93 | 6.1,3,4.6,1.4,Iris-versicolor 94 | 5.8,2.6,4,1.2,Iris-versicolor 95 | 5,2.3,3.3,1,Iris-versicolor 96 | 5.6,2.7,4.2,1.3,Iris-versicolor 97 | 5.7,3,4.2,1.2,Iris-versicolor 98 | 5.7,2.9,4.2,1.3,Iris-versicolor 99 | 6.2,2.9,4.3,1.3,Iris-versicolor 100 | 5.1,2.5,3,1.1,Iris-versicolor 101 | 5.7,2.8,4.1,1.3,Iris-versicolor 102 | 6.3,3.3,6,2.5,Iris-virginica 103 | 5.8,2.7,5.1,1.9,Iris-virginica 104 | 7.1,3,5.9,2.1,Iris-virginica 105 | 6.3,2.9,5.6,1.8,Iris-virginica 106 | 6.5,3,5.8,2.2,Iris-virginica 107 | 7.6,3,6.6,2.1,Iris-virginica 108 | 4.9,2.5,4.5,1.7,Iris-virginica 109 | 7.3,2.9,6.3,1.8,Iris-virginica 110 | 6.7,2.5,5.8,1.8,Iris-virginica 111 | 7.2,3.6,6.1,2.5,Iris-virginica 112 | 6.5,3.2,5.1,2,Iris-virginica 113 | 6.4,2.7,5.3,1.9,Iris-virginica 114 | 6.8,3,5.5,2.1,Iris-virginica 115 | 5.7,2.5,5,2,Iris-virginica 116 | 5.8,2.8,5.1,2.4,Iris-virginica 117 | 6.4,3.2,5.3,2.3,Iris-virginica 118 | 6.5,3,5.5,1.8,Iris-virginica 119 | 7.7,3.8,6.7,2.2,Iris-virginica 120 | 7.7,2.6,6.9,2.3,Iris-virginica 121 | 6,2.2,5,1.5,Iris-virginica 122 | 6.9,3.2,5.7,2.3,Iris-virginica 123 | 5.6,2.8,4.9,2,Iris-virginica 124 | 7.7,2.8,6.7,2,Iris-virginica 125 | 6.3,2.7,4.9,1.8,Iris-virginica 126 | 6.7,3.3,5.7,2.1,Iris-virginica 127 | 7.2,3.2,6,1.8,Iris-virginica 128 | 6.2,2.8,4.8,1.8,Iris-virginica 129 | 6.1,3,4.9,1.8,Iris-virginica 130 | 6.4,2.8,5.6,2.1,Iris-virginica 131 | 7.2,3,5.8,1.6,Iris-virginica 132 | 7.4,2.8,6.1,1.9,Iris-virginica 133 | 7.9,3.8,6.4,2,Iris-virginica 134 | 6.4,2.8,5.6,2.2,Iris-virginica 135 | 6.3,2.8,5.1,1.5,Iris-virginica 136 | 6.1,2.6,5.6,1.4,Iris-virginica 137 | 7.7,3,6.1,2.3,Iris-virginica 138 | 6.3,3.4,5.6,2.4,Iris-virginica 139 | 6.4,3.1,5.5,1.8,Iris-virginica 140 | 6,3,4.8,1.8,Iris-virginica 141 | 6.9,3.1,5.4,2.1,Iris-virginica 142 | 6.7,3.1,5.6,2.4,Iris-virginica 143 | 6.9,3.1,5.1,2.3,Iris-virginica 144 | 5.8,2.7,5.1,1.9,Iris-virginica 145 | 6.8,3.2,5.9,2.3,Iris-virginica 146 | 6.7,3.3,5.7,2.5,Iris-virginica 147 | 6.7,3,5.2,2.3,Iris-virginica 148 | 6.3,2.5,5,1.9,Iris-virginica 149 | 6.5,3,5.2,2,Iris-virginica 150 | 6.2,3.4,5.4,2.3,Iris-virginica 151 | 5.9,3,5.1,1.8,Iris-virginica 152 | -------------------------------------------------------------------------------- /data/labor.arff: -------------------------------------------------------------------------------- 1 | % Date: Tue, 15 Nov 88 15:44:08 EST 2 | % From: stan 3 | % To: aha@ICS.UCI.EDU 4 | % 5 | % 1. Title: Final settlements in labor negotitions in Canadian industry 6 | % 7 | % 2. Source Information 8 | % -- Creators: Collective Barganing Review, montly publication, 9 | % Labour Canada, Industrial Relations Information Service, 10 | % Ottawa, Ontario, K1A 0J2, Canada, (819) 997-3117 11 | % The data includes all collective agreements reached 12 | % in the business and personal services sector for locals 13 | % with at least 500 members (teachers, nurses, university 14 | % staff, police, etc) in Canada in 87 and first quarter of 88. 15 | % -- Donor: Stan Matwin, Computer Science Dept, University of Ottawa, 16 | % 34 Somerset East, K1N 9B4, (stan@uotcsi2.bitnet) 17 | % -- Date: November 1988 18 | % 19 | % 3. Past Usage: 20 | % -- testing concept learning software, in particular 21 | % an experimental method to learn two-tiered concept descriptions. 22 | % The data was used to learn the description of an acceptable 23 | % and unacceptable contract. 24 | % The unacceptable contracts were either obtained by interviewing 25 | % experts, or by inventing near misses. 26 | % Examples of use are described in: 27 | % Bergadano, F., Matwin, S., Michalski, R., 28 | % Zhang, J., Measuring Quality of Concept Descriptions, 29 | % Procs. of the 3rd European Working Sessions on Learning, 30 | % Glasgow, October 1988. 31 | % Bergadano, F., Matwin, S., Michalski, R., Zhang, J., 32 | % Representing and Acquiring Imprecise and Context-dependent 33 | % Concepts in Knowledge-based Systems, Procs. of ISMIS'88, 34 | % North Holland, 1988. 35 | % 4. Relevant Information: 36 | % -- data was used to test 2tier approach with learning 37 | % from positive and negative examples 38 | % 39 | % 5. Number of Instances: 57 40 | % 41 | % 6. Number of Attributes: 16 42 | % 43 | % 7. Attribute Information: 44 | % 1. dur: duration of agreement 45 | % [1..7] 46 | % 2 wage1.wage : wage increase in first year of contract 47 | % [2.0 .. 7.0] 48 | % 3 wage2.wage : wage increase in second year of contract 49 | % [2.0 .. 7.0] 50 | % 4 wage3.wage : wage increase in third year of contract 51 | % [2.0 .. 7.0] 52 | % 5 cola : cost of living allowance 53 | % [none, tcf, tc] 54 | % 6 hours.hrs : number of working hours during week 55 | % [35 .. 40] 56 | % 7 pension : employer contributions to pension plan 57 | % [none, ret_allw, empl_contr] 58 | % 8 stby_pay : standby pay 59 | % [2 .. 25] 60 | % 9 shift_diff : shift differencial : supplement for work on II and III shift 61 | % [1 .. 25] 62 | % 10 educ_allw.boolean : education allowance 63 | % [true false] 64 | % 11 holidays : number of statutory holidays 65 | % [9 .. 15] 66 | % 12 vacation : number of paid vacation days 67 | % [ba, avg, gnr] 68 | % 13 lngtrm_disabil.boolean : 69 | % employer's help during employee longterm disabil 70 | % ity [true , false] 71 | % 14 dntl_ins : employers contribution towards the dental plan 72 | % [none, half, full] 73 | % 15 bereavement.boolean : employer's financial contribution towards the 74 | % covering the costs of bereavement 75 | % [true , false] 76 | % 16 empl_hplan : employer's contribution towards the health plan 77 | % [none, half, full] 78 | % 79 | % 8. Missing Attribute Values: None 80 | % 81 | % 9. Class Distribution: 82 | % 83 | % 10. Exceptions from format instructions: no commas between attribute values. 84 | % 85 | % 86 | @relation 'labor-neg-data' 87 | @attribute 'duration' numeric 88 | @attribute 'wage-increase-first-year' numeric 89 | @attribute 'wage-increase-second-year' numeric 90 | @attribute 'wage-increase-third-year' numeric 91 | @attribute 'cost-of-living-adjustment' {'none','tcf','tc'} 92 | @attribute 'working-hours' numeric 93 | @attribute 'pension' {'none','ret_allw','empl_contr'} 94 | @attribute 'standby-pay' numeric 95 | @attribute 'shift-differential' numeric 96 | @attribute 'education-allowance' {'yes','no'} 97 | @attribute 'statutory-holidays' numeric 98 | @attribute 'vacation' {'below_average','average','generous'} 99 | @attribute 'longterm-disability-assistance' {'yes','no'} 100 | @attribute 'contribution-to-dental-plan' {'none','half','full'} 101 | @attribute 'bereavement-assistance' {'yes','no'} 102 | @attribute 'contribution-to-health-plan' {'none','half','full'} 103 | @attribute 'class' {'bad','good'} 104 | @data 105 | 1,5,?,?,?,40,?,?,2,?,11,'average',?,?,'yes',?,'good' 106 | 2,4.5,5.8,?,?,35,'ret_allw',?,?,'yes',11,'below_average',?,'full',?,'full','good' 107 | ?,?,?,?,?,38,'empl_contr',?,5,?,11,'generous','yes','half','yes','half','good' 108 | 3,3.7,4,5,'tc',?,?,?,?,'yes',?,?,?,?,'yes',?,'good' 109 | 3,4.5,4.5,5,?,40,?,?,?,?,12,'average',?,'half','yes','half','good' 110 | 2,2,2.5,?,?,35,?,?,6,'yes',12,'average',?,?,?,?,'good' 111 | 3,4,5,5,'tc',?,'empl_contr',?,?,?,12,'generous','yes','none','yes','half','good' 112 | 3,6.9,4.8,2.3,?,40,?,?,3,?,12,'below_average',?,?,?,?,'good' 113 | 2,3,7,?,?,38,?,12,25,'yes',11,'below_average','yes','half','yes',?,'good' 114 | 1,5.7,?,?,'none',40,'empl_contr',?,4,?,11,'generous','yes','full',?,?,'good' 115 | 3,3.5,4,4.6,'none',36,?,?,3,?,13,'generous',?,?,'yes','full','good' 116 | 2,6.4,6.4,?,?,38,?,?,4,?,15,?,?,'full',?,?,'good' 117 | 2,3.5,4,?,'none',40,?,?,2,'no',10,'below_average','no','half',?,'half','bad' 118 | 3,3.5,4,5.1,'tcf',37,?,?,4,?,13,'generous',?,'full','yes','full','good' 119 | 1,3,?,?,'none',36,?,?,10,'no',11,'generous',?,?,?,?,'good' 120 | 2,4.5,4,?,'none',37,'empl_contr',?,?,?,11,'average',?,'full','yes',?,'good' 121 | 1,2.8,?,?,?,35,?,?,2,?,12,'below_average',?,?,?,?,'good' 122 | 1,2.1,?,?,'tc',40,'ret_allw',2,3,'no',9,'below_average','yes','half',?,'none','bad' 123 | 1,2,?,?,'none',38,'none',?,?,'yes',11,'average','no','none','no','none','bad' 124 | 2,4,5,?,'tcf',35,?,13,5,?,15,'generous',?,?,?,?,'good' 125 | 2,4.3,4.4,?,?,38,?,?,4,?,12,'generous',?,'full',?,'full','good' 126 | 2,2.5,3,?,?,40,'none',?,?,?,11,'below_average',?,?,?,?,'bad' 127 | 3,3.5,4,4.6,'tcf',27,?,?,?,?,?,?,?,?,?,?,'good' 128 | 2,4.5,4,?,?,40,?,?,4,?,10,'generous',?,'half',?,'full','good' 129 | 1,6,?,?,?,38,?,8,3,?,9,'generous',?,?,?,?,'good' 130 | 3,2,2,2,'none',40,'none',?,?,?,10,'below_average',?,'half','yes','full','bad' 131 | 2,4.5,4.5,?,'tcf',?,?,?,?,'yes',10,'below_average','yes','none',?,'half','good' 132 | 2,3,3,?,'none',33,?,?,?,'yes',12,'generous',?,?,'yes','full','good' 133 | 2,5,4,?,'none',37,?,?,5,'no',11,'below_average','yes','full','yes','full','good' 134 | 3,2,2.5,?,?,35,'none',?,?,?,10,'average',?,?,'yes','full','bad' 135 | 3,4.5,4.5,5,'none',40,?,?,?,'no',11,'average',?,'half',?,?,'good' 136 | 3,3,2,2.5,'tc',40,'none',?,5,'no',10,'below_average','yes','half','yes','full','bad' 137 | 2,2.5,2.5,?,?,38,'empl_contr',?,?,?,10,'average',?,?,?,?,'bad' 138 | 2,4,5,?,'none',40,'none',?,3,'no',10,'below_average','no','none',?,'none','bad' 139 | 3,2,2.5,2.1,'tc',40,'none',2,1,'no',10,'below_average','no','half','yes','full','bad' 140 | 2,2,2,?,'none',40,'none',?,?,'no',11,'average','yes','none','yes','full','bad' 141 | 1,2,?,?,'tc',40,'ret_allw',4,0,'no',11,'generous','no','none','no','none','bad' 142 | 1,2.8,?,?,'none',38,'empl_contr',2,3,'no',9,'below_average','yes','half',?,'none','bad' 143 | 3,2,2.5,2,?,37,'empl_contr',?,?,?,10,'average',?,?,'yes','none','bad' 144 | 2,4.5,4,?,'none',40,?,?,4,?,12,'average','yes','full','yes','half','good' 145 | 1,4,?,?,'none',?,'none',?,?,'yes',11,'average','no','none','no','none','bad' 146 | 2,2,3,?,'none',38,'empl_contr',?,?,'yes',12,'generous','yes','none','yes','full','bad' 147 | 2,2.5,2.5,?,'tc',39,'empl_contr',?,?,?,12,'average',?,?,'yes',?,'bad' 148 | 2,2.5,3,?,'tcf',40,'none',?,?,?,11,'below_average',?,?,'yes',?,'bad' 149 | 2,4,4,?,'none',40,'none',?,3,?,10,'below_average','no','none',?,'none','bad' 150 | 2,4.5,4,?,?,40,?,?,2,'no',10,'below_average','no','half',?,'half','bad' 151 | 2,4.5,4,?,'none',40,?,?,5,?,11,'average',?,'full','yes','full','good' 152 | 2,4.6,4.6,?,'tcf',38,?,?,?,?,?,?,'yes','half',?,'half','good' 153 | 2,5,4.5,?,'none',38,?,14,5,?,11,'below_average','yes',?,?,'full','good' 154 | 2,5.7,4.5,?,'none',40,'ret_allw',?,?,?,11,'average','yes','full','yes','full','good' 155 | 2,7,5.3,?,?,?,?,?,?,?,11,?,'yes','full',?,?,'good' 156 | 3,2,3,?,'tcf',?,'empl_contr',?,?,'yes',?,?,'yes','half','yes',?,'good' 157 | 3,3.5,4,4.5,'tcf',35,?,?,?,?,13,'generous',?,?,'yes','full','good' 158 | 3,4,3.5,?,'none',40,'empl_contr',?,6,?,11,'average','yes','full',?,'full','good' 159 | 3,5,4.4,?,'none',38,'empl_contr',10,6,?,11,'generous','yes',?,?,'full','good' 160 | 3,5,5,5,?,40,?,?,?,?,12,'average',?,'half','yes','half','good' 161 | 3,6,6,4,?,35,?,?,14,?,9,'generous','yes','full','yes','full','good' 162 | % 163 | % 164 | % 165 | -------------------------------------------------------------------------------- /data/points.txt: -------------------------------------------------------------------------------- 1 | 1.658985 4.285136 2 | -3.453687 3.424321 3 | 4.838138 -1.151539 4 | -5.379713 -3.362104 5 | 0.972564 2.924086 6 | -3.567919 1.531611 7 | 0.450614 -3.302219 8 | -3.487105 -1.724432 9 | 2.668759 1.594842 10 | -3.156485 3.191137 11 | 3.165506 -3.999838 12 | -2.786837 -3.099354 13 | 4.208187 2.984927 14 | -2.123337 2.943366 15 | 0.704199 -0.479481 16 | -0.392370 -3.963704 17 | 2.831667 1.574018 18 | -0.790153 3.343144 19 | 2.943496 -3.357075 20 | -3.195883 -2.283926 21 | 2.336445 2.875106 22 | -1.786345 2.554248 23 | 2.190101 -1.906020 24 | -3.403367 -2.778288 25 | 1.778124 3.880832 26 | -1.688346 2.230267 27 | 2.592976 -2.054368 28 | -4.007257 -3.207066 29 | 3.275154 2.957587 30 | -3.344465 2.603513 31 | 0.355083 -3.376585 32 | 1.852435 3.547351 33 | -2.078973 2.552013 34 | -0.993756 -0.884433 35 | 2.682252 4.007573 36 | -3.087776 2.878713 37 | -1.565978 -1.256985 38 | 2.441611 0.444826 39 | -0.659487 3.111284 40 | -0.459601 -2.618005 41 | 2.177680 2.387793 42 | -2.920969 2.917485 43 | -0.028814 -4.168078 44 | 3.625746 2.119041 45 | -3.912363 1.325108 46 | -0.551694 -2.814223 47 | 2.855808 3.483301 48 | -3.594448 2.856651 49 | 0.421993 -2.372646 50 | 1.650821 3.407572 51 | -2.082902 3.384412 52 | -0.718809 -2.492514 53 | 4.513623 3.841029 54 | -4.822011 4.607049 55 | -0.656297 -1.449872 56 | 1.919901 4.439368 57 | -3.287749 3.918836 58 | -1.576936 -2.977622 59 | 3.598143 1.975970 60 | -3.977329 4.900932 61 | -1.791080 -2.184517 62 | 3.914654 3.559303 63 | -1.910108 4.166946 64 | -1.226597 -3.317889 65 | 1.148946 3.345138 66 | -2.113864 3.548172 67 | 0.845762 -3.589788 68 | 2.629062 3.535831 69 | -1.640717 2.990517 70 | -1.881012 -2.485405 71 | 4.606999 3.510312 72 | -4.366462 4.023316 73 | 0.765015 -3.001270 74 | 3.121904 2.173988 75 | -4.025139 4.652310 76 | -0.559558 -3.840539 77 | 4.376754 4.863579 78 | -1.874308 4.032237 79 | -0.089337 -3.026809 80 | 3.997787 2.518662 81 | -3.082978 2.884822 82 | 0.845235 -3.454465 83 | 1.327224 3.358778 84 | -2.889949 3.596178 85 | -0.966018 -2.839827 86 | 2.960769 3.079555 87 | -3.275518 1.577068 88 | 0.639276 -3.412840 89 | 2.257734 3.387564 90 | -2.679011 0.785119 91 | 0.939512 -4.023563 92 | -3.674424 -2.261084 93 | 2.046259 2.735279 94 | -3.189470 1.780269 95 | 4.372646 -0.822248 96 | -2.579316 -3.497576 97 | 1.889034 5.190400 98 | -0.798747 2.185588 99 | 2.836520 -2.658556 100 | -3.837877 -3.253815 101 | 2.096701 3.886007 102 | -2.709034 2.923887 103 | 3.367037 -3.184789 104 | -2.121479 -4.232586 105 | 2.329546 3.179764 106 | -3.284816 3.273099 107 | 3.091414 -3.815232 108 | -3.762093 -2.432191 109 | 3.542056 2.778832 110 | -1.736822 4.241041 111 | 2.127073 -2.983680 112 | -4.323818 -3.938116 113 | 3.792121 5.135768 114 | -4.786473 3.358547 115 | 2.624081 -3.260715 116 | -4.009299 -2.978115 117 | 2.493525 1.963710 118 | -2.513661 2.642162 119 | 1.864375 -3.176309 120 | -3.171184 -3.572452 121 | 2.894220 2.489128 122 | -2.562539 2.884438 123 | 3.491078 -3.947487 124 | -2.565729 -2.012114 125 | 3.332948 3.983102 126 | -1.616805 3.573188 127 | 2.280615 -2.559444 128 | -2.651229 -3.103198 129 | 2.321395 3.154987 130 | -1.685703 2.939697 131 | 3.031012 -3.620252 132 | -4.599622 -2.185829 133 | 4.196223 1.126677 134 | -2.133863 3.093686 135 | 4.668892 -2.562705 136 | -2.793241 -2.149706 137 | 2.884105 3.043438 138 | -2.967647 2.848696 139 | 4.479332 -1.764772 140 | -4.905566 -2.911070 141 | 3.275154 2.957587 142 | -3.344465 2.603513 143 | 0.355083 -3.376585 144 | 1.852435 3.547351 145 | -2.078973 2.552013 146 | -0.993756 -0.884433 147 | 2.682252 4.007573 148 | -3.087776 2.878713 149 | -1.565978 -1.256985 150 | 2.441611 0.444826 151 | -0.659487 3.111284 152 | -0.459601 -2.618005 153 | 2.177680 2.387793 154 | -2.920969 2.917485 155 | -0.028814 -4.168078 156 | 3.625746 2.119041 157 | -3.912363 1.325108 158 | -0.551694 -2.814223 159 | 2.855808 3.483301 160 | -3.594448 2.856651 161 | 0.421993 -2.372646 162 | 1.650821 3.407572 163 | -2.082902 3.384412 164 | -0.718809 -2.492514 165 | 4.513623 3.841029 166 | -4.822011 4.607049 167 | -0.656297 -1.449872 168 | 1.919901 4.439368 169 | -3.287749 3.918836 170 | -1.576936 -2.977622 171 | 3.598143 1.975970 172 | -3.977329 4.900932 173 | -1.791080 -2.184517 174 | 3.914654 3.559303 175 | -1.910108 4.166946 176 | -1.226597 -3.317889 177 | 1.148946 3.345138 178 | -2.113864 3.548172 179 | 0.845762 -3.589788 180 | 2.629062 3.535831 181 | -1.640717 2.990517 182 | -1.881012 -2.485405 183 | 4.606999 3.510312 184 | -4.366462 4.023316 185 | 0.765015 -3.001270 186 | 3.121904 2.173988 187 | -4.025139 4.652310 188 | -0.559558 -3.840539 189 | 4.376754 4.863579 190 | -1.874308 4.032237 191 | -0.089337 -3.026809 192 | 3.997787 2.518662 193 | -3.082978 2.884822 194 | 0.845235 -3.454465 195 | 1.327224 3.358778 196 | -2.889949 3.596178 197 | -0.966018 -2.839827 198 | 2.960769 3.079555 199 | -3.275518 1.577068 200 | 0.639276 -3.412840 201 | -------------------------------------------------------------------------------- /data/top1000data.txt: -------------------------------------------------------------------------------- 1 | 39,41,48,228,229,230,231 2 | 36,38,39,232,233,234,235,236,237,238,239,240,241,242 3 | 39,243,244,245 4 | 39,41,48,246,247,248,249,250 5 | 39,48,65,251,252,253 6 | 48,230,254 7 | 39,48,66,78,242,255,256,257,258,259,260,261 8 | 39,48,262 9 | 36,38,39,225,263,264,265,266,267 10 | 39,242,268,269,270,271 11 | 39,48,79,146,237,256,272,273 12 | 274 13 | 32,38,39,48,275,276,277,278,279,280,281,282,283 14 | 39,48,68 15 | 38,39,48,95,96,105,284,285,286,287 16 | 39,41,48,212,288,289,290,291,292,293,294,295,296,297,298,299 17 | 300,301,302 18 | 36,38,39,105,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321 19 | 10,322,323,324,325,326,327 20 | 39,48,152,161,328 21 | 39,329,330 22 | 48,331,332,333,334,335,336,337,338,339 23 | 18,37,38,41,48,147,340,341,342,343,344,345,346,347 24 | 32,39,41,48,348,349,350 25 | 48,351,352,353,354,355,356,357,358,359,360,361,362,363,364 26 | 365,366 27 | 38,39,41,48,60,367,368,369,370,371,372,373,374,375 28 | 1,11,39,41,48,65,89,376,377,378,379,380,381,382,383,384,385 29 | 386,387,388,389 30 | 38,41,390 31 | 38,55,391 32 | 32,43,151,152,201,258,340,392,393,394,395,396,397,398,399 33 | 338,400,401,402,403,404 34 | 39,405,406,407 35 | 48,89,101,179,186,258,340,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422 36 | 39,45,48,248,423,424,425,426 37 | 141,344,427,428,429,430,431 38 | 39,432,433,434 39 | 39,48,65,435,436,437,438 40 | 15,23,36,38,48,123,229,291,331,337,390,439,440,441,442,443,444,445,446,447,448,449,450 41 | 48,451,452,453,454,455,456,457,458,459,460 42 | 37,38,48,147,174,461,462,463,464,465,466,467,468,469,470,471 43 | 39,48,472,473,474,475 44 | 39,41,476 45 | 477,478,479 46 | 39,161,480,481,482,483,484,485,486 47 | 32,39,41,48,152,237,396 48 | 38,39,41,105,110,487 49 | 60,381 50 | 11,39,48,255,488,489,490,491,492,493,494,495,496,497,498,499,500 51 | 39 52 | 41,110,501 53 | 32,38,39,48,170,178,502,503 54 | 38,41,504 55 | 225,232,347,505,506,507,508,509,510,511,512,513,514,515 56 | 38,39,41,48,170,189,225,270,516 57 | 39,48 58 | 38,39,281,517 59 | 2,518,519,520 60 | 310,521,522 61 | 41,523,524 62 | 48,310,416,521,522,525,526,527,528,529,530,531 63 | 38,39,110,532 64 | 18,38,47,48,89,258,293,338,365,533,534,535,536,537,538,539,540,541,542,543,544 65 | 39,48,106,107,264,308,384,498,545,546,547,548,549 66 | 39,48,312,550,551,552,553,554,555,556,557,558 67 | 32,39,41,48,89,129,255,357,367,368,408,491,552,559,560,561,562,563,564,565,566,567,568,569,570 68 | 38,170,201,571 69 | 39,41,48,572,573,574,575 70 | 38,39,161,281 71 | 36,38,48,78,155,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591 72 | 39,48,592,593,594,595,596,597,598,599,600 73 | 39,178,601,602 74 | 38,39,170,207,603,604,605,606 75 | 126,290,292,548,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624 76 | 625,626 77 | 39,48,627 78 | 39,41,48,134,272,475,628,629,630,631,632,633,634,635,636 79 | 39,48 80 | 38,39,41,48,89,110,637,638,639 81 | 38,48,170,242,255,389,604,640,641,642,643,644,645,646,647 82 | 36,38,39,271 83 | 39 84 | 39,89,186,543,648,649,650,651,652,653,654 85 | 41,511,655,656,657 86 | 39,48,658 87 | 39,48,201,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675 88 | 39,41,676,677,678,679 89 | 39,72,365 90 | 39,680,681 91 | 23,39,41,48,260,357,470,682,683,684,685,686,687,688,689,690,691,692,693 92 | 37,38,39,48,694 93 | 32,39,166,346,533,695,696,697,698,699,700,701,702,703,704 94 | 12,39,578,597,705,706,707,708,709,710,711,712 95 | 39,155,338,713,714 96 | 37,38,39,41,48,170,433,715,716,717 97 | 718,719 98 | 39,48,150,160,720 99 | 19,36,38,39,41,48,248,543,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740 100 | 41,48,741,742,743,744,745 101 | 10,746 102 | 9,39,41 103 | 747 104 | 359,748 105 | 9,227,715,749,750,751,752,753,754,755 106 | 39,48,68,649,756,757,758,759,760,761,762,763 107 | 209,211,242,618,637,651,764,765,766 108 | 647,767,768,769 109 | 39,41,770 110 | 38,286,359 111 | 38,110 112 | 19,39,284,420,771,772 113 | 39,48,773,774 114 | 37,38,110,334,775,776,777,778,779 115 | 11,39,41,48,67,102,225,228,278,564,780,781,782,783,784,785,786,787,788,789 116 | 38,39,41,790,791 117 | 38,39,48,286 118 | 38,39,41,47,48,61,150,312,441,561,622,649,792,793,794,795,796,797,798,799,800,801,802,803,804,805 119 | 48,768,806 120 | 38,41,170,420 121 | 38,286 122 | 39,41,48,807,808,809 123 | 32,41,420,810 124 | 39,48,89,811,812 125 | 0,39,48,65,120,181,730,813,814,815,816,817 126 | 22,32,39,818,819 127 | 39,41,806,820,821,822,823 128 | 39,48,179,490,570,572,649,723,824,825,826,827,828,829,830,831,832,833,834 129 | 36,38,483,492,740,835,836,837 130 | 38,838,839,840,841,842 131 | 48,798,843,844,845,846 132 | 9,39,48,704,767,809,847,848,849 133 | 9,38,39,170,330,714,850,851,852,853 134 | 39,41,48,854 135 | 237,855,856 136 | 39,45,48,522,535,681,857,858,859,860 137 | 39,48,861,862 138 | 39,48,359 139 | 38,39,48,110,161,863,864,865,866 140 | 441,645,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885 141 | 39,41,161,259,260,886,887,888 142 | 39,48,798,859,889,890 143 | 39,48,101,249,255,278,441,479,495,585,678,809,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906 144 | 39,907 145 | 48,65,908,909,910,911,912,913 146 | 38,39,48,170,303,494,914,915 147 | 31,39,41,93,916 148 | 209,917,918,919,920,921 149 | 32,38,39,41,47,191,209,348,390,422,441,547,645,877,922,923,924,925,926,927,928 150 | 32,48,270,511,750,929,930,931,932 151 | 32,38,39,41,42,170,178,213,272,511,589,933,934,935,936,937,938,939,940,941 152 | 39,48,942,943,944,945,946,947,948 153 | 38,39,48,286,949,950,951,952 154 | 39,41,349,606,665,953,954,955,956,957,958 155 | 10,39,41,48,959,960 156 | 9,48,96,107,529,549,606,789,961,962,963,964,965 157 | 39,269,384,966,967 158 | 25,32,41,117,185,232,248,340,503,530,533,762,927,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982 159 | 65,76,128,136,185,535,558,612,615,730,913,916,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005 160 | 1006,1007,1008 161 | 39,389,989,1009,1010 162 | 39,41,48,715,755,1011,1012,1013,1014,1015,1016,1017 163 | 65,101,175,176,178,197,282,301,623,803,806,1018,1019,1020,1021,1022,1023,1024,1025,1026 164 | 39,48,237,1027 165 | 38,84,107,108,110,133,237,249,493,589,604,675,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043 166 | 32,1044,1045,1046 167 | 39,45,48,200,259,282,359,365,396,577,589,593,751,1047,1048,1049,1050,1051 168 | 32,868,1052,1053,1054 169 | 39,41,48,348,352,454,533,693,754,1055,1056,1057 170 | 38,39,249,371,740 171 | 48,571,681,803,967,970,1031,1058,1059,1060,1061,1062 172 | 359,1063 173 | 32,38,48,170,186,365,413,475,548,636,1064,1065,1066,1067,1068,1069,1070 174 | 39,1071,1072,1073,1074,1075 175 | 48,77,101,242,571,616,822,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089 176 | 39,48,255,493,1090 177 | 38,39,48,328,504,984,1091 178 | 48,260,665 179 | 39,41,48,956,1031,1092,1093,1094 180 | 32 181 | 38,170,885,1095 182 | 433,1096 183 | 31,846,1097,1098,1099,1100,1101,1102,1103 184 | 39,48,828,1104,1105,1106,1107,1108,1109,1110,1111 185 | 38,39,48,170 186 | 38,39,41,390,1112,1113,1114,1115 187 | 38,39,41,72,105,208,346,535,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128 188 | 39,41,48,75,1000,1129,1130 189 | 32,612,976,1013,1131,1132,1133,1134,1135,1136,1137,1138 190 | 39,249,1139,1140,1141,1142,1143,1144 191 | 0,39,48 192 | 38,370 193 | 39,48,155,721,766,1062,1145 194 | 32,38,39,41,48,63,110,548,1146,1147 195 | 36,38,39,41,48,55,332,441,561,740,796,797,809,885,910,956,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158 196 | 36,38,48,255,859,1159,1160,1161 197 | 39,48,1003,1162,1163,1164 198 | 39,48,1165,1166,1167 199 | 20,1168,1169,1170,1171 200 | 38,39,41,48,105,1172,1173 201 | 32,39 202 | 48,251,694,809,1144,1174,1175,1176,1177,1178,1179,1180 203 | 48,766,781,996,1181,1182,1183 204 | 39,48,237,493,676,952,1145,1184,1185 205 | 39,48,192,1186 206 | 28,38,39,41,161,978,1187,1188,1189,1190 207 | 39,48,123,220,475,677,1191,1192,1193,1194 208 | 1190 209 | 39,48,730,987,1195,1196 210 | 39,1197 211 | 65,201,266,341,433,522,694,866,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207 212 | 68,261,628,1208,1209,1210 213 | 32,38,41,110,597,1211,1212,1213,1214 214 | 23,39,48,101,255,604,814,1031,1215,1216,1217,1218,1219 215 | 1220,1221 216 | 187,208,270,1051,1206,1222,1223,1224,1225,1226,1227,1228 217 | 38,39,41,48,357,397,533,661,674,790,993,1067,1082,1155,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247 218 | 32,39,43,48,67,117,132,441,475,550,665,789,1248,1249,1250,1251 219 | 38,170 220 | 39,48,677,775,834,1160,1180,1252,1253,1254,1255,1256,1257,1258,1259,1260 221 | 649,825,1261,1262,1263,1264,1265 222 | 39,1266,1267 223 | 39,41,48,1268,1269,1270,1271,1272,1273 224 | 39,48,60,200,208,676,713,952,1274,1275,1276 225 | 36,38,41,338,340,565,668,1277,1278,1279,1280,1281,1282,1283,1284 226 | 39,48,1153,1154,1285 227 | 48,151,152,189,255,525,938,1012,1286,1287,1288,1289,1290,1291 228 | 39,41,48 229 | 38,39,41,48,110,271,1146,1292 230 | 48,1293,1294 231 | 737,1295,1296 232 | 39,48,393,824,1297,1298,1299,1300,1301,1302,1303,1304,1305,1306,1307 233 | 475,830,1274,1308 234 | 37,38,39,41,48,76,445,558,587,739,973,1309,1310,1311,1312,1313,1314,1315 235 | 39,48,49,98,123,237,285,475,875,1018,1135,1316,1317,1318,1319,1320,1321,1322,1323,1324,1325,1326,1327,1328 236 | 1329,1330 237 | 32,185,691,890,1331,1332,1333 238 | 41,48,123,222,255,1334,1335,1336,1337,1338,1339,1340,1341,1342,1343 239 | 39,48,479,1344,1345 240 | 41,48,123,255,413,425,586,622,727,789,1049,1343,1346,1347,1348,1349,1350,1351,1352 241 | 39,48,1173,1353 242 | 38,110,1180,1354,1355 243 | 39,41,95,101,308,309,374,433,685,741,743,753,860,898,979,998,1079,1080,1153,1154,1269,1356,1357,1358,1359,1360,1361,1362,1363,1364,1365,1366,1367,1368,1369,1370,1371,1372,1373,1374,1375,1376,1377,1378,1379,1380,1381,1382,1383,1384,1385,1386 244 | 39,48,334,740,987,1042,1387,1388,1389,1390,1391 245 | 38,39,170,842 246 | 38,39,48,286,1063,1392 247 | 39,1368,1393,1394 248 | 38,48,170,1395 249 | 39,751 250 | 39,48,729,759,880,1236,1396,1397,1398,1399,1400,1401,1402 251 | 20,58,101,364,399,522,549,824,837,846,1004,1403,1404,1405,1406,1407,1408 252 | 749,1409 253 | 36,38,41,255,264,1410,1411 254 | 39,48,1412,1413,1414 255 | 39,521,622 256 | 67,68,69,604,720,1415,1416,1417,1418,1419,1420 257 | 38,39,41,48,101,170,475,714,856,1318,1421,1422,1423,1424,1425,1426 258 | 39,248,584,1043,1281,1427,1428,1429,1430,1431,1432 259 | 39,48,95,195,208,213,809,1216,1433,1434,1435 260 | 1436,1437,1438 261 | 39,264,464,616,750,973,1439,1440 262 | 62,300,1441 263 | 39,41,48,739,824,1442,1443 264 | 39,48,188,1444,1445,1446 265 | 39,45,48,89,334 266 | 301,883,1447,1448,1449,1450,1451,1452 267 | 39,334,1279 268 | 5,200,432,535,581,861,1387,1453,1454,1455,1456,1457,1458,1459,1460,1461,1462 269 | 38,39,290,840,859,1463,1464 270 | 10,39,48,49,1004,1142,1258,1465,1466,1467,1468,1469,1470 271 | 32,39,41,48,301,310,604,719,1082,1277,1471,1472,1473,1474,1475,1476,1477,1478,1479,1480,1481 272 | 36,38,39,270,1129 273 | 39,41,184,204,1387,1465,1482,1483,1484,1485,1486 274 | 1487 275 | 38,39,60,371,1488 276 | 36,38,48,381,1489,1490 277 | 39,41,48,381,1491 278 | 39,48,269,1163,1446,1492,1493,1494,1495,1496,1497,1498 279 | 39,332,1499,1500,1501 280 | 48 281 | 39,41,248,673,1191,1502 282 | 32,136,548,549,1503 283 | 39,302,1166,1191,1330,1504 284 | 39,48,49,1505,1506,1507,1508 285 | 30,39,41,48,593,1235,1509,1510,1511,1512,1513,1514,1515,1516,1517 286 | 38,39,48,49,56,334,740,1402,1518,1519,1520 287 | 1521 288 | 48,1522,1523,1524 289 | 38,48,67,68,76,504,612,789,1525,1526 290 | 39,195,1140,1527 291 | 38,170,1528,1529 292 | 39,48,264,423,1004,1104,1530 293 | 32,39,1531,1532 294 | 717 295 | 39,48,174,441,801,1533,1534,1535,1536 296 | 156,161,310,932,1537,1538 297 | 39,48,714,1307,1436,1530,1539,1540,1541,1542,1543 298 | 9,38,39,48,65,155,170,408,420,479,589,778,824,1062,1267,1342,1433,1544,1545,1546,1547,1548,1549,1550,1551 299 | 1552 300 | 39 301 | 39,48,49,1553 302 | 39,41,331,1554,1555,1556,1557 303 | 39,48,242 304 | 101,289,522,525,758,778,824,1558,1559,1560 305 | 101,378,669,794,824,1561,1562 306 | 32,39,48,141,381,910,1135,1174,1344,1563,1564,1565,1566,1567 307 | 39,793,915,1568 308 | 39,41,94,198,340,548,677,1347,1569,1570,1571,1572,1573,1574,1575,1576,1577 309 | 39,185,261,1291,1578 310 | 32,39,41,48,425,533,592,723,749,1313,1322,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589 311 | 36,38,39,41,89,288,384,479,535,611,966,1590,1591,1592,1593,1594,1595,1596,1597,1598,1599 312 | 38,41,48,170,825,904,1264,1600,1601,1602,1603,1604,1605,1606,1607,1608 313 | 38,39,41,110,170,1609,1610 314 | 48,1611,1612 315 | 38,39,371,1609,1613,1614 316 | 38,48,170 317 | 39,48,246,550,734,930,1146,1615,1616 318 | 39,41,255,259,340,396,535,974,986,1014,1135,1353,1617,1618,1619,1620,1621,1622,1623,1624,1625,1626,1627 319 | 39,41,48,60,155,182,246,535,589,1274,1319,1628,1629 320 | 36,38,39,48,1630,1631 321 | 39,48,49,96,543,639,677,812,924,1004,1144,1414,1593,1629,1632,1633,1634,1635,1636,1637,1638,1639,1640 322 | 1 323 | 39,326,361,665,1484,1641,1642,1643,1644,1645,1646,1647 324 | 39,48,237,1278,1648 325 | 39,41,1649 326 | 727,1650,1651,1652,1653,1654 327 | 38,39,41,48,89,110,495,592,1291,1655,1656 328 | 59,100,161,232,282,314,378,490,492,598,604,1024,1198,1211,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,1667,1668,1669 329 | 39,48,61,550,598,866,1670,1671 330 | 32,38,39,105,413,824,1363,1672,1673,1674,1675,1676,1677,1678,1679 331 | 39,48,648,1680,1681,1682,1683,1684,1685,1686 332 | 39,41,185,234,1474,1687,1688,1689,1690,1691,1692 333 | 39,297,522,544,1693,1694,1695,1696,1697,1698,1699 334 | 32,36,38,39,740 335 | 38,39,41,48,89,155,161,604,767,790,821,968,1198,1233,1433,1700 336 | 60,101,260,345,418,423,544,640,1113,1121,1616,1701,1702,1703,1704 337 | 39,549,961,1232,1313,1705,1706 338 | 38,41,48,110,501,533,616,653,1105,1251,1557,1707,1708,1709,1710,1711,1712,1713,1714,1715,1716,1717 339 | 39,41,48,276,336,344,570,1130,1207,1465,1601,1718,1719,1720,1721,1722 340 | 32,39,48,299,1011,1723,1724 341 | 117,950,1725,1726 342 | 38,49,681,1232,1343,1727,1728 343 | 39,846,944,1198 344 | 32,48,862 345 | 103,1729,1730,1731 346 | 32,38,1590 347 | 32,38,39,41,170,271,740,1138,1696,1732 348 | 32,41,48,485,542,677,1274,1352,1733,1734,1735,1736,1737,1738,1739 349 | 38,39,41,110,903,978,1740,1741,1742 350 | 36,38,39,41,48,150,248,379,548,570,1214,1642,1743,1744,1745,1746,1747 351 | 161,384,670 352 | 39,41,48,677,1748,1749,1750 353 | 15,99,101,117,180,196,237,310,363,441,550,731,805,976,978,1070,1082,1112,1160,1233,1390,1456,1528,1657,1751,1752,1753,1754,1755,1756,1757,1758,1759,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769 354 | 26,38,39,56,123,276,587,772,947,1517,1770,1771,1772,1773,1774,1775 355 | 39,48,220,592,677,1015,1776,1777,1778,1779,1780,1781,1782,1783 356 | 39,48,179,475,703,727,1631,1699,1770,1775,1784,1785,1786,1787,1788,1789 357 | 38,39,170,1790,1791,1792,1793 358 | 39,48,155,206,535,1764,1794,1795 359 | 39,48,1796,1797 360 | 38,105,1798 361 | 38,371,1799,1800 362 | 39,195,255,789,1002,1528,1690,1758,1801,1802,1803,1804,1805,1806,1807 363 | 39,41,48,251,958,1808,1809,1810,1811 364 | 41,48,361,458,689,1105,1812,1813,1814,1815 365 | 39,123,397,414,930,1361,1816,1817,1818,1819,1820,1821,1822,1823,1824 366 | 38,48,110,201,1688 367 | 38,48,371,414,835,878,1825,1826,1827,1828,1829 368 | 48,896,1830,1831,1832 369 | 39 370 | 48,249,1435,1833,1834,1835 371 | 38,39,41,48,170,266,357,438,915,1280,1836,1837,1838,1839,1840,1841,1842,1843,1844 372 | 39,89,201,359,572,978,1393,1435,1845,1846,1847 373 | 32,39,41,208,503,587,835,1411,1541,1657,1848,1849,1850,1851,1852,1853 374 | 25,39,48,91,150,237,359,549,571,616,807,831,878,885,961,1090,1291,1598,1854,1855,1856,1857,1858,1859 375 | 39,740,1010,1860,1861 376 | 1862,1863 377 | 39,48,89,430,824,1864,1865,1866,1867 378 | 32,41,48,65,66,313,338,475,661,1336,1344,1868,1869,1870,1871,1872 379 | 237,794,892,1475,1700,1873,1874,1875,1876,1877 380 | 39,41,65,612,808,956,1878,1879,1880,1881,1882 381 | 38,55,979,1883,1884,1885,1886,1887 382 | 39,249,1360,1888,1889,1890 383 | 39,48,303 384 | 352,1108 385 | 1891 386 | 38,39,41,396,548,1590,1872 387 | 39,939 388 | 38,39,41,45,48,89,101,170,237,384,592,809,1000,1239,1327,1436,1552 389 | 32,38,39,41,809,885,1727 390 | 32,39,48,750,909,1672,1892,1893,1894 391 | 39,48,54,78,89,101,544,586,785,1068,1880,1895 392 | 350,599,1896 393 | 89,1897,1898 394 | 39,96,284,1372,1899,1900,1901,1902,1903 395 | 39,48,1814,1904 396 | 38,39,41,48,65,71,89,249,359,365,489,571,741,805,1103,1428,1481,1513,1576,1578,1831,1905,1906,1907,1908,1909,1910,1911,1912,1913,1914,1915,1916 397 | 216,1917 398 | 32,39,41,48,107,136,340,436,447,576,833,1105,1135,1481,1498,1918,1919,1920,1921,1922,1923 399 | 48,1924,1925,1926,1927 400 | 38,39,41,48,110,800,941 401 | 1,48,864,1194,1432,1928 402 | 805,991,1000,1417,1600,1929,1930,1931,1932,1933 403 | 27,41,269,379,1591,1934 404 | 39,48,255,310,581,639,713,1935,1936,1937,1938 405 | 39,41,48 406 | 39,48,116,439,989,1939 407 | 1940,1941 408 | 38,371,498,518,950,1011,1714,1792,1922,1942,1943,1944,1945,1946 409 | 39,89,703,903,968,1233,1435,1947 410 | 310,1666,1736,1948,1949,1950 411 | 39,41,1951 412 | 33,39,48,65,78,255,574,1952,1953,1954,1955,1956 413 | 1227,1611,1957,1958,1959 414 | 32,39,1745,1960,1961 415 | 32,39,152 416 | 39,1962 417 | 38,39,48,323,371,1963,1964 418 | 39,734,1965 419 | 39,48,761,1591,1966 420 | 32,48,62,1135,1272,1967,1968,1969,1970,1971,1972 421 | 32,39,41,271,421,1973 422 | 37,38,41,89,184,341,669,1974,1975 423 | 237,1476,1612,1976,1977,1978 424 | 824,1192,1642,1979,1980 425 | 39,107,108,340,464,570,612,856,1979,1980,1981,1982,1983 426 | 32,1984,1985 427 | 39,48,612,1578 428 | 39,41 429 | 48,78,438 430 | 39,499 431 | 38,170,200,963,1986,1987 432 | 255 433 | 242,1988,1989 434 | 39,48,431,549,993,1488 435 | 39,89,979,1140,1547,1990,1991 436 | 39,488,548,1196,1440,1992,1993,1994,1995,1996,1997,1998 437 | 32,39,48,334,363,589,604,637,1051,1999,2000,2001,2002 438 | 39,48 439 | 1198 440 | 381,846,2003,2004,2005 441 | 48,865,1809,2006 442 | 39,41,48,259,269,564,611,1135,1347,1710,1853,1969,2007,2008,2009,2010,2011,2012 443 | 32,205,570,968,2013 444 | 39,48,184,572,1094,1265,1585,2014,2015,2016,2017 445 | 38,39,110 446 | 32,37,38,39,41,89,903,1459,2018,2019,2020,2021,2022 447 | 36,38,117,450,550,1249 448 | 265,321,2023 449 | 38,39,170,740,866,898,1176,1185,2024,2025 450 | 38,117,123,170,340,550,976,1309,1876,2026,2027,2028,2029,2030,2031,2032,2033,2034 451 | 32,41,178,441,511 452 | 37,38,39,766,1178,1438,1588,1696,2035,2036,2037,2038,2039,2040,2041,2042 453 | 48,136,441,2043,2044 454 | 359,2045 455 | 2046 456 | 142,1568 457 | 2047 458 | 32,2048 459 | 18,39,947 460 | 38,39,170 461 | 36,38,39,48,274,976,1327,1654,1779,2049,2050,2051,2052,2053,2054,2055,2056,2057 462 | 38,39,41,48,475,1590 463 | 39,1334,1556,2058,2059,2060,2061 464 | 922,2062 465 | 39,249,278,2063 466 | 39,413,889,979,1198,1867,2064,2065 467 | 9,31,39,208,302,310,664,950,1198,1913,2006,2066,2067,2068 468 | 39,48 469 | 38,41,286,1425 470 | 39,41,48,1990 471 | 94,164,166,208,247,269,365,570,623,683,684,692,715,851,1065,1198,1233,1294,1404,1484,1569,2069,2070,2071,2072,2073,2074,2075,2076,2077,2078,2079,2080,2081,2082,2083,2084 472 | 39 473 | 32,39,131,223,1435,1530,2085 474 | 41,1600,2086,2087,2088 475 | 9,39,41,48,249,273,297,641,1210,1349,1532,1827,2064,2089,2090,2091,2092,2093,2094,2095,2096 476 | 39,48,504,809 477 | 39,41,48,65,80,464,984,2097,2098,2099,2100 478 | 39,41,48,352,547,676,952,1859,2101,2102,2103 479 | 39,41,95,96,341,384,960,1091,1899,2104 480 | 11,31,48,117,640,922,976,1463,1637,1792,2105,2106 481 | 32,48,636,749,1320,1350,2107 482 | 39,48,475,1345,2108 483 | 39,41,740,1791,1829,2109,2110 484 | 32,980,1658,2111,2112,2113 485 | 38,39,95,170,2114 486 | 22,123,692,982,1410,2115,2116,2117,2118,2119,2120,2121,2122,2123,2124,2125,2126 487 | 19,43,48,349,550,615,813,861,959,976,1274,1369,1494,1503,1538,1624,1750,1815,2002,2060,2127,2128,2129,2130,2131,2132,2133,2134,2135,2136,2137,2138,2139,2140,2141,2142,2143,2144,2145,2146,2147,2148,2149,2150 488 | 41,48,147,150,185,200,311,313,439,451,543,739,763,817,851,904,926,1082,1159,1233,1393,1399,1663,2011,2074,2151,2152,2153,2154,2155,2156,2157,2158,2159,2160,2161,2162 489 | 39,269,657,1361,1742,2163,2164 490 | 38,39,41,48,286 491 | 38,39,41,48,110,123,237,478,2165 492 | 38,39,185,956,1415,1529,2166,2167 493 | 39,48,246 494 | 39,41,749,1578,1598,2168,2169,2170 495 | 38,68,281,535,1013,1864,1877,2171,2172 496 | 441,1415,2173 497 | 23,39,78,101,167,682,1184,2174,2175,2176 498 | 104,156,173,264,643,1899,2177,2178,2179,2180 499 | 17,32,39,60,604,916,2181,2182,2183 500 | 39,48,200,237,256,673,783,1953,2154,2184,2185,2186,2187,2188,2189,2190,2191 501 | 38,47,48,381,1349,1713,2192 502 | 39,740,1659 503 | 48,772,2193 504 | 39,475,522,2194 505 | 41,48,65,95,852,1011,1668,2195,2196,2197 506 | 32,39,41,48,101,127,2043 507 | 36,38,41,2198,2199 508 | 39,89,522,750,1221,1951,2200,2201,2202,2203,2204 509 | 38,39,41,48,390,824,855,992,2205,2206 510 | 39,246,499,1876,2207,2208 511 | 38,39,504,993,1435,2098 512 | 39,41,48,89,310 513 | 89,660,1192,2209,2210,2211 514 | 37,38,39,41,48,255,449,591,1072,1329,1696 515 | 38,170,220,232,1469,2212 516 | 39,341 517 | 48,2213 518 | 36,38,39,40,41,42,44,45,76,104,249,340,346,1417,1804,2122,2214,2215,2216,2217,2218,2219 519 | 273,522,1659,1688,1930,2169,2220,2221,2222,2223,2224 520 | 32,38,41,48,88,128,152,259,271,371,664,749,855,956,2204,2225,2226,2227,2228,2229,2230,2231,2232,2233,2234,2235,2236,2237,2238 521 | 32,246,1744,2239,2240,2241,2242,2243 522 | 39,189,549,675,899,978,1472,2244,2245,2246,2247,2248,2249,2250,2251,2252,2253,2254,2255,2256,2257,2258,2259,2260 523 | 38,39,41,48,1188,1424,1936,2261,2262,2263,2264,2265,2266 524 | 38,39,48,110,1327,1552,1659,2267,2268,2269 525 | 39,522,1242 526 | 32,39,48,264,282,2270 527 | 39,48,2271,2272,2273 528 | 491,706,1838,1877,2274,2275 529 | 2199,2276 530 | 38,39,48,68,170,178,310,643,723,1327,1683,2277 531 | 39,479,570,606,720,1393,2278,2279,2280,2281,2282,2283,2284 532 | 39,845,2285,2286 533 | 38,41,48,248,488,705,790,1591,2287 534 | 38,104,110,237,570,719,1473,1709 535 | 32,39,41,475,627,1484,2288,2289,2290,2291,2292 536 | 32,39,349,1103,1207,1456,1762,2293,2294,2295,2296 537 | 39,156,384,711,1508,1911,2297,2298 538 | 38,41,56,110,2299 539 | 184,187,339,2087,2300,2301,2302,2303,2304,2305,2306,2307,2308,2309 540 | 38,110,2310 541 | 39,513 542 | 38,48,170,350 543 | 38,39,41,48,110,1327 544 | 39,48,312,795,796,1818,2311,2312 545 | 39,71,604,2313 546 | 39,113,408,413,654,944,1735,2212,2314,2315,2316,2317,2318,2319 547 | 2320,2321 548 | 38,39,65,72,80,95,150,170,586,723,970,1124,1342,2322,2323,2324,2325,2326,2327 549 | 37,38,2328,2329 550 | 60 551 | 39,1121,1146,1232,1956,2330 552 | 36,38,39,41,721,952,976,1249,1436,2106,2331 553 | 32,38,156,266,286,803,1365,2332 554 | 163,1144,2333 555 | 38,110,1699,2334 556 | 38,48,69,170,212,463,546,703,979,1161,1393,1438,1611,2259,2335,2336,2337,2338,2339,2340,2341 557 | 48,434,1327,2342,2343 558 | 39,41,48,526,533,681,1425,2015,2344 559 | 11,39,48,60,133,310,330,967,1060,1081,1137,2345,2346,2347,2348,2349,2350 560 | 38,170 561 | 36,38,39,41,48,65,255,310,338,491,589,694,1198,1929,2166,2186,2351,2352,2353 562 | 39,48,104,147,179,1179,2351,2354,2355,2356 563 | 39,225,242 564 | 38,39,41,48,62,79,250,259,269,345,639,677,790,1589,2357 565 | 32,1736,1916,2358 566 | 39,2359,2360 567 | 36,39,173,408,525,1198,2361,2362 568 | 48,1060,2363,2364 569 | 2365 570 | 585,740,2112,2366,2367,2368 571 | 39,48,424,522,753,778,1415,2369,2370,2371 572 | 39,749,976,1249,1349,1409,1867,2354,2372,2373,2374,2375 573 | 1126,2376 574 | 38,110 575 | 41,79,475,855,1090,1280,1629,2377,2378,2379 576 | 2380,2381,2382,2383 577 | 39,48,51,1973 578 | 2384 579 | 76,832,916,1198,1411,1593,1596,1659,1814,2385,2386,2387,2388,2389,2390 580 | 39,48,751 581 | 39,48,246,515,565,702,970,1814,1972,2391,2392,2393 582 | 38,41,504,1588 583 | 38,39,170,570,1463,1464,2394 584 | 501 585 | 606 586 | 39,1526,2263,2395,2396,2397 587 | 39,338,993,1585,2238,2398,2399 588 | 39,48,369,696,697,742,743,1044,1930,2400,2401,2402 589 | 39,48,1052,1104,1187,2403,2404 590 | 41,48,79,749,2405,2406 591 | 39,41,270,797,1112,1153,1154,1282,1384,1385,2238,2407 592 | 19,39,45,65,68,175,349,418,640,831,842,1198,1230,1291,1314,1704,2065,2408,2409,2410 593 | 39,1011,2024,2411,2412 594 | 39,292,690,789,1535,2364,2413,2414,2415 595 | 39 596 | 32,39,48,75,491,855,887,1477,2416,2417 597 | 39,48,1930 598 | 39,48,483,2418,2419,2420 599 | 37,38,39,41,48,1138,2390 600 | 32,65,445,1147,1264,2421 601 | 39,41,265,302,505,1255,2290 602 | 1,39,41,60,271,413,789,839,1012,1233,1291,2422,2423,2424,2425,2426,2427,2428,2429 603 | 32,39,48,1469,2430,2431 604 | 505,2432 605 | 36,38,39,41,48,783,1327,1456,2433,2434 606 | 36,38,170,1102,1915,1916,2435,2436 607 | 32,39,41,48,279,855,1524,2437 608 | 39,389 609 | 30,39,41,95,441,1198,1206,2310,2438,2439,2440,2441,2442 610 | 179,259,381,463,677,877,943,1327,2443,2444,2445,2446,2447 611 | 36,39,79,351,511,1659,2448,2449 612 | 39,225,271,2225,2450 613 | 327,438,716 614 | 8,39,48,49,117,124,212,550,606,772,855,976,1140,1230,1468,1485,1789,1872,2072,2096,2265,2358,2420,2451,2452,2453,2454,2455,2456,2457,2458,2459 615 | 438,473,601,958,2225 616 | 22,38,48,110,164,166,208,270,475,515,921,1095,1318,1779,2049,2084,2223,2460,2461,2462,2463,2464,2465,2466 617 | 236,1327,2467,2468 618 | 38,39,348,371,772,1709,1783,2117,2469,2470,2471,2472,2473 619 | 141 620 | 39,48,1630,2290 621 | 39,41,597,2474 622 | 39,592,989 623 | 570,2039,2475,2476 624 | 47,664,2477 625 | 39,664,1327 626 | 37,38,39,48,170,183,2478,2479 627 | 36,38,39 628 | 39,41,48 629 | 38,39,48,110,855,1239,2480,2481 630 | 39,48,1293 631 | 39,48,1146 632 | 39,41,48,155,179,222,249,269,279,289,324,548,772,793,899,958,1004,1260,1327,1433,1736,1936,2046,2329,2482,2483,2484,2485,2486,2487,2488,2489,2490,2491,2492,2493 633 | 48,2478,2494 634 | 38,105,281 635 | 39,1327,2495 636 | 32,39,41,124,147,855,1976,2254,2496,2497,2498,2499 637 | 21,31,32,38,286,381,636,677,1070,1262,2500,2501,2502,2503,2504 638 | 36,38,39,555,757,2170,2225,2310,2505,2506,2507 639 | 38,39,41,48,49,56,186,281,357,390,681,877,1028,1068,1363,1392,1881,2029,2241,2263,2329,2436,2508,2509,2510,2511,2512,2513,2514,2515,2516,2517,2518,2519 640 | 39,48,475,1003,1352,1532,2129,2520 641 | 39,41,48,101,310,398,615,1020,1222,1956,2030,2350,2521,2522,2523,2524,2525 642 | 39,48,65,227,271,340,560,666,1130,1176,1338,1339,1373,1796,1902,2147,2526,2527,2528,2529,2530,2531,2532,2533,2534,2535,2536,2537,2538,2539 643 | 124,546,694,1327,2080,2540,2541,2542 644 | 39,41,48,89,2543 645 | 39,1327 646 | 11,39,41,433,664,1655,2544,2545,2546 647 | 48,664,855,2547,2548,2549 648 | 39,48,345,1996,2550 649 | 38,39,170,805,2551 650 | 41,79,201,225,783,848,878,1056,1198,1893,2552,2553,2554 651 | 123,824,2555 652 | 664,674,855,2215,2556,2557 653 | 41,488,716,2558,2559,2560 654 | 38,39,110,1209 655 | 32,38,39,48,110,1179 656 | 48,101,352,413,464,513,661,729,1015,1223,1327,1339,2529,2561,2562,2563,2564 657 | 39,48,65,146 658 | 48,1198,1327,1435,2058,2375,2565 659 | 39,48,1327 660 | 32,38,110 661 | 30,31,39,41,48,65,117,195,379,522,976,1315,2160,2566,2567 662 | 39,170,511 663 | 23,259,1327 664 | 39,626,812,1068,1991,2091,2310,2568 665 | 27,381,1476,2210 666 | 270,389,1956,2205,2329,2569,2570 667 | 15,251,261,380,383,398,406,492,522,1067,1197,1257,2187,2571,2572,2573,2574,2575 668 | 32,38,39,41,48,110,533 669 | 39,41,48 670 | 39,349,794 671 | 225,548,681,930 672 | 32,38,39,48,49,492,548,591,664,773,774,820,1179,1188,1354,1378,1380,2026,2117,2431,2576,2577,2578,2579,2580,2581,2582,2583,2584,2585,2586,2587,2588,2589 673 | 39,76,432,664,2590 674 | 39,582,1709,2154,2199 675 | 39,48,89,201,255,290,785,839,1000,1327,1598,1879,2591,2592,2593,2594,2595,2596,2597,2598,2599 676 | 508,1655,1659,2600 677 | 37,38,39,48,855,1222,2601 678 | 39,1110,1254,1593,2139,2378,2573,2602,2603,2604,2605,2606,2607,2608 679 | 38,117,170,179,730,976,1014,1015,1198,1681,2118,2215,2354,2463,2609,2610,2611,2612,2613,2614,2615,2616,2617,2618,2619 680 | 32,123,232,237,478,548,708,779,878,1113,1585,1702,1994,2030,2053,2521,2602,2620,2621,2622,2623 681 | 32,38,39,48,55,664,851,1069,1297,1327,1715,2344,2395,2624,2625,2626,2627 682 | 39,41,48,1327,1903,2240,2616,2628,2629,2630 683 | 39,48,123,592,938,1966,2631,2632 684 | 36,38,39,41 685 | 39,1252,1659,2259,2520,2633 686 | 38,48,110 687 | 39,48,2259,2634 688 | 39,48 689 | 39,41,65,301,379,1327,2135,2635 690 | 32,48,1263,1483,1516,1630,1947,1956,2636,2637,2638,2639,2640,2641 691 | 2072,2180,2642,2643 692 | 48,407,622,643,824,2128,2165,2636,2644,2645,2646,2647,2648 693 | 36,38,170 694 | 48,49,213,522,589,703,1552,1964,2106,2649,2650 695 | 32,38,65,90,592,677,696,699,744,751,766,1054,1349,1609,1739,1831,1914,2034,2651,2652,2653,2654,2655,2656 696 | 39,1783 697 | 39,41,310,1327,2657 698 | 1,39,948,1783,2350 699 | 39,41,48,2658,2659,2660 700 | 39,48 701 | 39,48,79,389,511,925,927,1089,1281,1327,1543,2661,2662,2663 702 | 9,22,39,101,179,451,521,542,651,704,763,947,970,986,1020,1300,1301,1302,1303,1402,1847,2107,2116,2119,2389,2436,2511,2629,2664,2665,2666,2667,2668,2669,2670,2671,2672,2673,2674,2675 703 | 39 704 | 38,39,41,48,110,2676 705 | 36,38,39,48,272,364,533,643,1233,1327,1475,1479,1824,2677,2678 706 | 39,237,1327 707 | 1916,2679 708 | 48,70,570,1638,1814,1872,2680,2681,2682,2683,2684 709 | 48,285,592,1543,2685,2686,2687 710 | 2351,2688,2689 711 | 48,89,98,101,150,396,618,817,1124,1925,2238,2540,2690,2691,2692 712 | 39 713 | 32,39,48,426,1029,2693,2694,2695,2696,2697 714 | 32,39,2698 715 | 1191,2699 716 | 39,872,1746,1827,2700 717 | 27,625,866,916,1011,1159,1499,1594,2182,2623,2701,2702,2703,2704,2705,2706 718 | 32,48,511,855,2707,2708,2709 719 | 18,39,45,101,310,565,581,926,2654,2710 720 | 39,102,425,731,855,1659,1899,2711 721 | 38,39,41,156,170,195,349,671,1327,1390,1437,1536,2164,2208,2370,2712,2713,2714,2715 722 | 255,1393,2201 723 | 48,315,885,1865,2554,2716,2717,2718,2719 724 | 38,39,41,48,110,1529,2720 725 | 39,41,79,681,694,713,1185,1327,1853,1976,2080,2151,2721,2722 726 | 39,2723 727 | 48,89,979,1105,1123,1140,1348,1940,2075,2365,2680,2724,2725,2726 728 | 38,39,41,101,170,273,334,438,740 729 | 39,41,48 730 | 48,887,1067,2262,2489,2525,2727,2728,2729,2730,2731,2732,2733,2734 731 | 39,218,589,885,1028,1473,2064,2735,2736 732 | 37,38,1499,2737,2738 733 | 39,41,48,271,824,1615,1806,2367 734 | 32,48 735 | 1198,1867,2739 736 | 32,39,271 737 | 184,2041 738 | 32,39,48,283,310,374,434,571,750,753,924,968,1248,1327,1767,1811,2506,2635,2650,2740,2741,2742 739 | 32,39,41,79,271,310,1408,1479,1481,2743 740 | 38,56,2463 741 | 39,41,48,89,572,619,740,1013,1051,1053,1264,1327,1775,2069,2082,2304,2521,2744,2745,2746,2747,2748 742 | 32,38,39,249,840,1393 743 | 41,48,92,103,739,773,2749 744 | 39,41,284,694,932,1899 745 | 38,370,390,814,1344,1495,2194 746 | 39,48,589,1233,1396,2750,2751,2752,2753 747 | 39,48,373,2552,2754 748 | 39,2755,2756,2757 749 | 39 750 | 43,1291 751 | 39 752 | 9,32,48,242,572,598,662,2058,2205,2758,2759,2760,2761,2762 753 | 58,147,179,413,452,778,1106,1404,2120,2132,2180,2602,2604,2763,2764,2765,2766,2767 754 | 570,664,1096,1486,1959,2692,2768 755 | 48,381,521,1499 756 | 1873,2237,2769,2770 757 | 38,39,41,55,677,2490,2771,2772 758 | 39,41,48,703,970 759 | 1327,2773,2774,2775,2776,2777 760 | 155,541,558,589,2778 761 | 48,1327,1891,2779,2780 762 | 39,413,1966 763 | 39,48,152,278,669,926,1327,2781,2782,2783,2784 764 | 39,2785 765 | 41,812,1014,1094,1361 766 | 36,39,82,92,286,441,809,856,1027,1393,2097,2269,2353,2569,2786,2787 767 | 89,358,623,1087,1327,2220,2788,2789 768 | 32,48,2790 769 | 38,39,41,110,350,694,1865,2469 770 | 11,38,39,41,48,78,89,94,312,357,370,379,475,533,553,604,615,664,673,757,793,797,809,857,969,1144,1154,1196,1233,1489,1659,1903,1986,1996,2164,2708,2791,2792,2793,2794,2795,2796,2797,2798,2799,2800 771 | 39,48,49,338,1659,2801 772 | 352,1859,2315,2510 773 | 38,41,161,1107,2802,2803,2804,2805,2806 774 | 39,117,647,1034,2013,2269,2685,2807,2808 775 | 38,39,48,101,110,438,1190,2703,2708,2809 776 | 39,48,449,479,856,871,2067,2457,2810,2811,2812,2813 777 | 48 778 | 39,48,93,123,255,871,2812,2814,2815,2816 779 | 39,98,589,1350 780 | 39,65,201,308,319,589,639,664,1269,1291,2065,2072,2817,2818,2819 781 | 39,61,65,612,1227,1543,1600,1980,2342,2820,2821 782 | 37,38,39,48,65,255,2032 783 | 39,41,48,2822,2823 784 | 237,1833,1858,2824,2825,2826,2827,2828,2829 785 | 32,39,123,475,926,1013,1235,1327,1607,2830,2831 786 | 36,38,967,1060 787 | 32,522,2200,2832 788 | 185,186,614,1980,2358,2833,2834,2835 789 | 39,237,1010,1809 790 | 36,38,39,48,864,1327,2836,2837 791 | 39,48,49,249,264,727,1992,2079,2780,2838,2839 792 | 36,38,48,334,438,2225 793 | 38,39,48,371,438,550,1908,2446,2840 794 | 32,39,48,147,179,186,550,1564,2430,2841,2842 795 | 32,39,41,2843,2844 796 | 39,41,309,947,1080,1379,1380,2164,2812,2845 797 | 32,37,38,43,161,438,2846 798 | 32,80,414,500,1229,2100,2658,2847,2848 799 | 39,41,48,156,249,264,310,1209,1345,1360,1520,2849,2850,2851 800 | 48,123,203,243,581,703,770,939,1229,1387,1678,1728,1789,1994,2852,2853,2854,2855,2856 801 | 39,109,196,1575,1612,2857,2858,2859 802 | 1824,2860,2861 803 | 39,48,199,249,255,533,623,734,824,885,893,1736,2862,2863,2864,2865,2866 804 | 39,48,1194,1814,2867,2868,2869 805 | 38,39,41,117,170,757,976,1198,1327,1469,2362,2364,2870,2871,2872 806 | 9,39,41,348,987,1023,1233,1994,2048,2156,2408,2515,2792,2853,2873,2874,2875,2876,2877,2878,2879,2880,2881 807 | 39,41,206,809,2882 808 | 36,38,39,41,101,259,794,952,2883 809 | 39,48,158,159,260,570,653,763,1259,1409,1425,1536,1659,1742,2171,2884,2885,2886 810 | 227,229,612,664,729,730,731,1004,1179,1281,1327,1598,1698,1878,2043,2329,2887,2888,2889,2890,2891 811 | 92,186,295,413,798,829,1011,1294,1417,1593,1936,2388,2852,2854,2892,2893,2894,2895,2896,2897,2898,2899,2900,2901,2902,2903,2904 812 | 11,38,39,41,76,209,345,425,466,475,833,854,878,965,1282,1557,1961,2805,2905,2906 813 | 38,39,48,1529 814 | 39,48,438,475,550,940,1249,1393,2907,2908 815 | 38,170 816 | 48,978,979,2344,2909 817 | 438,1283,2910,2911,2912 818 | 41,65,592,981,1859,2913,2914 819 | 39,48,2187,2915 820 | 41,48,310,422,489,532,1239,1659,2352,2916,2917 821 | 155,438,589,1333,2918 822 | 39,41,1327 823 | 32,39,48,126,606,809,1327,1592,1655,2177,2378,2701,2919,2920,2921,2922,2923,2924 824 | 32,2915 825 | 39,48,255,1327,1791,1932,1991,2017,2225,2925,2926,2927,2928,2929,2930 826 | 32,39,49,475,952,1316,1433,1600,2931,2932,2933 827 | 39,41,262,464,970,1290,1802,2049,2123,2673,2934,2935,2936,2937,2938,2939 828 | 32,39 829 | 259,279,592,625,1431,1923,2182,2940,2941 830 | 48,229,475,1394,1513,2242,2523,2800,2942,2943,2944 831 | 39,48,66,86,123,289,334,740,1327,1501,2566,2800,2945 832 | 32,212,2946 833 | 38,39,89,1831 834 | 1216,2947 835 | 39,41,48,1327,2199 836 | 48,1327 837 | 32,38,39,664,1765,2805,2948 838 | 39,237,1029,2949,2950,2951 839 | 11,32,39,48,101,197,533,599,675,789,1327,1669,2706,2763,2808,2952,2953,2954,2955 840 | 38,286,676,2331 841 | 39,1700,2956 842 | 399,752,1327,2957 843 | 39,438,740,2958,2959 844 | 592,1833,2960,2961,2962 845 | 48,1180 846 | 11,39,48,664,734,887,1362,1368,2217,2489,2963 847 | 39,107,203,464,548,623,757,878,1001,1010,1327,1395,1808,2079,2231,2286,2502,2964,2965,2966,2967,2968,2969,2970,2971 848 | 9,19,32,41,324,438,803,2230,2231,2972,2973,2974 849 | 39,41,48,76,155,208,422,589,624,626,694,746,763,794,833,1012,1275,1281,1333,1421,1558,1634,1746,1827,2080,2325,2673,2975,2976,2977,2978,2979,2980,2981,2982,2983,2984,2985,2986 850 | 41,48,592,851,1470,2385,2987,2988 851 | 39,48,2344,2989 852 | 39,41,85,751,1327,2344,2424,2990 853 | 39,41,664,2630,2902 854 | 39,41,147,769,1425,2259,2915,2991 855 | 434,1889,2883,2971 856 | 32,39,41,48,1337,1615,1853,2992,2993,2994 857 | 32,258,259,359,2995,2996,2997,2998 858 | 48,301,421,536,593,857,982,994,1809,2527,2999,3000,3001,3002 859 | 48,1339,3003 860 | 1327,1420 861 | 32,38,48,110,352,1285,1859,2420,3004 862 | 38,39,3005 863 | 9,32,310,433,468,717,861,1140,2649,2801,3006,3007,3008,3009,3010,3011,3012 864 | 39,41,855 865 | 6,39,1425,1603,2542,2708,3013,3014,3015,3016,3017 866 | 38,48,281,1327,3018,3019,3020,3021 867 | 38,39,156,544,840,3005 868 | 38,39,45,48,95,286,664,1414,2511,2550,2933,2976,3022 869 | 703,2164,3023 870 | 8,39,48,117,136,195,548,759,983,1577,3024,3025,3026,3027,3028,3029,3030,3031,3032,3033,3034 871 | 2,32,38,39,47,48,1481,2676,2853,2874,3035,3036 872 | 761,1174,1291,3037,3038,3039,3040,3041 873 | 976,1023,2212,3042,3043,3044 874 | 662,3045 875 | 32,39,41,237,270,664,855,1043,1107,1163,1179,1501,1681,1864,2258,3046,3047,3048,3049,3050,3051 876 | 38,39,66,251,271,851,1831,2074,2374,2626,2987,3052 877 | 39,41,147,592,956,2696,3053,3054,3055 878 | 39,48,103,438,806,935,1489,2747,3056,3057,3058,3059 879 | 41,48,251,1592,1742 880 | 39,48,249,3060,3061 881 | 38,39,48,286 882 | 39,41,48,789,812,1668 883 | 21,39,48,76,366,612,778,831,942,1349,1439,1679,1938,2662,3010,3062,3063,3064 884 | 39,48,664 885 | 38,39,41,48,255,336,390,434,477,640,3065,3066,3067,3068,3069,3070,3071 886 | 32,39,48,953,3072,3073 887 | 39,66,80,117,334,550,865,976,982,1227,1327,1372,1481,2425,2538,3074 888 | 32,39,48,664,1470,3075 889 | 39,48,1327,1343,1985,3076 890 | 32,205,1327,1503 891 | 38,39,178,286,382,2353,2612,3077 892 | 39,48,334,3078 893 | 39,48,148,438,793 894 | 39,234 895 | 337,449,824,916,1232,3079,3080,3081 896 | 39,48,65,237,239,589,695,1222,1481,1986,2554,2621,2724 897 | 39,41,79,310,570,3082,3083 898 | 39,178,270 899 | 39,41,48,195,255,284,570,714,809,896,1198,1393,1829,1936,1987,2304,2328,2664,2940,3084,3085,3086,3087,3088,3089,3090,3091,3092 900 | 39,48,1390,1547,3093 901 | 39,1919,1935,2284,3094 902 | 39,41,48,365,606 903 | 39,676,1603,3095 904 | 16,48,65,115,116,809,1159,1327,1469,1806,1987,2402,3096,3097,3098,3099 905 | 1732,2887,3100 906 | 38,41,48,55 907 | 492,2191,3101 908 | 39,41,264,2250,3102 909 | 39,48,258,338,365 910 | 39,48,255,3103,3104 911 | 39,3105 912 | 36,38,39,604 913 | 15,86,548,924 914 | 39,48,841,1047 915 | 39,849 916 | 41,48,384,2445,2506 917 | 37,38,39,504,1010,3106 918 | 610,1489 919 | 49,341 920 | 0,39,48,255,310,416,675,689,940,976,1051,1274,1430,1846,1848,2475,2811,3107,3108,3109,3110 921 | 41,48,301,789,1052,1728,3111,3112 922 | 38,170,271 923 | 39,41,48 924 | 430 925 | 38,39,48,156,170,179,502,676,824,979,2344,3113,3114,3115,3116,3117,3118,3119,3120,3121,3122,3123 926 | 38,105 927 | 39,48,438,751,1128,3124,3125 928 | 15,38,39,41,48,105,147,485,571,1173,3126,3127 929 | 6,19,39,48,60,123,264,301,406,418,1423,1679,1749,2050,3128,3129,3130,3131 930 | 39,910,956,1517,2327,2895,3046,3132 931 | 32,164,438,3133,3134,3135,3136 932 | 39,41,260,956,1081,1327,1360 933 | 32,38,39,47,48,2378,3137,3138 934 | 39,48,438,703,3139,3140,3141 935 | 38,39,41,48,55,170,225 936 | 10,39,48,79,514,675,1575,2254,3142 937 | 38,39,55,286,522,3143,3144,3145,3146,3147 938 | 39,41,48,77,90,270,761,1004,2344,3148 939 | 39,441,602,885,3149 940 | 41,48,251,477,959,1585,1991,2239 941 | 39,41,48,65,81,101,176,310,338,347,435,445,464,522,533,604,956,958,961,1024,1121,1254,1495,2191,3150,3151 942 | 38,105,767,1700,3152 943 | 39,271,1513 944 | 48,65,107,147,179,180,255,570,830,831,967,1115,1139,1330,1455,2440,3153,3154,3155,3156,3157,3158 945 | 39,185,255,310,464,479,1049,1991,2811 946 | 41,127,594,1105,1139,3159,3160 947 | 39,103,237,276,389,522 948 | 39,41,554,991,2214,3161 949 | 39,48,664 950 | 38,39,170,721,1280,2094,2765,3162 951 | 48,89,155,589,1698,2987,3163 952 | 38,39,170 953 | 32,39,370,495,819,913 954 | 1928 955 | 48,3157 956 | 32,48,1045,1046,1137,1669,3164,3165,3166 957 | 39,41,225,271,694,855,1121,1938,3167 958 | 38,39,47,48,281,475,706,845,1317,2859,3168,3169 959 | 32,39,225,3170 960 | 32,38,48,55,310,3171 961 | 32,36,38,39,41,48,89,110,681,940,1290,1704,2065,3108,3172,3173,3174,3175,3176,3177,3178 962 | 1198,3179,3180,3181 963 | 662,740,6873,12717,12955,13940,13995,15375,15822 964 | 97,1704,2166,3353,7128,10468,11468,13049,15823 965 | 39,1072,4213,6992,13312 966 | 39,48,259,2162,12925,14874,15824 967 | 39,41,48,79,98,150,207,242,639,664,1095,1251,1275,1915,2435,2861,2982,4211,4307,4620,5790,6063,10490,10675,11161,12951,13160 968 | 39,334,364,571,660,1111,2894,3195,4121,4444,5811,7320,7663,10232,11714,12005,13049,13459 969 | 501,569,662,956,1052,1776,1864,1865,3008,3502,4207,10934 970 | 37,38,48,652,1014,2201,2836,4267,6577 971 | 38,39,41,48,170,320,607,1081,1126,1808,1939,2053,3099,3896,4310,7129,10568,10598,11750 972 | 39,48,684,7061 973 | 39,48 974 | 39,41,45,48,527,681,829,2394,4265,15798 975 | 2199,3806 976 | 38,110,170,1094,3488,8806,15825 977 | 32,39,41,52,2671 978 | 39,41,48,490,558,2965,10943,13089,15452 979 | 48,124,415,549,703,772,812,829,912,1052,1696,2437,3369,3405,3573,4412,4883,5081,7112,11555,12932 980 | 39,41,48,80,89,237,413,415,720,789,832,1184,1814,1931,2058,2150,2821,3312,3361,3404,4307,7128,10128,10758,11276,12361,14001 981 | 39,48,216,413,449,989,1283,1407,1693,2371,2467,2573,5797,8794,14040 982 | 39,41,48,150,209,623,1368,1372,1929,2014,2188,2630,3079,3361,3850,9606,11191,12925,14099,15036 983 | 36,38,39,41,48,53,1814,2721,3168 984 | 4512,6099 985 | 39,48,1148,12943,15825 986 | 32,39,606,608,4694,7775,9001 987 | 38,39,48,286,3904 988 | 48,8308,13032 989 | 39,48,101,237,301,428,449,1825,2405,2654,2669,2728,3623,4123,5407,5672,7945,9231,10917,11794,14447,15798 990 | 2337,15601,15607,15625 991 | 48,479,2188,3985,8043 992 | 39,389,511,533,921,1202,2046,4064,4563,5248,10346,10515,13186,13970,15745 993 | 39,48,52,255,534,2056 994 | 32,36,38,39,48,78,136,170,759,961,1068,1714,1880,1881,2191,2673,2917,3394,4797,5074,5589,7714,10656,11161,11181 995 | 39,48,963,2480,3086,3221,6210,12951 996 | 38,39,41,48,105,228,269,270,397,649,956,1591,1600,1653,1784,1880,2493,2669,2934,3012,3309,3312,3693,3774,10020,10909 997 | 4512,15618 998 | 32,39,11502 999 | 38,39,48,110,164,165,237,785,875,2335,4548,15185 1000 | 32,39,41,48,272,1004,1075,1404,2115,4890,5757 1001 | -------------------------------------------------------------------------------- /dev/mrcai/datamining/association/Apriori.java: -------------------------------------------------------------------------------- 1 | package dev.mrcai.datamining.association; 2 | 3 | import java.util.ArrayList; 4 | import java.util.HashMap; 5 | import java.util.HashSet; 6 | import java.util.List; 7 | import java.util.Map; 8 | import java.util.Set; 9 | 10 | public class Apriori { 11 | private List> itemSets; 12 | private double minSupport; 13 | private double minConfidence; 14 | 15 | public static void main(String[] args) { 16 | Apriori apriori = new Apriori("data/top1000data.txt", 0.1, 0.5); 17 | apriori.run(); 18 | } 19 | 20 | Apriori(String filePath, double minSupport, double minConfidence) { 21 | itemSets = IOUtils.loadItemSets(filePath); 22 | this.minSupport = minSupport; 23 | this.minConfidence = minConfidence; 24 | } 25 | 26 | public void run() { 27 | // Record all frequent item sets. 28 | List, Double>> frequentItemSetsList = new ArrayList, Double>>(); 29 | 30 | // Start with frequent 1 item sets. 31 | frequentItemSetsList.add(getFrequentOneItemSets()); 32 | 33 | while (true) { 34 | // Get the frequent k-1 item sets. 35 | Map, Double> frequentLastItemSets = frequentItemSetsList.get(frequentItemSetsList.size() - 1); 36 | 37 | // Get the frequent k item sets. 38 | Map, Double> frequentKItemSets = getFrequentKItemSets(frequentLastItemSets); 39 | 40 | // If there is no frequent k item set, stop exploring. 41 | if (frequentKItemSets.isEmpty()) { 42 | break; 43 | } 44 | 45 | // Otherwise, record the frequent k item sets. 46 | frequentItemSetsList.add(frequentKItemSets); 47 | } 48 | 49 | // Flatten all frequent item sets into a single map. 50 | Map, Double> allFrequentItemSets = new HashMap, Double>(); 51 | for (Map, Double> frequentItemSets : frequentItemSetsList) { 52 | allFrequentItemSets.putAll(frequentItemSets); 53 | } 54 | 55 | // Print all frequent item sets. 56 | System.out.println("\nAll frequent item sets:\n"); 57 | IOUtils.printFrequentItemSets(allFrequentItemSets); 58 | 59 | // Get all association rules. 60 | Map, Set>, Double> associationRules = getAssociationRules(allFrequentItemSets); 61 | 62 | // Print all association rules. 63 | System.out.println("\nAll association rules:\n"); 64 | IOUtils.printAssociationRules(associationRules); 65 | } 66 | 67 | private Map, Double> getFrequentOneItemSets() { 68 | // Record all frequent 1 item sets, and their corresponding support values. 69 | Map, Double> frequentOneItemSets = new HashMap, Double>(); 70 | 71 | // Record all 1 item sets that have been counted, to avoid duplicate counting. 72 | Set> countedOneItemSets = new HashSet>(); 73 | 74 | for (Set itemSet : itemSets) { 75 | for (String item : itemSet) { 76 | // Treat each single item as a 1 item set. 77 | Set oneItemSet = new HashSet(); 78 | oneItemSet.add(item); 79 | 80 | // If this 1 item set has been counted, skip it. 81 | if (countedOneItemSets.contains(oneItemSet)) { 82 | continue; 83 | } 84 | 85 | // If this 1 item set is frequent, record it. 86 | double support = getSupport(oneItemSet); 87 | if (support >= minSupport) { 88 | frequentOneItemSets.put(oneItemSet, support); 89 | } 90 | 91 | // Mark this 1 item set as counted. 92 | countedOneItemSets.add(oneItemSet); 93 | } 94 | } 95 | 96 | return frequentOneItemSets; 97 | } 98 | 99 | private Map, Double> getFrequentKItemSets(Map, Double> frequentLastItemSets) { 100 | // Record all frequent k item sets, and their corresponding support values. 101 | Map, Double> frequentKItemSets = new HashMap, Double>(); 102 | 103 | // Record all k item sets that have been counted, to avoid duplicate counting. 104 | Set> countedKItemSets = new HashSet>(); 105 | 106 | // For every two k-1 frequent item sets. 107 | for (Set frequentLastItemSet1 : frequentLastItemSets.keySet()) { 108 | for (Set frequentLastItemSet2 : frequentLastItemSets.keySet()) { 109 | // If the two k-1 item sets are the same, skip it. 110 | if (frequentLastItemSet1.equals(frequentLastItemSet2)) { 111 | continue; 112 | } 113 | 114 | // Merge the two k-1 item sets into a new item set. 115 | Set kItemSet = new HashSet(frequentLastItemSet1); 116 | kItemSet.addAll(frequentLastItemSet2); 117 | 118 | // If the new item set is not a k item set, skip it. 119 | if (kItemSet.size() != frequentLastItemSet1.size() + 1) { 120 | continue; 121 | } 122 | 123 | // If the k item set has been counted, skip it. 124 | if (countedKItemSets.contains(kItemSet)) { 125 | continue; 126 | } 127 | 128 | // If the k item set has an infrequent k-1 subset, skip it. 129 | if (hasInfrequentSubset(kItemSet, frequentLastItemSets)) { 130 | continue; 131 | } 132 | 133 | // If the merged item set is frequent, record it. 134 | double support = getSupport(kItemSet); 135 | if (support >= minSupport) { 136 | frequentKItemSets.put(kItemSet, support); 137 | } 138 | 139 | // Mark this k item set as counted. 140 | countedKItemSets.add(kItemSet); 141 | } 142 | } 143 | 144 | return frequentKItemSets; 145 | } 146 | 147 | private static boolean hasInfrequentSubset(Set itemSet, Map, Double> frequentLastItemSets) { 148 | // For every k-1 subset of the given item set. 149 | for (String item : itemSet) { 150 | Set subset = new HashSet(itemSet); 151 | subset.remove(item); 152 | 153 | // If this subset is not frequent, return true. 154 | if (!frequentLastItemSets.containsKey(subset)) { 155 | return true; 156 | } 157 | } 158 | return false; 159 | } 160 | 161 | private double getSupport(Set itemSet) { 162 | double support = 0.0; 163 | for (Set realItemSet : itemSets) { 164 | if (!realItemSet.containsAll(itemSet)) { 165 | continue; 166 | } 167 | support += 1; 168 | } 169 | return support / itemSets.size(); 170 | } 171 | 172 | /** 173 | * Get all possible association rules based on the given frequent item set. 174 | * 175 | * @param frequentItemSet The frequent item set. 176 | * @return A map, whose key is a condition, and value is its result. 177 | * 178 | * For example, if the given frequent item set is {A, B, C}, the 179 | * association rules are {{A} -> {B, C}, {B} -> {A, C}, {C} -> {A, B}, 180 | * {A, B} -> {C}, {A, C} -> {B}, {B, C} -> {A}}. 181 | */ 182 | private Map, Set>, Double> getAssociationRules(Map, Double> frequentItemSets) { 183 | // Record all association rules, and their corresponding confidence values. 184 | Map, Set>, Double> associationRules = new HashMap, Set>, Double>(); 185 | 186 | // For every frequent item set. 187 | for (Set frequentItemSet : frequentItemSets.keySet()) { 188 | // Get all possible association rules. 189 | Map, Set> candidateRules = getPossibleAssociationRules(frequentItemSet); 190 | 191 | // For every possible association rule. 192 | for (Set condition : candidateRules.keySet()) { 193 | // Get the condition and the result. 194 | Set result = candidateRules.get(condition); 195 | 196 | // Get the confidence. 197 | double confidence = frequentItemSets.get(frequentItemSet) / frequentItemSets.get(condition); 198 | 199 | // If the confidence is not high enough, skip it. 200 | if (confidence < minConfidence) { 201 | continue; 202 | } 203 | 204 | // Otherwise, record the association rule. 205 | Map, Set> associationRule = new HashMap, Set>(); 206 | associationRule.put(condition, result); 207 | associationRules.put(associationRule, confidence); 208 | } 209 | } 210 | 211 | return associationRules; 212 | } 213 | 214 | /** 215 | * Get all possible association rules based on the given frequent item set. 216 | * 217 | * @param frequentItemSet The frequent item set. 218 | * @return A map, whose key is a condition, and value is its result. 219 | * 220 | * For example, if the given frequent item set is {A, B, C}, the 221 | * association rules are {{A} -> {B, C}, {B} -> {A, C}, {C} -> {A, B}, 222 | * {A, B} -> {C}, {A, C} -> {B}, {B, C} -> {A}}. 223 | */ 224 | private static Map, Set> getPossibleAssociationRules(Set frequentItemSet) { 225 | // Record all possible association rules. 226 | Map, Set> rules = new HashMap, Set>(); 227 | 228 | // For every possible condition size. 229 | for (int i = 1; i < frequentItemSet.size(); i++) { 230 | // Get all possible conditions. 231 | Set> conditions = getCombinations(frequentItemSet, i); 232 | 233 | // For every possible condition. 234 | for (Set condition : conditions) { 235 | // Get the result. 236 | Set result = new HashSet(frequentItemSet); 237 | result.removeAll(condition); 238 | 239 | // Record the association rule. 240 | rules.put(condition, result); 241 | } 242 | } 243 | 244 | return rules; 245 | } 246 | 247 | /** 248 | * Get all possible combinations of a given set with a given size. 249 | * 250 | * @param set The given set. 251 | * @param size The given size. 252 | * @return All possible combinations of the given set with the given size. 253 | * 254 | * For example, if the given set is {A, B, C}, the combinations of size 255 | * 2 are {{A, B}, {A, C}, {B, C}}. 256 | */ 257 | private static Set> getCombinations(Set set, int size) { 258 | Set> combinations = new HashSet>(); 259 | 260 | // If the size is 1, return all possible single element sets. 261 | if (size == 1) { 262 | for (String element : set) { 263 | Set combination = new HashSet(); 264 | combination.add(element); 265 | combinations.add(combination); 266 | } 267 | return combinations; 268 | } 269 | 270 | // For every possible first element. 271 | for (String element : set) { 272 | // Get the remaining elements. 273 | Set remainingElements = new HashSet(set); 274 | remainingElements.remove(element); 275 | 276 | // Get all possible combinations of the remaining elements. 277 | Set> remainingCombinations = getCombinations(remainingElements, size - 1); 278 | 279 | // For every possible combination of the remaining elements. 280 | for (Set remainingCombination : remainingCombinations) { 281 | // Add the first element to the combination. 282 | Set combination = new HashSet(remainingCombination); 283 | combination.add(element); 284 | 285 | // Record the combination. 286 | combinations.add(combination); 287 | } 288 | } 289 | 290 | return combinations; 291 | } 292 | } 293 | -------------------------------------------------------------------------------- /dev/mrcai/datamining/association/IOUtils.java: -------------------------------------------------------------------------------- 1 | package dev.mrcai.datamining.association; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.FileReader; 5 | import java.util.ArrayList; 6 | import java.util.List; 7 | import java.util.Map; 8 | import java.util.Set; 9 | 10 | public class IOUtils { 11 | private IOUtils() { 12 | } 13 | 14 | public static List> loadItemSets(String filePath) { 15 | List> itemSets = new ArrayList>(); 16 | 17 | try { 18 | FileReader fileReader = new FileReader(filePath); 19 | BufferedReader bufferedReader = new BufferedReader(fileReader); 20 | 21 | String line = null; 22 | while ((line = bufferedReader.readLine()) != null) { 23 | String[] stringItems = line.trim().split(","); 24 | Set itemSet = Set.of(stringItems); 25 | itemSets.add(itemSet); 26 | } 27 | 28 | bufferedReader.close(); 29 | } catch (Exception e) { 30 | e.printStackTrace(); 31 | } 32 | 33 | return itemSets; 34 | } 35 | 36 | public static void printFrequentItemSets(Map, Double> frequentItemSets) { 37 | for (Set itemSet : frequentItemSets.keySet()) { 38 | double support = Math.round(frequentItemSets.get(itemSet) * 100.0) / 100.0; 39 | System.out.println(itemSet + ", support=" + support); 40 | } 41 | } 42 | 43 | public static void printAssociationRules(Map, Set>, Double> rules) { 44 | for (Map, Set> rule : rules.keySet()) { 45 | Set condition = rule.keySet().iterator().next(); 46 | Set result = rule.get(condition); 47 | double confidence = Math.round(rules.get(rule) * 100) / 100.0; 48 | System.out.println(condition + " => " + result + ", confidence=" + confidence); 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /dev/mrcai/datamining/classification/BackPropagation.m: -------------------------------------------------------------------------------- 1 | clear all; 2 | close all; 3 | clc; 4 | warning off; 5 | 6 | p = [0 1 2 3 4 5 6 7 8]; 7 | t = [0 0.84 0.91 0.14 -0.77 -0.96 -0.28 0.66 0.99]; 8 | 9 | network = newff([0 8], [10 1],{'tansig' 'purelin'},'trainlm'); 10 | y1 = sim(network,p); 11 | plot(p, t, 'o', p, y1, 'x'); 12 | 13 | network.trainParam.epochs = 50; 14 | network.trainParam.goal = 0.01; 15 | network = train(network, p, t); 16 | y2 = sim(network,p); 17 | 18 | test = 6.5; 19 | y3 = sim(network,test); 20 | plot(p, t, 'o', p, y1, 'x', p, y2, '*'); 21 | -------------------------------------------------------------------------------- /dev/mrcai/datamining/classification/IOUtils.java: -------------------------------------------------------------------------------- 1 | package dev.mrcai.datamining.classification; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.FileReader; 5 | import java.util.ArrayList; 6 | import java.util.List; 7 | 8 | public class IOUtils { 9 | private IOUtils() { 10 | } 11 | 12 | public static List loadIrises(String filePath) { 13 | List irises = new ArrayList(); 14 | 15 | try { 16 | FileReader fileReader = new FileReader(filePath); 17 | BufferedReader bufferedReader = new BufferedReader(fileReader); 18 | 19 | String line = null; 20 | while ((line = bufferedReader.readLine()) != null) { 21 | String[] stringIris = line.trim().split(","); 22 | double[] data = new double[stringIris.length - 1]; 23 | for (int index = 0; index < stringIris.length - 1; index++) { 24 | data[index] = Double.parseDouble(stringIris[index]); 25 | } 26 | String label = stringIris[stringIris.length - 1]; 27 | Iris iris = new Iris(data, label); 28 | irises.add(iris); 29 | } 30 | 31 | bufferedReader.close(); 32 | } catch (Exception e) { 33 | e.printStackTrace(); 34 | } 35 | 36 | return irises; 37 | } 38 | 39 | public static void printPrediction(Iris iris, String prediction) { 40 | System.out.println(iris.toString() + "\tprediction=" + prediction); 41 | } 42 | 43 | public static void printAccuracy(double accuracy) { 44 | double accuracyRounded = Math.floor(accuracy * 10000.0) / 100.0; 45 | System.out.println("Accuracy: " + accuracyRounded + "%"); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /dev/mrcai/datamining/classification/Iris.java: -------------------------------------------------------------------------------- 1 | package dev.mrcai.datamining.classification; 2 | 3 | import java.util.Arrays; 4 | 5 | public class Iris { 6 | private double[] data = new double[4]; 7 | private String label = ""; 8 | 9 | public Iris(double[] data, String label) { 10 | this.data = data; 11 | this.label = label; 12 | } 13 | 14 | public double[] getData() { 15 | return data; 16 | } 17 | 18 | public String getLabel() { 19 | return label; 20 | } 21 | 22 | public double getDistance(Iris iris) { 23 | double sum = 0.0; 24 | for (int index = 0; index < data.length; index++) { 25 | sum += Math.pow(data[index] - iris.data[index], 2); 26 | } 27 | return Math.sqrt(sum); 28 | } 29 | 30 | public String toString() { 31 | return Arrays.toString(data) + " => " + label; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /dev/mrcai/datamining/classification/KNN.java: -------------------------------------------------------------------------------- 1 | package dev.mrcai.datamining.classification; 2 | 3 | import java.util.ArrayList; 4 | import java.util.Comparator; 5 | import java.util.HashMap; 6 | import java.util.List; 7 | import java.util.Map; 8 | import java.util.PriorityQueue; 9 | 10 | public class KNN { 11 | 12 | /** 13 | * When finding the k closest irises, 14 | * each train iris is regarded as a neighbor. 15 | */ 16 | private static class Neighbor { 17 | private Iris iris = null; 18 | private double distance = 0.0; 19 | 20 | public Neighbor(Iris iris, double distance) { 21 | this.iris = iris; 22 | this.distance = distance; 23 | } 24 | 25 | public Iris getIris() { 26 | return iris; 27 | } 28 | 29 | public double getDistance() { 30 | return distance; 31 | } 32 | } 33 | 34 | private List trainIrises = new ArrayList(); 35 | private int k = 0; 36 | 37 | public static void main(String[] args) { 38 | KNN knn = new KNN("data/iris-train.csv", 3); 39 | knn.test("data/iris-test.csv"); 40 | } 41 | 42 | public KNN(String filePath, int k) { 43 | trainIrises = IOUtils.loadIrises(filePath); 44 | this.k = k; 45 | } 46 | 47 | public void test(String filePath) { 48 | // Load test irises. 49 | List testIrises = IOUtils.loadIrises(filePath); 50 | 51 | // Classify each iris. 52 | int correctCount = 0; 53 | for (Iris testIris : testIrises) { 54 | String prediction = classify(testIris); 55 | if (testIris.getLabel().equals(prediction)) { 56 | correctCount++; 57 | continue; 58 | } 59 | IOUtils.printPrediction(testIris, prediction); 60 | } 61 | 62 | // Print the accuracy. 63 | double accuracy = correctCount * 1.0 / testIrises.size(); 64 | IOUtils.printAccuracy(accuracy); 65 | } 66 | 67 | private String classify(Iris iris) { 68 | List kClosestIrises = getKClosestIrises(iris); 69 | return getMostFrequentLabel(kClosestIrises); 70 | } 71 | 72 | private List getKClosestIrises(Iris iris) { 73 | // Store the k closest irises. 74 | // The closest iris is at the tail of the queue. 75 | PriorityQueue neighbors = new PriorityQueue(k, new Comparator() { 76 | @Override 77 | public int compare(Neighbor o1, Neighbor o2) { 78 | return -Double.compare(o1.getDistance(), o2.getDistance()); 79 | } 80 | }); 81 | 82 | // Find the k closest irises. 83 | for (Iris trainIris : trainIrises) { 84 | double distance = trainIris.getDistance(iris); 85 | 86 | // If the queue is not full, add the neighbor. 87 | if (neighbors.size() < k) { 88 | neighbors.add(new Neighbor(trainIris, distance)); 89 | continue; 90 | } 91 | 92 | // If the neighbor is farther, skip it. 93 | if (distance >= neighbors.peek().getDistance()) { 94 | continue; 95 | } 96 | 97 | // Otherwise, remove the farthest neighbor and add this one. 98 | neighbors.poll(); 99 | neighbors.add(new Neighbor(trainIris, distance)); 100 | } 101 | 102 | // Transform queue to list. 103 | List kClosestIrises = new ArrayList(); 104 | while (!neighbors.isEmpty()) { 105 | kClosestIrises.add(neighbors.poll().getIris()); 106 | } 107 | 108 | return kClosestIrises; 109 | } 110 | 111 | private static String getMostFrequentLabel(List irises) { 112 | // Count the number of each label. 113 | Map labelCount = new HashMap(); 114 | for (Iris iris : irises) { 115 | String label = iris.getLabel(); 116 | if (labelCount.containsKey(label)) { 117 | labelCount.put(label, labelCount.get(label) + 1); 118 | } else { 119 | labelCount.put(label, 1); 120 | } 121 | } 122 | 123 | // Find the most frequent label. 124 | int maxCount = 0; 125 | String mostFrequentLabel = ""; 126 | for (String label : labelCount.keySet()) { 127 | int count = labelCount.get(label); 128 | if (count <= maxCount) { 129 | continue; 130 | } 131 | maxCount = count; 132 | mostFrequentLabel = label; 133 | } 134 | 135 | return mostFrequentLabel; 136 | } 137 | } 138 | -------------------------------------------------------------------------------- /dev/mrcai/datamining/classification/Perceptron.m: -------------------------------------------------------------------------------- 1 | close all; 2 | clc; 3 | 4 | P = [-0.5 -0.5 0.3 0; -0.5 0.5 -0.5 1]; 5 | T = [1 1 0 0]; 6 | plotpv(P, T); 7 | 8 | network = newp([-1 1; 0 1], 1); 9 | network = init(network); 10 | y = sim(network, P); 11 | e = T - y; 12 | w = network.IW{1, 1}; 13 | b = network.b{1}; 14 | plotpc(w, b); 15 | 16 | while (mae(e) > 0.0015) 17 | dw = learnp(w, P, [], [], [], [], e, [], [], [], [], []); 18 | db = learnp(b, ones(1, 4), [], [], [], [], e, [], [], [], [], []); 19 | w = w + dw; 20 | b = b + db; 21 | network.IW{1, 1} = w; 22 | network.b{1} = b; 23 | plotpc(w, b); 24 | pause; 25 | y = sim(network, P); 26 | e = T - y; 27 | end 28 | -------------------------------------------------------------------------------- /dev/mrcai/datamining/clustering/DBSCAN.java: -------------------------------------------------------------------------------- 1 | package dev.mrcai.datamining.clustering; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | public class DBSCAN { 7 | private static class Point extends dev.mrcai.datamining.clustering.Point { 8 | private boolean isVisited = false; 9 | 10 | public Point(double x, double y) { 11 | super(x, y); 12 | } 13 | 14 | public boolean getIsVisited() { 15 | return isVisited; 16 | } 17 | 18 | public void setIsVisited(boolean isVisited) { 19 | this.isVisited = isVisited; 20 | } 21 | } 22 | 23 | private List points = new ArrayList(); 24 | 25 | /** 26 | * The maximum distance between two points to be considered as neighbors. 27 | */ 28 | private double epsilon = 0.0; 29 | 30 | /** 31 | * The minimum number of neighbors a point should have 32 | * to be considered as a center. 33 | */ 34 | private int minNeighborNum = 0; 35 | 36 | /** 37 | * The index of the cluster currently being explored. 38 | */ 39 | private int currentClusterIndex = 0; 40 | 41 | public static void main(String args[]) { 42 | DBSCAN dbscan = new DBSCAN("data/points.txt", 1.5, 2); 43 | dbscan.plot("outputs/dbscan.png"); 44 | } 45 | 46 | public DBSCAN(String filePath, double epsilon, int minNeighborNum) { 47 | points = IOUtils.loadPoints(filePath, Point.class); 48 | this.epsilon = epsilon; 49 | this.minNeighborNum = minNeighborNum; 50 | cluster(); 51 | } 52 | 53 | public void plot(String filePath) { 54 | IOUtils.plotPoints(points, filePath); 55 | } 56 | 57 | private void cluster() { 58 | for (Point point : points) { 59 | // If this point is already visited, skip it. 60 | if (point.getIsVisited()) { 61 | continue; 62 | } 63 | 64 | // If this point is not a center, don't visit it. 65 | // It is either a noise point or an edge point of a certain cluster. 66 | List neighbors = getNeighbors(point); 67 | if (neighbors.size() < minNeighborNum) { 68 | continue; 69 | } 70 | 71 | // Otherwise, start a new cluster. 72 | currentClusterIndex++; 73 | 74 | // Add this point to the cluster, and explore all of its neighbors. 75 | point.setIsVisited(true); 76 | point.setClusterIndex(currentClusterIndex); 77 | for (Point neighbor : neighbors) { 78 | exploreCluster(neighbor); 79 | } 80 | } 81 | } 82 | 83 | private void exploreCluster(Point point) { 84 | // If this point is already visited, skip it. 85 | if (point.getIsVisited()) { 86 | return; 87 | } 88 | 89 | // Add this point to the cluster. 90 | point.setIsVisited(true); 91 | point.setClusterIndex(currentClusterIndex); 92 | 93 | // If this point is not a center, stop further exploration from this point. 94 | List neighbors = getNeighbors(point); 95 | if (neighbors.size() < minNeighborNum) { 96 | return; 97 | } 98 | 99 | // Otherwise, continue to explore all of its neighbors. 100 | for (Point neighbor : neighbors) { 101 | exploreCluster(neighbor); 102 | } 103 | } 104 | 105 | private List getNeighbors(Point center) { 106 | List neighbors = new ArrayList(); 107 | for (Point point : points) { 108 | if (point == center || point.getDistance(center) > epsilon) { 109 | continue; 110 | } 111 | neighbors.add(point); 112 | } 113 | return neighbors; 114 | } 115 | } 116 | -------------------------------------------------------------------------------- /dev/mrcai/datamining/clustering/IOUtils.java: -------------------------------------------------------------------------------- 1 | package dev.mrcai.datamining.clustering; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.File; 5 | import java.io.FileReader; 6 | import java.util.ArrayList; 7 | import java.util.HashMap; 8 | import java.util.List; 9 | import java.util.Map; 10 | 11 | import org.jfree.chart.ChartFactory; 12 | import org.jfree.chart.ChartFrame; 13 | import org.jfree.chart.ChartUtilities; 14 | import org.jfree.chart.JFreeChart; 15 | import org.jfree.data.xy.DefaultXYDataset; 16 | 17 | public class IOUtils { 18 | private IOUtils() { 19 | } 20 | 21 | public static List loadPoints(String filePath, Class pointClass) { 22 | List points = new ArrayList(); 23 | 24 | try { 25 | FileReader fileReader = new FileReader(filePath); 26 | BufferedReader bufferedReader = new BufferedReader(fileReader); 27 | 28 | String line = null; 29 | while ((line = bufferedReader.readLine()) != null) { 30 | String[] stringPoint = line.trim().split("\t"); 31 | double x = Double.parseDouble(stringPoint[0]); 32 | double y = Double.parseDouble(stringPoint[1]); 33 | T point = pointClass.getDeclaredConstructor(double.class, double.class).newInstance(x, y); 34 | points.add(point); 35 | } 36 | 37 | bufferedReader.close(); 38 | } catch (Exception e) { 39 | e.printStackTrace(); 40 | } 41 | 42 | return points; 43 | } 44 | 45 | public static void plotPoints(List points, String filePath) { 46 | DefaultXYDataset plotData = transformPoints(points); 47 | JFreeChart chart = createChart(plotData); 48 | saveChart(chart, filePath); 49 | } 50 | 51 | private static DefaultXYDataset transformPoints(List points) { 52 | // Get the number of points in each cluster. 53 | Map pointNums = getPointNums(points); 54 | int clusterNum = pointNums.size(); 55 | 56 | // Initialize the array that stores the transformed points. 57 | double[][][] clusters = new double[clusterNum][2][]; 58 | for (int clusterIndex = 0; clusterIndex < clusterNum; clusterIndex++) { 59 | int pointNum = pointNums.get(clusterIndex); 60 | clusters[clusterIndex][0] = new double[pointNum]; 61 | clusters[clusterIndex][1] = new double[pointNum]; 62 | } 63 | 64 | // Record the number of transformed points of each cluster. 65 | int[] transformedPointIndexes = new int[clusterNum]; 66 | 67 | // Transform the points. 68 | for (Point point : points) { 69 | int clusterIndex = point.getClusterIndex(); 70 | int pointIndex = transformedPointIndexes[clusterIndex]; 71 | clusters[clusterIndex][0][pointIndex] = point.getX(); 72 | clusters[clusterIndex][1][pointIndex] = point.getY(); 73 | transformedPointIndexes[clusterIndex]++; 74 | } 75 | 76 | // Transform the data to the format that JFreeChart can understand. 77 | DefaultXYDataset plotData = new DefaultXYDataset(); 78 | for (int clusterIndex = 0; clusterIndex < clusterNum; clusterIndex++) { 79 | plotData.addSeries(clusterIndex, clusters[clusterIndex]); 80 | } 81 | 82 | return plotData; 83 | } 84 | 85 | private static Map getPointNums(List points) { 86 | Map pointNums = new HashMap(); 87 | for (Point point : points) { 88 | int clusterIndex = point.getClusterIndex(); 89 | if (pointNums.containsKey(clusterIndex)) { 90 | pointNums.put(clusterIndex, pointNums.get(clusterIndex) + 1); 91 | } else { 92 | pointNums.put(clusterIndex, 1); 93 | } 94 | } 95 | return pointNums; 96 | } 97 | 98 | private static JFreeChart createChart(DefaultXYDataset plotData) { 99 | JFreeChart chart = ChartFactory.createScatterPlot("Clusters", "x", "y", plotData); 100 | ChartFrame frame = new ChartFrame("Clusters", chart, true); 101 | frame.pack(); 102 | frame.dispose(); 103 | return chart; 104 | } 105 | 106 | public static void saveChart(JFreeChart chart, String filePath) { 107 | try { 108 | File file = new File(filePath); 109 | if (!file.exists()) { 110 | file.createNewFile(); 111 | } 112 | ChartUtilities.saveChartAsPNG(file, chart, 500, 500); 113 | } catch (Exception e) { 114 | e.printStackTrace(); 115 | } 116 | } 117 | } 118 | -------------------------------------------------------------------------------- /dev/mrcai/datamining/clustering/KMeans.java: -------------------------------------------------------------------------------- 1 | package dev.mrcai.datamining.clustering; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | public class KMeans { 7 | private List points = new ArrayList(); 8 | private List centers = new ArrayList(); 9 | 10 | public static void main(String args[]) { 11 | KMeans kMeans = new KMeans("data/points.txt", 3); 12 | kMeans.plot("outputs/kmeans.png"); 13 | } 14 | 15 | public KMeans(String filePath, int clusterNum) { 16 | points = IOUtils.loadPoints(filePath, Point.class); 17 | initializeCenters(clusterNum); 18 | cluster(); 19 | } 20 | 21 | public void plot(String filePath) { 22 | IOUtils.plotPoints(points, filePath); 23 | } 24 | 25 | private void initializeCenters(int clusterNum) { 26 | for (int clusterIndex = 0; clusterIndex < clusterNum; clusterIndex++) { 27 | centers.add(createRandomPoint()); 28 | } 29 | } 30 | 31 | private void cluster() { 32 | while (true) { 33 | List nextCenters = getNextCenters(); 34 | if (isSamePoints(centers, nextCenters)) { 35 | break; 36 | } 37 | centers = nextCenters; 38 | } 39 | } 40 | 41 | private List getNextCenters() { 42 | // Store the next centers' coordinates. 43 | List nextCenters = new ArrayList(); 44 | for (int centerIndex = 0; centerIndex < centers.size(); centerIndex++) { 45 | nextCenters.add(new Point(0, 0)); 46 | } 47 | 48 | // Record the number of points in each next cluster. 49 | int clusterNum = centers.size(); 50 | int[] pointNums = new int[clusterNum]; 51 | 52 | for (Point point : points) { 53 | // Find the closest center. 54 | int closestCenterIndex = getClosestCenterIndex(point); 55 | 56 | // Assign the point to the cluster. 57 | point.setClusterIndex(closestCenterIndex); 58 | pointNums[closestCenterIndex]++; 59 | 60 | // Update the center's coordinates. 61 | // The current coordinates are the sum of all points' coordinates 62 | // in the cluster, used to calculate the mean value later. 63 | Point nextCenter = nextCenters.get(closestCenterIndex); 64 | nextCenter.setX(nextCenter.getX() + point.getX()); 65 | nextCenter.setY(nextCenter.getY() + point.getY()); 66 | } 67 | 68 | // Calculate the coordinates of the next centers. 69 | for (int clusterIndex = 0; clusterIndex < clusterNum; clusterIndex++) { 70 | // If there is no point in the cluster, spawn this center randomly again. 71 | if (pointNums[clusterIndex] == 0) { 72 | nextCenters.set(clusterIndex, createRandomPoint()); 73 | continue; 74 | } 75 | 76 | // Otherwise, calculate the mean of the cluster, and treat it as the new center. 77 | Point nextCenter = nextCenters.get(clusterIndex); 78 | nextCenter.setX(nextCenter.getX() / pointNums[clusterIndex]); 79 | nextCenter.setY(nextCenter.getY() / pointNums[clusterIndex]); 80 | } 81 | 82 | return nextCenters; 83 | } 84 | 85 | private int getClosestCenterIndex(Point point) { 86 | double minDistance = Double.MAX_VALUE; 87 | int closestCenterIndex = -1; 88 | for (int centerIndex = 0; centerIndex < centers.size(); centerIndex++) { 89 | double distance = point.getDistance(centers.get(centerIndex)); 90 | if (distance >= minDistance) { 91 | continue; 92 | } 93 | minDistance = distance; 94 | closestCenterIndex = centerIndex; 95 | } 96 | return closestCenterIndex; 97 | } 98 | 99 | private boolean isSamePoints(List pointsA, List pointsB) { 100 | if (pointsA.size() != pointsB.size()) { 101 | return false; 102 | } 103 | 104 | for (int pointIndex = 0; pointIndex < pointsA.size(); pointIndex++) { 105 | Point pointA = pointsA.get(pointIndex); 106 | Point pointB = pointsB.get(pointIndex); 107 | if (pointA.getX() != pointB.getX() || pointA.getY() != pointB.getY()) { 108 | return false; 109 | } 110 | } 111 | return true; 112 | } 113 | 114 | private static Point createRandomPoint() { 115 | return new Point(Math.random() * 100, Math.random() * 100); 116 | } 117 | } 118 | -------------------------------------------------------------------------------- /dev/mrcai/datamining/clustering/Point.java: -------------------------------------------------------------------------------- 1 | package dev.mrcai.datamining.clustering; 2 | 3 | public class Point { 4 | private double x = 0.0; 5 | private double y = 0.0; 6 | private int clusterIndex = 0; 7 | 8 | public Point(double x, double y) { 9 | this.x = x; 10 | this.y = y; 11 | } 12 | 13 | public double getX() { 14 | return x; 15 | } 16 | 17 | public void setX(double x) { 18 | this.x = x; 19 | } 20 | 21 | public double getY() { 22 | return y; 23 | } 24 | 25 | public void setY(double y) { 26 | this.y = y; 27 | } 28 | 29 | public int getClusterIndex() { 30 | return clusterIndex; 31 | } 32 | 33 | public void setClusterIndex(int clusterIndex) { 34 | this.clusterIndex = clusterIndex; 35 | } 36 | 37 | public double getDistance(Point point) { 38 | return Math.sqrt(Math.pow(x - point.getX(), 2) + Math.pow(y - point.getY(), 2)); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /dev/mrcai/datamining/preprocessing/FeatureSelection.java: -------------------------------------------------------------------------------- 1 | package dev.mrcai.datamining.preprocessing; 2 | 3 | import weka.attributeSelection.ASEvaluation; 4 | import weka.attributeSelection.InfoGainAttributeEval; 5 | import weka.attributeSelection.Ranker; 6 | import weka.core.Instances; 7 | import weka.filters.Filter; 8 | import weka.filters.supervised.attribute.AttributeSelection; 9 | 10 | public class FeatureSelection { 11 | private Instances instances = null; 12 | 13 | public static void main(String[] args) throws Exception { 14 | FeatureSelection fs = new FeatureSelection("data/iris.arff", 2); 15 | fs.save("outputs/iris-selected.arff"); 16 | } 17 | 18 | public FeatureSelection(String filePath, int featureNum) throws Exception { 19 | instances = IOUtils.loadInstances(filePath); 20 | select(featureNum); 21 | } 22 | 23 | public void save(String filePath) throws Exception { 24 | IOUtils.saveInstances(filePath, instances); 25 | } 26 | 27 | private void select(int featureNum) throws Exception { 28 | AttributeSelection selection = new AttributeSelection(); 29 | selection.setInputFormat(instances); 30 | 31 | ASEvaluation evaluation = new InfoGainAttributeEval(); 32 | selection.setEvaluator(evaluation); 33 | 34 | Ranker rank = new Ranker(); 35 | rank.setThreshold(0); 36 | rank.setNumToSelect(featureNum); 37 | selection.setSearch(rank); 38 | 39 | instances = Filter.useFilter(instances, selection); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /dev/mrcai/datamining/preprocessing/IOUtils.java: -------------------------------------------------------------------------------- 1 | package dev.mrcai.datamining.preprocessing; 2 | 3 | import weka.core.Instances; 4 | import weka.core.converters.ConverterUtils.DataSink; 5 | import weka.core.converters.ConverterUtils.DataSource; 6 | 7 | public class IOUtils { 8 | private IOUtils() { 9 | } 10 | 11 | public static Instances loadInstances(String filePath) throws Exception { 12 | return new DataSource(filePath).getDataSet(); 13 | } 14 | 15 | public static void saveInstances(String filePath, Instances instances) throws Exception { 16 | DataSink.write(filePath, instances); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /dev/mrcai/datamining/preprocessing/MissingValueSubstitution.java: -------------------------------------------------------------------------------- 1 | package dev.mrcai.datamining.preprocessing; 2 | 3 | import weka.core.Instance; 4 | import weka.core.Instances; 5 | 6 | public class MissingValueSubstitution { 7 | private Instances instances = null; 8 | 9 | public static void main(String[] args) throws Exception { 10 | MissingValueSubstitution mvs = new MissingValueSubstitution("data/labor.arff"); 11 | mvs.save("outputs/labor-substituted.arff"); 12 | } 13 | 14 | public MissingValueSubstitution(String filePath) throws Exception { 15 | instances = IOUtils.loadInstances(filePath); 16 | substitute(); 17 | } 18 | 19 | public void save(String filePath) throws Exception { 20 | IOUtils.saveInstances(filePath, instances); 21 | } 22 | 23 | private void substitute() { 24 | double[] substitutions = getSubstitutions(); 25 | 26 | int columnNum = instances.numAttributes(); 27 | for (Instance instance : instances) { 28 | for (int column = 0; column < columnNum; column++) { 29 | instance.replaceMissingValues(substitutions); 30 | } 31 | } 32 | } 33 | 34 | /** 35 | * Get the substitution value for each attribute. 36 | * 37 | * If the attribute is averagable, the substitution is its mean value. 38 | * Otherwise, the substitution is its mode value. 39 | * 40 | * Actually, the `substitutions` should be of type `Instance`, 41 | * but Weka does not support the instantiation of `Instance`. 42 | * So we use `List` instead. 43 | * 44 | * @return The substitution for each attribute. 45 | */ 46 | private double[] getSubstitutions() { 47 | int columnNum = instances.numAttributes(); 48 | double[] substitutions = new double[columnNum]; 49 | 50 | for (int column = 0; column < columnNum; column++) { 51 | substitutions[column] = instances.meanOrMode(column); 52 | } 53 | 54 | return substitutions; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /dev/mrcai/datamining/preprocessing/Normalization.java: -------------------------------------------------------------------------------- 1 | package dev.mrcai.datamining.preprocessing; 2 | 3 | import weka.core.Instances; 4 | import weka.filters.Filter; 5 | import weka.filters.unsupervised.attribute.Normalize; 6 | 7 | public class Normalization { 8 | private Instances instances = null; 9 | 10 | public static void main(String[] args) throws Exception { 11 | Normalization norm = new Normalization("data/iris.arff"); 12 | norm.save("outputs/iris-normalized.arff"); 13 | } 14 | 15 | public Normalization(String filePath) throws Exception { 16 | instances = IOUtils.loadInstances(filePath); 17 | normalize(); 18 | } 19 | 20 | public void save(String filePath) throws Exception { 21 | IOUtils.saveInstances(filePath, instances); 22 | } 23 | 24 | private void normalize() throws Exception { 25 | Normalize norm = new Normalize(); 26 | norm.setInputFormat(instances); 27 | instances = Filter.useFilter(instances, norm); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /dev/mrcai/datamining/preprocessing/Visualization.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | import seaborn as sns 3 | import matplotlib.pyplot as plt 4 | 5 | iris = pd.read_csv("data/iris.csv") 6 | 7 | 8 | def scatter(group: str): 9 | sns.relplot( 10 | data=iris, 11 | x=f"{group}width", 12 | y=f"{group}length", 13 | hue="class", 14 | palette=("red", "green", "blue"), 15 | ) 16 | plt.savefig(f"outputs/iris-{group}-scatter.png") 17 | plt.clf() 18 | 19 | 20 | def hist(attribute: str): 21 | sns.histplot( 22 | data=iris, 23 | x=attribute, 24 | hue="class", 25 | multiple="stack", 26 | ) 27 | plt.savefig(f"outputs/iris-{attribute}-histogram.png") 28 | plt.clf() 29 | 30 | 31 | if __name__ == "__main__": 32 | scatter("sepal") 33 | scatter("petal") 34 | hist("sepalwidth") 35 | hist("sepallength") 36 | hist("petallength") 37 | hist("petalwidth") 38 | -------------------------------------------------------------------------------- /lib/jcommon.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrcaidev/data-mining-and-big-data-analytics/9fe0aa28059e1fd39d3cb8b0ef2dd9ce7d81546d/lib/jcommon.jar -------------------------------------------------------------------------------- /lib/jfreechart.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrcaidev/data-mining-and-big-data-analytics/9fe0aa28059e1fd39d3cb8b0ef2dd9ce7d81546d/lib/jfreechart.jar -------------------------------------------------------------------------------- /lib/weka.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrcaidev/data-mining-and-big-data-analytics/9fe0aa28059e1fd39d3cb8b0ef2dd9ce7d81546d/lib/weka.jar -------------------------------------------------------------------------------- /report.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrcaidev/data-mining-and-big-data-analytics/9fe0aa28059e1fd39d3cb8b0ef2dd9ce7d81546d/report.pdf -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | seaborn 2 | --------------------------------------------------------------------------------