Octave 머신러닝
2021. 5. 18. 22:59ㆍML/coursera
728x90
반응형
출력
fprintf('octave')
identity matrix
5x5 정사각행렬에서 주대각선의 원소가 모두 1이고, 다른 원소는 모두 0인 행렬 을 만든다
I = eye(5);
데이터 로드
octave 에서는 주석을 쓸때 % 를 씁니다
data = load('data1.txt');
X = data(:, 1); % 전체 데이터에서 1번째 행
y = data(:, 2); % 전체 데이터에서 2번째 행
m = length(y); % 트레이닝 세트의 개수
플롯(plot) 만들기
plot(x, y, 'rx', 'MarkerSize', 10); % 데이터로 플롯(plot)을 만든다
ylabel('y'); % y 축 레이블
xlabel('x'); % x 축 레이블
선형회귀 Linear Regression with one variable
경사하강법 (Gradient Descent)
X = [ones(m, 1), data(:,1)]; % y 길이만큼의 1로된 열을 만들어 추가한다
theta = zeros(2, 1); 2행 1열 0 행렬 생성(theta = [0 ; 0])
iterations = 1000;
alpha = 0.01; % 학습률(learning rate)
theta 값이 0 이면 h(x) = 0+0x 가된다.
비용함수 (Cost Function)
% computeCost
function J = computeCost(X, y, theta)
% 비용함수 J를 0 으로 초기화
m = length(y)
J = 0;
J = (1/(2 * m)) * (sum(((X * theta) - y) .^ 2));
end
gradient descent 실행
% GradientDescent
function [theta, J_history] = gradientDescent(X, y, theta, alpha, num_iters)
% m과 J_history를 초기화
m = length(y);
J_history = zeros(num_iters, 1);
for iter = 1:num_iters
theta = theta - alpha*(1/m) * (X' * ((X * theta) - y));
J_history(iter) = computeCost(X, y, theta); % iteration 마다 cost J 를 저장
end
end
% 비용계산
J = computeCost(X, y, theta);
% theta = [0 ; 0] 사용
% 약 32.07이 나온다
J = computeCost(X, y, [-1 ; 2]);
% theta = [-1 ; 2] 사용
% 약 54.24
%경사하강 실행
theta = gradientDescent(X, y, theta, alpha, iterations);
% 쎄타값 출력
% -3.6303, 1.1664
fprintf('%f\n', theta);
반응형