help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Creating regularized linear regression


From: lawrencema
Subject: Creating regularized linear regression
Date: Thu, 26 Jul 2018 17:27:24 -0500 (CDT)

Hello,

I have just finished ex2_reg.m for 2 features regularized logistic
regression.

I am thinking how can I add one more feature and turn it into regularized
linear regression.

The following code is from ex2_reg.m and I tried to alter to 3 features and
predict.m changed to p = X * theta;

However it still does work, any thoughts?

The error msg is : 
error: reshape: can't reshape 784x1 array to 1x1 array
error: called from
    fminunc at line 259 column 13
    ex2_reg2 at line 93 column 20



%% Initialization
clear ; close all; clc

%% Load Data
%  The first two columns contains the X values and the third column
%  contains the label (y).

data = load('FortaData.csv');
X = data(:, [1:3]); 
y = data(:, 4);

plotData(X, y);

% Put some labels 
hold on;

% Labels and Legend
xlabel('Microchip Test 1')
ylabel('Microchip Test 2')

% Specified in plot order
legend('y = 1', 'y = 0')
hold off;


%% =========== Part 1: Regularized Logistic Regression ============
%  In this part, you are given a dataset with data points that are not
%  linearly separable. However, you would still like to use logistic 
%  regression to classify the data points. 
%
%  To do so, you introduce more features to use -- in particular, you add
%  polynomial features to our data matrix (similar to polynomial
%  regression).
%

% Add Polynomial Features
fprintf('Number of Features, including the Intercept Term\n');
% "+1" to include X0 in the counting
fprintf('  Before Polynomial Expansion : %2d\n', size(X, 3) + 1);
% mapFeature will add the intercept term for you
X = mapFeature(X(:,1), X(:,2), X(:,3));
fprintf('  After  Polynomial Expansion : %2d\n', size(X, 3));

% Initialize fitting parameters
initial_theta = zeros(size(X, 3), 1);

% Set regularization parameter lambda to 1
lambda = 1;

% Compute and display initial cost and gradient for regularized
% logistic regression
[cost, grad] = costFunctionReg(initial_theta, X, y, lambda);

fprintf('Cost at initial theta (zeros): %f\n', cost);

fprintf('\nProgram paused. Press enter to continue.\n');
pause;

%% ============= Part 2: Regularization and Accuracies =============
%  In this part, you will get to try different values of lambda and 
%  see how regularization affects the decision boundary.
%
%  Try the following values of lambda (0, 1, 10, 100).
%
%  How does the decision boundary change when you vary lambda?
%  How does the training set accuracy vary?
%

% Initialize fitting parameters
initial_theta = zeros(size(X, 3), 1);

% Set regularization parameter lambda to 1 (you should vary this)
lambda = 1;  % Try 0, 1, 10, 100

% Set Options
options = optimset('GradObj', 'on', 'MaxIter', 1000);

% Optimize
[theta, J, exit_flag] = ...
        fminunc(@(t) costFunctionReg(t, X, y, lambda), initial_theta, options);
        
% Plot Boundary
%plotDecisionBoundary(theta, X, y);
%hold on;
%title(sprintf('lambda = %g', lambda))

% Labels and Legend
xlabel('Microchip Test 1')
ylabel('Microchip Test 2')

legend('y = 1', 'y = 0', 'Decision boundary')
hold off;

% Compute accuracy on our training set
p = predict(theta, X);

fprintf('Train Accuracy: %f\n\n', mean(p == y) * 100);

zdata = load('TodayData.csv');
z = zdata(:, [1:3]); 

% Predicting one value
fprintf('\n\nPredicting one value\n');
X_map = mapFeature(z);
p = predict(theta, X_map)



--
Sent from: http://octave.1599824.n4.nabble.com/Octave-General-f1599825.html



reply via email to

[Prev in Thread] Current Thread [Next in Thread]