Skip to content

A Simple C++ Data Mining,Machine Learning, And Deep Learning Library

License

Notifications You must be signed in to change notification settings

MuteJester/Cpp_Pickaxe

Repository files navigation

Cpp_Pickaxe

Stargazers Commits Issues MIT License LinkedIn


Logo

Pickaxe Library

Simple Solution For Fast Programming Of Data Mining ,Deep Learning And Machine Learning Models As Well As CSV Management.
Explore the docs »

View Demo · Report Bug · Request Feature

Table of Contents

About The Project

There are a few Deep Learning And Machine Learning C++ libraries out there, but none of them in my mind were simple enough to use and required the user to install loads of additional dll's and waste a lot of time of linking all the parts together. At that moment the idea is to create a simple plug and play C++ header file which can be simply dragged into the folder of any project and functionality of all the tools that the Pickaxe library can be quickly and easily accessed and used.

Here's Why Pickaxe :

  • It's As Simple As Drag And Drop and you are ready to code!
  • Function and methods are named meaningful names that way it is always clear what are the parameters or what does the method do!
  • CSV handling is all included in the library working with them made much easier trough java code!
  • Developing complex matrix algorithms ? we've got you covered with a dynamic Matrix class filled with quick usful methods strating from eigen value/vector extraction trough basic operations up to decompositions.

Built With

Installation

  1. Download All Headerfiles From The Repository Go To Repository Folder
  2. Copy Headerfiles Into Your Projects Folder
  3. Include "CPP_Pickaxe.h" and "CPP_Sipl.h" (for image processing and visual elements like plots)
  4. You Are Ready To Code!

Usage

Ploting Linear Regression Algorithm

Logo

Pickaxe Offers Binary Linear Regression As Well As Multivariable Linear Regression in the following exmaple a fast method for immediate ploting of a linear regression model.

Ploting Logistic Regression Algorithm

Logo

Pickaxe Offers Binary Logistic Regression As Well As Multivariable Logistic Regression in the following example a fast method for immediate plotting of a logistic regression model. the logistic regression functionality, as well as the linear regression, can be used as pleased the methods return the weights resulting after computing the optimal state using gradient descent;

Ploting 2D K-Means Algorithm

Logo

Pickaxe Offers a fast and efficenet K-means calculation aglorithm although currently only up to 3 dimensional K - Means calculations supported soon there will a higher dimension support system.

Ploting 2D K-Nearest-Neighbors Algorithm

Logo

Pickaxe Offers a simple and dynamic kNN implementation aglorithm for all your use case as well as a quick plot method for immediate display of 2D kNN results. In the above image- the red ciricle with the green dot in the center is the new added value, blue points that turned pink are the specified K nearest neighbors.

Ploting User Designed Fully Connected Neural Network Topology

Logo

Pickaxe Offers you a method which is a part of the Neural_Net class which allows you to visualize you neural network topology inorder for you to validate that the topology you have specified in the Neural_Net class constructor is indeed the topology created and set.

Currently Supported Data Mining / Machine Learning / Deep Learning, Algorithms

  • Linear Regression using Static Formula (Only supported for single variable linear regression)
  • Linear Regression using Gradient Descent (Multivariable regression supported using matrix with Lasso Regression and L1 Regularization)
  • Logistic Regression of binary variable as well as multivariable equations
  • Validation Of Logistic Regression - Confusion Matrix
  • K-Means calculation (up to 3-dimensional data variables)
  • kNN - k Nearest Neighbors
  • Fully Connected Neural Network Constructor class accepting all forms of network topologies for dynamic use
  • Q Learning "Custom-fit" Class applicable for any use
  • Error computations such as MSE,MAE,MPE
  • Correlation computations such as R^2, Adj-R^2, Pearsons,Spearman -
  • Confusion Matrix Construction For A Given Model Weights
  • Some of the models have supported validation methods which will automatically compare machine guesses against actual values
  • Principal Component Analysis
  • Corpus And Bag Of Words Containers
  • Sentiment Analysis (Vader Algorithm)

Currently Supported CSV Handling Functionality

  • Reading/Writing CSV Files
  • CSV Importation From Web URL's
  • Column Classification (Numeric/Categorical/Date-Time/Text)
  • Single Block/Column/Row Manipulations
  • Removal and Addition of columns and rows
  • Pattern Replacment
  • Pulling and pushing values into csv stated position
  • CSV spliting by percentage into seperate data sets
  • Column Statistical Calculations such as - Column Standard Deviation and Column Variance/Covariance,Column Correlation..
  • Column Missing Value Reduction / Replacement

All Visual Elements Are Created Using The SIPL Library

For more Detailed Instructions, please refer to the User Instructions

Roadmap

See the open issues for a list of proposed features (and known issues).

Contributing

Contributions are what make the open-source community such a powerful place to create new ideas, inspire, and make progress. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the MIT License. See LICENSE for more information.

Contact

Thomas Konstantinovsky - thomaskon90@gmail.com

Project Link: https://github.com/MuteJester/Cpp_Pickaxe