0% found this document useful (0 votes)
8 views

Final Code

Uploaded by

Vineet Jaiswal
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views

Final Code

Uploaded by

Vineet Jaiswal
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

% Load necessary packages

import matlab.io.*
import matlab.internal.math.*

% Read the data from Excel file


data = readtable('C:\\Users\\Vineet Jaiswal\\Desktop\\G6\\MATLAB\\Concrete Mix
Design- Workbook complete.xlsx', 'Sheet', 1, 'Range', 'A2:AJ5000');

% Extract the feature matrix (X) and target variables (y)


X = data(:, 1:33);
ls1 = data(:, 34);
ls2 = data(:, 35);
ls3 = data(:, 36);

% Convert tables to arrays


X = table2array(X);
ls1 = table2array(ls1);
ls2 = table2array(ls2);
ls3 = table2array(ls3);

% Replace NaN values with mean of respective columns


X = fillmissing(X, 'constant', mean(X, 'omitnan'));
ls1 = fillmissing(ls1, 'constant', mean(ls1, 'omitnan'));
ls2 = fillmissing(ls2, 'constant', mean(ls2, 'omitnan'));
ls3 = fillmissing(ls3, 'constant', mean(ls3, 'omitnan'));

% Split the data into training and testing sets


[trainIdx1, testIdx1] = crossvalind('HoldOut', ls1, 0.2);
[trainIdx2, testIdx2] = crossvalind('HoldOut', ls2, 0.2);
[trainIdx3, testIdx3] = crossvalind('HoldOut', ls3, 0.2);

X1_train = X(trainIdx1, :); ls1_train = ls1(trainIdx1);


X1_test = X(testIdx1, :); ls1_test = ls1(testIdx1);
[X1_val, ls1_val, X1_test, ls1_test] = splitTestData(X1_test, ls1_test);

X2_train = X(trainIdx2, :); ls2_train = ls2(trainIdx2);


X2_test = X(testIdx2, :); ls2_test = ls2(testIdx2);
[X2_val, ls2_val, X2_test, ls2_test] = splitTestData(X2_test, ls2_test);

X3_train = X(trainIdx3, :); ls3_train = ls3(trainIdx3);


X3_test = X(testIdx3, :); ls3_test = ls3(testIdx3);
[X3_val, ls3_val, X3_test, ls3_test] = splitTestData(X3_test, ls3_test);

% Function to split test data into validation and test sets


function [X_val, y_val, X_test, y_test] = splitTestData(X_test, y_test)
numTest = length(y_test);
valSize = floor(numTest / 2);
valIdx = randperm(numTest, valSize);
testIdx = setdiff(1:numTest, valIdx);
X_val = X_test(valIdx, :); y_val = y_test(valIdx);
X_test = X_test(testIdx, :); y_test = y_test(testIdx);
end

% Apply Lasso regression


start_time = tic;
[B1, FitInfo1] = lasso(X1_train, ls1_train, 'Alpha', 0.1);
[B2, FitInfo2] = lasso(X2_train, ls2_train, 'Alpha', 0.1);
[B3, FitInfo3] = lasso(X3_train, ls3_train, 'Alpha', 0.1);
elapsed_time = toc(start_time);
% Predict on the testing data
ls1_pred = X1_test * B1 + FitInfo1.Intercept;
ls2_pred = X2_test * B2 + FitInfo2.Intercept;
ls3_pred = X3_test * B3 + FitInfo3.Intercept;

% Predict on the validation set


ls1_val_pred = X1_val * B1 + FitInfo1.Intercept;
ls2_val_pred = X2_val * B2 + FitInfo2.Intercept;
ls3_val_pred = X3_val * B3 + FitInfo3.Intercept;

% Evaluate the model on the validation set


mse_val1 = mean((ls1_val - ls1_val_pred).^2);
r2_val1 = 1 - sum((ls1_val - ls1_val_pred).^2) / sum((ls1_val - mean(ls1_val)).^2);
fprintf('Validation Mean Squared Error: %.4f\n', mse_val1);
fprintf('Validation R-squared Score: %.4f\n', r2_val1);

mse_val2 = mean((ls2_val - ls2_val_pred).^2);


r2_val2 = 1 - sum((ls2_val - ls2_val_pred).^2) / sum((ls2_val - mean(ls2_val)).^2);
fprintf('Validation Mean Squared Error: %.4f\n', mse_val2);
fprintf('Validation R-squared Score: %.4f\n', r2_val2);

mse_val3 = mean((ls3_val - ls3_val_pred).^2);


r2_val3 = 1 - sum((ls3_val - ls3_val_pred).^2) / sum((ls3_val - mean(ls3_val)).^2);
fprintf('Validation Mean Squared Error: %.4f\n', mse_val3);
fprintf('Validation R-squared Score: %.4f\n', r2_val3);

% Save predictions and actuals to Excel


filename = 'out.xlsx';
writetable(array2table(ls1_pred), filename, 'Sheet', 'prediction1',
'WriteVariableNames', false);
writetable(array2table(ls1_test), filename, 'Sheet', 'actuals1',
'WriteVariableNames', false);
writetable(array2table(ls2_pred), filename, 'Sheet', 'prediction2',
'WriteVariableNames', false);
writetable(array2table(ls2_test), filename, 'Sheet', 'actuals2',
'WriteVariableNames', false);
writetable(array2table(ls3_pred), filename, 'Sheet', 'prediction3',
'WriteVariableNames', false);
writetable(array2table(ls3_test), filename, 'Sheet', 'actuals3',
'WriteVariableNames', false);

% Evaluate the model


mse1 = mean((ls1_test - ls1_pred).^2);
r21 = 1 - sum((ls1_test - ls1_pred).^2) / sum((ls1_test - mean(ls1_test)).^2);
fprintf('Mean Squared Error: %.4f\n', mse1);
fprintf('R-squared Score: %.4f\n', r21);
fprintf('Time elapsed: %.4f seconds\n', elapsed_time);

mse2 = mean((ls2_test - ls2_pred).^2);


r22 = 1 - sum((ls2_test - ls2_pred).^2) / sum((ls2_test - mean(ls2_test)).^2);
fprintf('Mean Squared Error: %.4f\n', mse2);
fprintf('R-squared Score: %.4f\n', r22);
fprintf('Time elapsed: %.4f seconds\n', elapsed_time);

mse3 = mean((ls3_test - ls3_pred).^2);


r23 = 1 - sum((ls3_test - ls3_pred).^2) / sum((ls3_test - mean(ls3_test)).^2);
fprintf('Mean Squared Error: %.4f\n', mse3);
fprintf('R-squared Score: %.4f\n', r23);
fprintf('Time elapsed: %.4f seconds\n', elapsed_time);

% Save coefficients to Excel


writetable(array2table(B1), filename, 'Sheet', 'coefficients1',
'WriteVariableNames', false);
writetable(array2table(B2), filename, 'Sheet', 'coefficients2',
'WriteVariableNames', false);
writetable(array2table(B3), filename, 'Sheet', 'coefficients3',
'WriteVariableNames', false);

disp('all done');

You might also like