Git Product home page Git Product logo

dimesionality-reduction's Introduction

Neighborhood-Component-Analysis

Four methods to implementing NCA which is often used for metric learning and dimension reduction.

  • Methods:
    • Two-layer for loop
    • Matrix operation acceleration
    • Gradient expression
    • SciPy.optimize implementation

Code Architecture

  • nca_naive.py Implementation using two nested for loops to calculate the gradient but very slow.
  • nca_matrix.py Uses matrix operations for acceleration, but still has one for loop; slightly faster, but consumes more memory.
  • nca_fast.py Uses another form of gradient representation, full matrix operation, no for loop; very fast, less memory footprint.
  • nca_scipy.py Uses nca_fast.py method + scipy.optimize optimization package; includes gradient descent and coordinate descent.
  • example.py Uses the MNIST dataset for testing.
  • usage.py Demonstrates how to use it; since all four implementations are encapsulated into the NCA class and implement the fit, fit_transform, and transform methods similar to PCA, it is very easy to use.

Result Images

  • The first 9 images are the results on MNIST, with the number of classes selected from 2 to 9. Since the original image has 784 dimensions, PCA is first used to reduce the dimensionality to 100 dimensions, and then NCA is used to reduce the dimensionality to 2 dimensions.

  • The next 3 images are the results obtained by directly using NCA on the digits (provided by NumPy), breast_cancer and iris datasets to reduce the dimensionality to 2 dimensions.

dimesionality-reduction's People

Contributors

lamthienphuc avatar

Stargazers

PhamKhac avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.