Exemple #1
0
def q20():
	def cross_validate(X, y, lamda):
		Xs = X[:40], X[40:80], X[80:120], X[120:160], X[160:]
		ys = y[:40], y[40:80], y[80:120], y[120:160], y[160:]
		reg = ridge.RidgeRegression(lamda)
		e_cv = 0.0
		for i in range(5):
			X_val, y_val = Xs[i], ys[i]
			X_train = np.concatenate([Xs[j] for j in range(5) if i != j])
			y_train = np.concatenate([ys[j] for j in range(5) if i != j])
			reg.fit(X_train, y_train)
			e_cv += reg.evaluate(X_val, y_val, sign)
		return e_cv / 5
	X_train, y_train = load_train()
	X_test, y_test = load_test()
	lamdas = np.logspace(-10, 2, 13)
	best = (1.0, None)
	for lamda in lamdas:
		e_cv = cross_validate(X_train, y_train, lamda)
		if e_cv <= best[0]:
			best = (e_cv, lamda)
	best_reg = ridge.RidgeRegression(best[1])
	best_reg.fit(X_train, y_train)
	print "lamda: %e, E_in: %.3f, E_out: %.3f" % (best[1],
		best_reg.evaluate(X_train, y_train, sign),
		best_reg.evaluate(X_test, y_test, sign))
Exemple #2
0
def test():
	X_train, y_train = load_train()
	X_test, y_test = load_test()
	lamda = 0
	reg = ridge.RidgeRegression(lamda)
	reg.fit(X_train, y_train)
	e_in = reg.evaluate(X_train, y_train, sign)
	e_out = reg.evaluate(X_test, y_test, sign)
	print "E_in: %.3f, E_out: %.3f" % (e_in, e_out)
Exemple #3
0
	def cross_validate(X, y, lamda):
		Xs = X[:40], X[40:80], X[80:120], X[120:160], X[160:]
		ys = y[:40], y[40:80], y[80:120], y[120:160], y[160:]
		reg = ridge.RidgeRegression(lamda)
		e_cv = 0.0
		for i in range(5):
			X_val, y_val = Xs[i], ys[i]
			X_train = np.concatenate([Xs[j] for j in range(5) if i != j])
			y_train = np.concatenate([ys[j] for j in range(5) if i != j])
			reg.fit(X_train, y_train)
			e_cv += reg.evaluate(X_val, y_val, sign)
		return e_cv / 5
Exemple #4
0
def q15():
	X_train, y_train = load_train()
	X_test, y_test = load_test()
	lamdas = np.logspace(-10, 2, 13)
	best = (1.0, None)
	for lamda in lamdas:
		reg = ridge.RidgeRegression(lamda)
		reg.fit(X_train, y_train)
		e_out = reg.evaluate(X_test, y_test, sign)
		if e_out <= best[0]:
			best = (e_out, reg)
	best_reg = best[1]
	print "lamda: %e, E_in: %.3f, E_out: %.3f" % (
		best_reg.lamda,
		best_reg.evaluate(X_train, y_train, sign),
		best_reg.evaluate(X_test, y_test, sign))
Exemple #5
0
def q17():
	X, y = load_train()
	X_train, X_val = X[:120], X[120:]
	y_train, y_val = y[:120], y[120:]
	X_test, y_test = load_test()
	lamdas = np.logspace(-10, 2, 13)
	best = (1.0, None)
	for lamda in lamdas:
		reg = ridge.RidgeRegression(lamda)
		reg.fit(X_train, y_train)
		e_val = reg.evaluate(X_val, y_val, sign)
		if e_val <= best[0]:
			best = (e_val, reg)
	best_reg = best[1]
	print "lamda: %e, E_train: %.3f, E_val: %.3f, E_out: %.3f" % (
		best_reg.lamda,
		best_reg.evaluate(X_train, y_train, sign),
		best_reg.evaluate(X_val, y_val, sign),
		best_reg.evaluate(X_test, y_test, sign))
ymin = -1
ymax = 25

fig, axes = plt.subplots(nrows=2, ncols=5)
for i in range(5):
    axes[0, i].set_xlim([xmin, xmax])
    axes[0, i].set_ylim([ymin, ymax])
    axes[1, i].set_xlim([xmin, xmax])
    axes[1, i].set_ylim([ymin, ymax])
    xx = x[:2 + i * 2]
    yy = y[:2 + i * 2]
    axes[0, i].scatter(xx, yy, color="k")
    axes[1, i].scatter(xx, yy, color="k")
    model = linearreg.LinearRegression()
    model.fit(xx, yy)
    xs = [xmin, xmax]
    ys = [model.w_[0] + model.w_[1] * xmin,
          model.w_[0] + model.w_[1] * xmax]
    axes[0, i].plot(xs, ys, color="k")

    model = ridge.RidgeRegression(10.)
    model.fit(xx, yy)

    xs = [xmin, xmax]
    ys = [model.w_[0] + model.w_[1] * xmin,
          model.w_[0] + model.w_[1] * xmax]
    axes[1, i].plot(xs, ys, color="k")

plt.show()

Exemple #7
0
import ridge
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d


x = np.array([1, 3, 4, 6, 7])
y = np.array([1, 3, 3, 5, 4])
model = ridge.RidgeRegression(1.)
model.fit(x, y)
b, a = model.w_

plt.scatter(x, y, color="k")
xmax = x.max()
plt.plot([0, xmax], [b, b + a * xmax], color="k")
plt.show()

n = 100
scale = 10

np.random.seed(0)
X = np.random.random((n, 2)) * scale
w0 = 1
w1 = 2
w2 = 3
y = w0 + w1 * X[:, 0] + w2 * X[:, 1] + np.random.randn(n)

model = ridge.RidgeRegression()
model.fit(X, y)

xmesh, ymesh = np.meshgrid(np.linspace(0, scale, 20),
Exemple #8
0
import ridge

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d

# test1
x = np.array([1, 2, 4, 6, 7]).reshape(-1, 1)
y = np.array([1, 3, 3, 5, 4]).reshape(-1, 1)
model = ridge.RidgeRegression(lamb=1.)
model.fit(x, y)
b, a = model.w

plt.scatter(x, y, color='k')
xmax = x.max()
plt.plot([0, xmax], [b, b + a * xmax], color='k')

plt.show()

# test2
n = 100
scale = 10

np.random.seed(0)
X = np.random.random((n, 2)) * scale
w0 = 1
w1 = 2
w2 = 3

y = w0 + w1 * X[:, 0] + w2 * X[:, 1] + np.random.randn(n)