sublime Text 2로 '만들면서 배우는 기계학습' 2장 파라미터 조정에의한 학습의 c 코드들 따라 작성하기, cygwin으로 컴파일 하고 exe 실행 파일 생성, 테스트하기.

15/12/22 화

최소 제곱법에의한 계산식 적용 c 코드:

#include <stdio.h> 
#define TEXTLENGTH 4096 //텍스트 최대 크기

int main(){
	char text[TEXTLENGTH];
	double xi, yi; //입력된 데이터
	double sxi = 0, syi = 0, sxiyi = 0, sxi2 = 0; //각항 계산 결과 저장용
	double a0, a1; //계수 
	int n = 0; //데이터 갯수

	//데이터 입력
	while(fgets(text, TEXTLENGTH, stdin) != NULL){
		if(sscanf(text, "%lf %lf",  &xi, &yi) ==2){
			//변환 성공, 각 항 계산
			sxi += xi;
			syi += yi;
			sxiyi += xi * yi;
			sxi2 += xi * xi;
			++n;
		}else{
			//변환 실패, 건너뛰기
			fprintf(stderr, "바르지 않은 데이터: %s\n", text);
		}
	}

	if(n > 1){ //데이터가 2개 이상 존재시
		//계수 계산
		a0 = (sxi2 * syi - sxiyi * sxi) / (n * sxi2 - sxi * sxi);
		a1 = (n * sxiyi - sxi * syi) / (n * sxi2 - sxi * sxi);
		//결과 출력
		printf("%1f\n%1f\n", a0, a1);
	}else{ //데이터 부족시
		fprintf(stderr, "데이터가 부족합니다.\n");
	}

	return 0;
}

Cygwin (유닉스 공통?) 명령어들

ls: 폴더 내 파일 보기.
cat: 파일 내용 보기. ex) cat sample.txt
cd 폴더명: 하위 폴더로 이동 ex) cd cprog
head: 앞 부분 추출
ex) head -5 test.txt > test5line.txt
text.txt 의 처음 5줄만 뽑아 text5line.txt로 저장하기.

sort: 파일 내용 정렬해서 보기.
grep: 특정 줄만 선택하여 보기.
lpr: 프린터로 출력하기.

gcc testProgram.c -o testProgram : gcc로 c파일 컴파일하기
./ : 프로그램 실행 ex) ./testProgram < sample.txt

ctrl-D: 입력 종료

iconv: 텍스트 문서의 코드형식 변경
ex) $ iconv -f euc-kr -t utf-8 kikaiStudy.txt > kikaiStudyU8.txt
: euc-kr형식인 kikaiStudy.txt를 utf-8형식으로 변경해 kikaiStudyU8.txt로 저장하기.
ex) $ iconv -f utf-8 -t sjis < testUtf8.txt > testSjis.txt
: utf-8형식인 testUtf8.txt를 JIS(sjis)형식으로 변경해 testSjis.txt로 저장하기.