Skip to content

Instantly share code, notes, and snippets.

View trevorwhitney's full-sized avatar

Trevor Whitney trevorwhitney

View GitHub Profile
@trevorwhitney
trevorwhitney / gist:1384621
Created November 22, 2011 01:32
Calculate Decimal Values From Nominal
def calculate_decimal_values(header_present)
first = true
field_values = Array.new
CSV.foreach(@file, :col_sep => ',') do |row|
#first time through, create an array with the correct
#number of columns to hold all the possible values for
#each column
if first
row.size.times do
field_values << Array.new
@trevorwhitney
trevorwhitney / euclidean.rb
Created December 4, 2011 00:34
Euclidean distance similarity metric
def similarity
@similarity = @person1.keys & @person2.keys
if @similarity.empty?
return 0
end
@sim = 0
@similarity.each do |movie|
dif_squared = (@person1[movie] - @person2[movie])**2
@sim += dif_squared
@trevorwhitney
trevorwhitney / pearson.rb
Created December 4, 2011 01:16
Pearson correlation coefficient
def similarity
@similarity = @person1.keys & @person2.keys
if @similarity.empty?
return 0
end
sum1, sum2, sum1Sq, sum2Sq, productSum = 0, 0, 0, 0, 0
@similarity.each do |movie|
sum1 += @person1[movie]
sum2 += @person2[movie]
@trevorwhitney
trevorwhitney / jaccard.rb
Created December 4, 2011 02:29
Jaccard similarity coefficient
def similarity
similarity = 0.0
n = 0.0
@person1.each_index do |index|
if @person1[index] == 0 && @person2[index] == 1
n += 1
elsif @person1[index] == 1 && @person2[index] == 0
n += 1
elsif @person1[index] == 1 && @person2[index] == 1
similarity += 1
@trevorwhitney
trevorwhitney / kMeansClusterer.rb
Created December 4, 2011 05:56
K-Means Clustering
def buildClusters(num_clusters)
@num_clusters = num_clusters
num_attributes = @data[0].length
#find bounds of data
data_boundaries = {}
for i in 0...num_attributes
boundaries = []
boundaries[0] = @data[0][i]
boundaries[1] = @data[0][i]
@trevorwhitney
trevorwhitney / ann.rb
Created December 8, 2011 00:00
Artificial neural network
require 'rubygems'
require 'pry'
require_relative 'layer.rb'
class ArtificialNeuralNetwork
attr_reader :output, :input
#initialize with an array containing number of neurons
#in each layer, including input and output
def initialize(layers)
@trevorwhitney
trevorwhitney / compare.rb
Created December 17, 2011 02:42
Compare class
require 'rubygems'
require 'yaml'
require 'active_record'
require 'csv'
require 'pry'
#require the models
Dir['model/*.rb'].each {|file| require_relative file}
class Compare
@trevorwhitney
trevorwhitney / populate.rb
Created December 17, 2011 02:48
Populate class
require 'rubygems'
require 'yaml'
require 'active_record'
require 'csv'
require 'pry'
#require the models
Dir['model/*.rb'].each {|file| require_relative file}
class Populate
@trevorwhitney
trevorwhitney / gulpfile.js
Last active February 28, 2017 21:07
A gulpfile that will stand up a livereload server in front of shipkin generated assets.
var gulp = require('gulp'),
spawn = require('child_process').spawn,
path = require('path'),
request = require('request'),
connect = require('gulp-connect'),
Promise = require('promise');
var serverPort = 8080,
liveReloadPort = 35729;
@trevorwhitney
trevorwhitney / Either.kt
Created April 4, 2017 22:09
An Either implementation in Kotlin using sealed classes
sealed class Either<out A, out B>
class Left<out A>(val value: A): Either<A, Nothing>()
class Right<out B>(val value: B): Either<Nothing, B>()