A golang version of the Machine learning course from Caltech: Learning from data.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
biasAndVariance
data
generalizationError
gradientDescent
hoeffding
linear
linreg
logreg
measure move weekx work into separate folders and start adding tests Dec 27, 2014
pla
week1
week2
week3
week4
week5
week6
week7
.gitignore
LICENSE
README.md

README.md

caltechx.go

This is a golang version of the Machine learning course from caltech: Learning from data.

  • week 1:
    • PLA (Perceptron learning Algorithm)
  • week 2:
    • Hoeffding Inequality
    • Linear Regression
    • Nonlinear Transformation
  • week 3:
    • Generalization Error
  • week 4:
    • VC bound
    • Bias and Variance
  • week 5:
    • Linear Regression Error
    • Gradient Descent
    • Logistic Regression
  • week 6:
    • Overfitting and Regularization With Weight Decay
    • Neural Networks
  • week 7:
    • Validation
    • Estimators
    • Cross Validation
    • PLA vs. SVM
  • week 8:
    • Support Vector Machines With Soft Margins
    • Polynomial Kernels
    • Cross Validation
    • RBF Kernel

##Build: There is a specific directory week<x> for the homework of each week (1 to 8). To build it run the following command where x = 1

go get ./week1

##Run: Similarly you can run the work of a specific week as follows:

week1

##Test: Tests will be slow as they are running the homeworks whom typically have to run multiple "runs" (1000 or more runs) and compute an average.

go test ./week1

##Todo:

  • refactor
  • concurrent runs.
  • command line animations. Pretty command line / console output on Unix in Python and Go Lang
  • refactor PLA and other functions into separate packages.
  • linear regression should have a Xn array and an Zn collection when a transformation takes place
  • add transpose function.
  • transformation function should accept array with param x0 = 1 to transform
  • better and consistent print statements.
  • catch all error and have all functions send errors.
  • add tests

##Current tree:

$ tree
.
├── LICENSE
├── README.md
├── biasAndVariance
│   └── biasAndVariance.go
├── data
│   ├── in.dta
│   └── out.dta
├── generalizationError
│   └── generalizationerror.go
├── gradientDescent
│   └── gradientDescent.go
├── hoeffding
│   └── hoeffding.go
├── linear
│   └── linear.go
├── linreg
│   ├── linreg.go
│   └── matrix.go
├── logreg
│   └── logreg.go
├── measure
│   └── measure.go
├── pla
│   └── pla.go
├── week1
│   ├── week1.go
│   ├── week1_test.go
├── week2
│   └── week2.go
├── week3
│   └── week3.go
├── week4
│   └── week4.go
├── week5
│   └── week5.go
├── week6
│   └── week6.go
└── week7
    └── week7.go

##Thoughts:

It might be better to divide the packages based on models and methods. Here is how the topics are presented in the learning from data web page: topics

###models:

  • linear classification: PLA
  • linear regression
  • logistic regression
  • non linear transformation
  • neural networks
  • support vector machines
  • nearest neighbors

###methods:

  • regularization
  • validation