{"id":15158069,"url":"https://github.com/laoluadewoye/skloverlay","last_synced_at":"2026-02-22T09:38:43.774Z","repository":{"id":194881356,"uuid":"691782795","full_name":"laoluadewoye/SKLOverlay","owner":"laoluadewoye","description":"This repository is the official location of the SKLOverlay Project. Here, it will hold everything used for the package on Py Pi, including source files.","archived":false,"fork":false,"pushed_at":"2023-09-15T03:20:17.000Z","size":316,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-15T22:45:18.747Z","etag":null,"topics":["classification","classification-algorithm","data-science","data-wrangling","evaluation-metrics","excel","graphics","graphs","machine-learning","machine-learning-algorithms","matplotlib","modeling","pandas","preprocessing","scikit-learn"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/laoluadewoye.png","metadata":{"files":{"readme":"ReadMe.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-09-14T22:06:30.000Z","updated_at":"2023-09-14T22:15:24.000Z","dependencies_parsed_at":"2023-09-15T15:12:38.583Z","dependency_job_id":null,"html_url":"https://github.com/laoluadewoye/SKLOverlay","commit_stats":null,"previous_names":["laoluadewoye/skloverlay"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/laoluadewoye%2FSKLOverlay","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/laoluadewoye%2FSKLOverlay/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/laoluadewoye%2FSKLOverlay/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/laoluadewoye%2FSKLOverlay/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/laoluadewoye","download_url":"https://codeload.github.com/laoluadewoye/SKLOverlay/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247684190,"owners_count":20979018,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["classification","classification-algorithm","data-science","data-wrangling","evaluation-metrics","excel","graphics","graphs","machine-learning","machine-learning-algorithms","matplotlib","modeling","pandas","preprocessing","scikit-learn"],"created_at":"2024-09-26T20:22:41.601Z","updated_at":"2025-10-28T19:06:42.672Z","avatar_url":"https://github.com/laoluadewoye.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Created by laoluadewoye@gmail.com\r\n\r\nVersion Number: 1.2.0\r\n\r\nVersion Updates: The importing structure broke so I had to redo it again. \r\nI don't want to see 1.1.x ever again lmao.\r\n\r\nAll copyright information on the GitHub page. \r\n\r\nIf there are any questions on the usage of this program, please feel free to \r\nemail me.\r\n\r\n# Hello, Welcome To SKLOverlay\r\n\r\n## BACKGROUND\r\n\r\nI wanted to create this after taking a few classes that utilized some network\r\nanalysis concepts. I found that in alot of classes, I would create Python \r\nexecutables with the same structure.\r\n\r\nImport data.\r\n\r\nPreprocess it. \r\n\r\nRun the model, get results.\r\n\r\nAnd, if I could ever figure it out, paste it in a Matplotlib.\r\n\r\nI quickly grew good at it, but over the Summer of 2023 I started to wonder if\r\nI could ever figure out how to automate this.\r\n\r\nAnd automate it I did. \r\n\r\nTo a degree, this should be able to enable the batch testing of several \r\nalgorithms on one dataset with some basic configurations. More importantly,\r\nthis should be able to happen with little more than pressing the numbers near\r\nthe top of your keyboard. And maybe copy-paste the path of the folder you want \r\nto export your results to.\r\n\r\nAs a bonus, I wanted this program to be as modular as possible for quick\r\ndebugging and modification. You may find that it isn't suited to your needs,\r\nand in that case, it should be self-explanatory to plug your own code in \r\nsomewhere.\r\n\r\n## FILE INFORMATION\r\n\r\nThis instruction manual assumes that I haven't figured out a way to turn this\r\ninto an executable yet, meaning you, the user, have either gotten this from\r\nGitHub or directly from me.\r\n\r\nIn the main folder of the program, are several Python files and at least one\r\nfolder named \"SKLOCCustom\". In order of filetype, then name-\r\n\r\nSKLOCCustom - Contains all Python files for classification algorithms and\r\n\t\tclassifier setup functionality.\r\n\r\nSKLOCDataMods - Contains functionality for modifying your chosen dataset.\r\n\r\nSKLOCDataset - Contains functionality for creating or importing a dataset.\r\n\r\nSKLOClassMenu - The root of the entire program, contains the branches for all\r\n\t\tuser functionality. Essentially software navigation.\r\n\r\nSKLOCMainOps - Contains several functions that ClassMenu calls to. Keeping\r\n\t\tall the scripts in SKLOClassMenu made the file too long. \r\n\r\nSKLOCMetrics - Contains functionality for generating results, graphs, and\r\n\t\tspreadsheets\r\n\r\nSKLOCRun - Contains functionality for Preprocessing, Model Fitting, and Model\r\n\t\ttesting\r\n\r\nSKLOverlay - The program used for running the entire application.\r\n\r\n## PREREQUISITES\r\n\r\nAs implied, to start the program, you must run SKLOverlay.py using the Python\r\ninterpreter. Before you begin, however, have the following libraries\r\ninstalled.\r\n\r\n1. Python 3 \r\n2. Python libraries\r\n   1. os\r\n   2. textwrap\r\n   3. copy\r\n   4. ast\r\n   5. random\r\n   6. time\r\n3. Scikit Learn/SKlearn\r\n4. Pandas\r\n5. Numpy\r\n6. Matplotlib\r\n7. Openpyxl\r\n\r\nYou may already have these libraries installed, especially if you utilize\r\nsuites like Anaconda. Always good to check, however.\r\n\r\n## STARTING THE PROGRAM\r\n\r\nHow you start the program will depend on where you get it from. On \r\nGitHub, the source files themselves are there unaltered. All you\r\nwould need to do is download the folder and run SKLOverlay.py.\r\n\r\nIf you need help downloading the folder, use the link below:\r\nhttps://www.wikihow.com/Download-a-GitHub-Folder\r\n\r\nThe other way you can use this is as a package from Py-Pi. Use the \r\ncommand \"pip install SKLOverlay\" to install it as a package. From\r\nthere, all you have to do is import SKLOStart and use its Run function.\r\nThis will have the same effect as running the SKLOverlay itself.\r\n\r\nTo start, run SKLOverlay.py. You should be greeted with a welcome box and\r\nyour first selection. You will be asked to enter 1 to proceed. Once you\r\nenter 1 and press enter, you will see all the functions of the program.\r\nSelecting options will be how you will navigate through the program as a\r\nwhole.\r\n\r\nAfter leaving the introduction box, the Classification menu box will be\r\ngenerated. This is the main menu of the program and is where all major \r\nclassifiers and datasets are managed. Each option will be labeled with a\r\nnumber preceding it. All menus and options came across in the program will\r\nhave this structure, with 0 being used to go back a menu or exit an activity.\r\n\r\nBelow is a short description of each main option.\r\n\r\n0 - enter this number to exit the program\r\n\r\n1 - enter this number to display a list of classifiers you made. You can \r\n\tchoose to edit one.\r\n\r\n2 - enter this number to create a new classifier inside the program.\r\n\r\n3 - enter this number to choose an \"active\" classifier.\r\n\r\n4 - enter this number to delete a classifier. \r\n\r\n5 - enter this number to display a list of datasets you made. You can choose\r\n\tto edit one.\r\n\r\n6 - enter this number to create a new dataset inside the program.\r\n\r\n7 - enter this number to choose an \"active\" dataset.\r\n\r\n8 - enter this number to delete a dataset.\r\n\r\n9 - enter this number to fit and test one model.\r\n\r\n10 - enter this number to batch fit/test multiple models at once.\r\n\r\n## ACTIVE STATUSES\r\n\r\nTypical activities within this program are-\r\n\r\n1. Creating a classifier object\r\n2. Creating a dataset object\r\n3. Fitting and testing how well a classifier can correctly classify data.\r\n\r\nStep 3 can be done through options 9 or 10. However, entering into these \r\noptions prematurely could cause confusion, and even crash the program. Thus, \r\nactive statuses are at the top of the menu display. \r\n\r\nYou must use options 3 and 7 to select an active classifier and dataset. \r\nWhen both are chosen, options 9 and 10 will start working. \r\n\r\nFirst though, a classifier and dataset must be created.\r\n\r\n## CLASSIFICATION ALGORITHMS\r\n\r\nThis program is made to make classification through SKlearn easy. Thus, all \r\nalgorithms within this program are 1) in SKlearn and 2) specifically for \r\nclassification. In the future, regression can be built into the program. \r\n\r\nIn the program, the words \"algorithm\" and \"classifier\" are used \r\ninterchangeably.\r\n\r\nYou can edit a classifier (option 1), create a classifier (option 2), \r\nselect an active classifier (option 3), or delete a classifier (option 4).\r\n\r\nFirst, choose option 2 to create a classifier.\r\n\r\n### ALGORITHM CREATION\r\n\r\nWhen choosing an algorithm, you will see a list of different models. Like the\r\nprevious menu, use the numbers to select which one you want. However, \r\nsomething interesting happens if you change your mind at this point.\r\n\r\nIn the program, you don't just create an algorithm. You also nickname it and\r\ncustomize its parameters, which are stored as a dictionary. This allows-\r\n\r\n1. To edit your algorithm's configuration after the fact as all old parameters\r\n\tcan just be added back in.\r\n2. The above then means remembering the algorithm object can be completely\r\n\tdisregarded. All that is needed is what algorithm and what edits. \r\n\tremembering the object in storage isn't necessarily required.\r\n\r\nHowever, this also means that each modification results in a completely new\r\nalgorithm being remembered in storage before old edits are applied back. \r\nThis whole process starts with choosing your algorithm which means if you \r\nchange your mind, something needs to be sent back. I decided the best way to \r\nhandle this conundrum was to just send a default Random Forest classifier back \r\nas the choice. \r\n\r\nYou will be warned about this when it happens. This is the only option where\r\nthis will ever happen.\r\n\r\nOnce you have decided on which model you want to use, you will then be asked \r\nto nickname your program. Here, you can type any character you want. This\r\nalso is good for needing to know which algorithm is represented in charts\r\nlater on.\r\n\r\nLastly, you will be asked to edit the parameters of the algorithm one by one.\r\nIf you choose to do no edits, enter 0 and the default configuration of that\r\nclassifier is used. This menu assumes you know what each of these parameters\r\nmeans, so look up the classifier on Sci-Kit's API documentation if you don't.\r\n\r\n### EDITING THE ALGORITHM.\r\n\r\nIf you believe you made a mistake in your algorithm, or wish to change it, \r\nchoose option 1. This will display a menu that lists all nicknames of the \r\nmodels you created, along with their dictionary of the modifications\r\npreviously made. \r\n\r\nChoosing one of these options will take you back to the customization menu\r\nfrom before. Make the modifications you need and then press 0 to exit and \r\nsave.\r\n\r\n### SELECTING AN ACTIVE ALGORITHM\r\n\r\nTo establish one classifier as the \"active\" classifier, use option 3. In the\r\nsame way you choose a classifier to edit, choose a classifier to activate.\r\nBack in the main menu, you will now see the nickname of your classifier\r\nalong with its index number beside \"Active Classifier\".\r\n\r\n### DELETING AN ALGORITHM\r\n\r\nDeleting an algorithm uses the same mechanics as choosing an active algorithm.\r\nThe algorithm you select will end up being deleted from your list of models.\r\nThere will be no warning to confirm your deletion, so be sure and be careful.\r\nYou do not need to remove the active status to delete your model, but you will\r\nnotice the \"Active Classifier\" status turns back into None and needs to be \r\nreselected.\r\n\r\n## DATASET CREATION\r\n\r\nAfter you finish preparing your algorithms, next is time to prepare your\r\ndatasets. Or prepare your datasets first. Whichever way you prefer.\r\n\r\nUse the 6th option to create a new dataset. The first option you will be given\r\nis whether you wish to use a sample dataset already prepared, or a dataset of\r\nyou're own choosing. Use 1 or 2 to decide.\r\n\r\nIf you make a sample dataset, you will first be asked to nickname your\r\ndataset. Then you will be asked to choose which sample dataset you want to\r\nuse. Half are actually samples prepared, while the rest are ways to generate\r\ndata provided by SKLearn.\r\n\r\nIf you are providing your own dataset, you will first be asked to provide \r\nthe path to your dataset file. Below is a list of ways to provide data.\r\n\r\n1. Excel / LibreOffice spreadsheets.\r\n2. Comma-Seperated Value (CSV) files.\r\n3. JSON files\r\n4. TXT files (this is more general, know how your file is organized before\r\n\t\tchoosing this option as it may not work)\r\n\r\nNote, both local files, server files, and web links to data can work. As long\r\nAs the actual file can be reached and parsed, it is viable.\r\n\r\nAnother note, the ways you can modify your dataset within this program are\r\nlimited and can be tedious. Major modifications to your dataset should be \r\ndone before even running this program.\r\n\r\nAfter choosing your dataset, you next are instructed to make modifications to\r\nyour dataset. You are able to remove columns, assign a Y column, assign a\r\ntrain-testing method, and choose one preprocessing option (at the moment). You\r\ncan also reset your edits if you made a mistake you wish to take back.\r\n\r\nYou are required to assign a Y (class) column and establish a training split\r\nbefore you are allowed to exit this menu. This is to enforce a complete\r\nsetup for preprocessing.\r\n\r\n### EDITING THE DATASET\r\n\r\nAfter you have created a dataset, you can use option 5 to edit your dataset. \r\nYou will be taken straight to the menu to modify your preprocessing options.\r\nNothing is required this time, so you are also able to immediately return\r\nback to the main menu. \r\n\r\n### SELECTING AN ACTIVE DATASET\r\n\r\nLike selecting an active classifier, you can select an active dataset. It is\r\na similar process, choosing option 7 and choosing the name of your desired \r\ndataset.\r\n\r\n### REMOVE A DATASET\r\n\r\nLastly, removing a dataset is like choosing the active dataset. If you remove\r\na dataset that is currently active, the active status will reset to None and\r\nyou will have to make another selection. \r\n\r\n## ALGORITHM FITTING AND TESTING\r\n\r\nFinally, once you have both an active classifier and an active dataset, you \r\nare ready to perform fitting and testing. The actual process, as promised, \r\nis reduced to as little button presses as possible while the program itself\r\nhandles preprocessing, fitting, and test results. \r\n\r\n### SINGLE CLASSIFER TESTING\r\n\r\nWith the nine option, you are able to do a single test with one classifier\r\non a dataset. You will have three options, all of which you will have to\r\ndo in order. Availability status will be shown to guide you on which options\r\nare available. \r\n\r\nIn order, the options are Fitting --\u003e Testing --\u003e Results.\r\n\r\nFitting trains the model on the training portions of the data.\r\nTesting pits the model against unfamiliar data to see how much it is able to\r\ncorrectly classify. The model's predictions are returned from this.\r\nResults compare the predictions with the answers and develop a list of\r\nstatistics based on the findings. \r\n\r\nFrom there, you can use the results menu to generate a Confusion Matrix and an\r\nExcel spreadsheet.\r\n\r\n### BATCH TESTING\r\n\r\nThe ten option allows you to batch-test multiple models on a single dataset. \r\nYou will first be asked for the folder you wish to place your results in. If \r\nyou do not answer, or provide a location that the program is unable to find, \r\nit will default to the folder the program is running from. \r\n\r\nNext, you will be asked whether you wish to batch-test different algorithms or\r\nif you wish to batch-test one algorithm multiple times. \r\n\r\nIf you wish to use multiple algorithms, choose the first option. From there, \r\nyou will be asked to select as many different classifiers as you want \r\n(including dupes) until you enter 0 to end selection.\r\n\r\nIf you wish to use the same algorithm multiple times, you can choose the \r\nsecond option (you can also choose the first and spam that option multiple\r\ntimes for the same outcome). When choosing option 2, you will be asked whether\r\nyou wish for there to be a shifting parameter, or everything staying the same.\r\nThis gives the opportunity to see what configuration of any given classifier\r\nworks best for the data at hand. You will then be asked how many times you\r\nwish to run this model for data.\r\n\r\nConfiguring your shifting parameter will be similar to initially customizing \r\nyour classifier, except you will also be asked to set an interval that will\r\nincrease or decrease the value you're changing. To decrease your value, add\r\na \"-\" right before your number (i.e. -50). As with customization, check\r\nSKLearn's documentation so you know what you are changing.\r\n\r\nOnce complete, there is nothing further needed to do. If all is properly \r\nconfigured, several bar graphs and an Excel spreadsheet with data should be\r\nexported to your desired folder. \r\n\r\n## ERRORS OR SUGGESTIONS\r\n\r\nIf you have anything you wish to see in this program, send questions to \r\nlaoluadewoye@gmail.com.\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flaoluadewoye%2Fskloverlay","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flaoluadewoye%2Fskloverlay","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flaoluadewoye%2Fskloverlay/lists"}