Mercurial > hg > tvii
view tvii/dataset/line.py @ 87:9d5a5e9f5c3b
add kmeans + dataset
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Sun, 17 Dec 2017 14:05:57 -0800 |
parents | |
children |
line wrap: on
line source
# -*- coding: utf-8 -*- """ generate a line segment """ import sys from .cli import DatasetGenerationParser def x_range(x_min, x_max, n): """1-D range function""" dx = (x_max - x_min)/(n - 1.) return [x_min + dx*i for i in range(n)] class Line(object): """linear dataset""" # TODO: should woprk in `D` dimensions def __init__(self, W, b): self.W = W self.b = b def y(self, x): return self.W*x + self.b def __call__(self, *x): return [self.y(_x) for _x in x] def main(args=sys.argv[1:]): """CLI""" # parse command line parser = DatasetGenerationParser(description=__doc__) parser.add_argument('W', type=float, help="slope") parser.add_argument('b', type=float, help="offset") parser.add_argument('-x', dest='x_range', type=float, nargs=2, metavar=('MIN', 'MAX'), default=(0., 1.), help="range of `x`") options = parser.parse_args(args) # instantiate line generator line = Line(options.W, options.b) # generate `x` x = x_range(options.x_range[0], options.x_range[1], options.number) # generate `y` y = line(*x) # output points parser.writer().writerows(zip(x, y))