def output(part_id): # Random Test Cases X = np.column_stack( (np.ones(20), (np.exp(1) * np.sin(np.linspace(1, 20, 20))), (np.exp(0.5) * np.cos(np.linspace(1, 20, 20))))) y = np.sin(X[:, 0] + X[:, 1]) > 0 Xm = np.array([[-1, -1], [-1, -2], [-2, -1], [-2, -2], [1, 1], [1, 2], [2, 1], [2, 2], [-1, 1], [-1, 2], [-2, 1], [-2, 2], [1, -1], [1, -2], [-2, -1], [-2, -2]]).reshape((16, 2)) ym = np.array([1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4]).reshape(16, 1) t1 = np.sin(np.array(range(1, 24, 2)).reshape(3, 4).T) t2 = np.cos(np.array(range(1, 40, 2)).reshape(5, 4).T) fname = srcs[part_id - 1].rsplit('.', 1)[0] mod = __import__(fname, fromlist=[fname], level=1) func = getattr(mod, fname) if part_id == 1: J = lrCostFunction(np.array([0.25, 0.5, -0.5]), X, y, 0.1) grad = gradientFunctionReg(np.array([0.25, 0.5, -0.5]), X, y, 0.1) return sprintf('%0.5f ', np.hstack((J, grad)).tolist()) elif part_id == 2: return sprintf('%0.5f ', oneVsAll(Xm, ym, 4, 0.1)) elif part_id == 3: return sprintf('%0.5f ', predictOneVsAll(t1, Xm)) elif part_id == 4: return sprintf('%0.5f ', predict(t1, t2, Xm))
def output(part_id): # Random Test Cases X = np.column_stack((np.ones(20), (np.exp(1) * np.sin(np.linspace(1, 20, 20))), (np.exp(0.5) * np.cos(np.linspace(1, 20, 20))))) y = np.sin(X[:,0] + X[:,1]) > 0 Xm = np.array([[-1,-1],[-1,-2],[-2,-1],[-2,-2],[1,1],[1,2],[2,1],[2,2],[-1,1], [-1,2],[-2,1],[-2,2],[1,-1],[1,-2],[-2,-1],[-2,-2]]).reshape((16,2)) ym = np.array([1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4]).reshape(16,1) t1 = np.sin(np.array(range(1,24,2)).reshape(3,4).T) t2 = np.cos(np.array(range(1,40,2)).reshape(5,4).T) fname = srcs[part_id-1].rsplit('.',1)[0] mod = __import__(fname, fromlist=[fname], level=1) func = getattr(mod, fname) if part_id == 1: J = lrCostFunction(np.array([0.25, 0.5, -0.5]), X, y, 0.1) grad = gradientFunctionReg(np.array([0.25, 0.5, -0.5]), X, y, 0.1) return sprintf('%0.5f ', np.hstack((J, grad)).tolist()) elif part_id == 2: return sprintf('%0.5f ', oneVsAll(Xm, ym, 4, 0.1)) elif part_id == 3: return sprintf('%0.5f ', predictOneVsAll(t1, Xm)) elif part_id == 4: return sprintf('%0.5f ', predict(t1, t2, Xm))
#one-vs-all import numpy as np from ex2.gradientFunctionReg import gradientFunctionReg from ex3.lrCostFunction import lrCostFunction theta_t = np.array([[-2.], [-1.], [1.], [2.]]) X_tem = (np.arange(1, 16).reshape(5, 3, order='F')) / 10. X_t = np.column_stack((np.ones((5, 1)), X_tem)) y_t = np.array([[1.], [0.], [1.], [0.], [1.]]) lambda_t = 3 cost_t = lrCostFunction(theta_t, X_t, y_t, lambda_t) grad_t = gradientFunctionReg(theta_t, X_t, y_t, lambda_t) print 'Test Case 1, cost: %4f' % cost_t print 'Test Case 1, grad: ', ["%0.4f" % i for i in grad_t]