Home > Hadrian > Basic regression

# Basic regression

## Before you begin…

Launch a Python prompt and import the following:

Python 2.7.6
>>> import numpy
>>>
>>> import titus.prettypfa
>>> from titus.genpy import PFAEngine

## The basic form

Regression models are sometimes difficult to produce, but they are always simple to score. You only need a constant term, coefficients vector, and maybe a link function (for scoring engines built from logistic regression, for instance).

types:
Regression = record(Regression,
const: double,
coeff: array(double))
input: array(double)
output: double
cells:
regression(Regression) = {const: 0.0, coeff: []}
action:
model.reg.linear(input, regression)
''')

## Producing a model

Numpy can compute ordinary least squares linear regressions.

x1data = numpy.random.uniform(-1, 1, 1000); x1data.sort()
x2data = numpy.random.uniform(-1, 1, 1000); x2data.sort()
x3data = numpy.random.uniform(-1, 1, 1000); x3data.sort()
x4data = numpy.random.uniform(-1, 1, 1000); x4data.sort()
x5data = numpy.random.uniform(-1, 1, 1000); x5data.sort()
ydata = numpy.array(range(1000)) + numpy.random.uniform(-0.1, 0.1, 1000)

A = numpy.vstack([numpy.ones(1000), x1data, x2data, x3data, x4data, x5data]).T

allcoeff = numpy.linalg.lstsq(A, ydata)[0]
const = float(allcoeff[0])
coeff = allcoeff[1:].tolist()

## Insert the model into PFA

pfaDocument["cells"]["regression"]["init"] = {"const": const, "coeff": coeff}