본문 바로가기

전체 글86

2. Linear Regression with multiple variable (1) 1. Multiple features 지난 번 포스팅에서는 x라는 feature 하나에 대해서만 Linear Regression을 적용해 보았다. 하지만, feature 하나로 예측하기란 사실상 어려운 경우가 많다. 때문에, 이번 포스팅에서는 여러 개의 feature를 사용하는 Linear Regression을 살펴보려고 한다. 저번부터 다루었던 집값 예측 문제를 살펴보도록 하자. 저번에는 단순히 집의 크기(size)만 가지고 예측을 했었다. 하지만, 집값에는 화장실 개수, 건축년도, 위치 등등 다양한 요소가 반영이 될 수 있다. 여기서 용어를 좀 확실히 정리하고 가도록 하자. 가장 오른쪽에 보이는 m은 Training data의 개수이다. 47이라는 소리는 data가 47개 있다는 뜻이다. x1, x2.. 2021. 10. 17.
프로그래머스 :: 2018 KAKAO BLIND RECRUITMENT :: 뉴스 클러스터링 https://programmers.co.kr/learn/courses/30/lessons/17677 코딩테스트 연습 - [1차] 뉴스 클러스터링 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브 programmers.co.kr 문제 해석 두 개의 스트링이 주어졌을 때, 자카드 유사도를 구하는 문제. 자세한 조건은 위 링크에서 확인하자. 간단하게, 스트링을 두 단어씩 나눈 뒤, 문자인경우만 계산해서 유사도를 구하면 쉽게 풀 수 있다. 1. 스트링을 두 글자씩 묶어서 반환 해 줄 함수를 하나 작성한다. 1-1. 문제 조건에 특수문자, 숫자인 경우는 제외한다고 나와있으.. 2021. 9. 16.
1. 선형 회귀 ( Linear Regression) 1. 선형 회귀란? 아래와 같이 X를 입력하면 Y값이 나오는 시스템이 있다고 가정하자. X : [ 2015, 2016, 2017] Y : [ 2020, 2021, 2022] 우리는 직관적으로 보면 5가 더해진다고 생각이 가능하고, Y = X + 5라고 알 수 있다. 하지만, 데이터가 많아지고 식이 더 복잡해지면 사람의 두뇌로는 불가능하다. 그래서 우리는 컴퓨터에게 이런 문제를 대신 시켜야 한다. 그러면 컴퓨터는 어떻게 X + 5 라는 식을 유추해낼 수 있을까? 바로 선형회귀를 사용해서 풀 수 있다. 이걸 가능하게 하려면 먼저 가설을 세워야 한다. 간단하게 가설을 아래처럼 세워 보도록 하자. 이때, 앞의 예제랑 비교하면 θ1은 1, θ0은 5이다. 우리 컴퓨터는 이 θ들을 '어떻게든' 찾아내는게 목표다. .. 2021. 9. 8.
Node.js와 Socket.io를 이용한 멀티플레이 탄막피하기 게임 개발기 (3) 기말고사에 인턴까지 겹쳐서 한동안 작성을 못했네요.. 게임 개발은 마무리되었고, 잘 제출했습니다. 하지만 조금 아쉬운부분이 존재해서 조금씩 시간내서 다듬어보려고 해요. 먼저 게임 링크입니다. (소리가 클 수도 있으니 주의해주세요) https://media-software-engineering.herokuapp.com/ Professor VS Student Professor VS Student Game Start media-software-engineering.herokuapp.com Player 0가 호스트가 되며, 게임 시작 버튼을 누르면 음악이 나오면서 게임이 시작됩니다. 아쉬운 점 -1. 플레이어가 방을 만들어서 유저를 모으지 못함 -2. 플레이어 색을 자신이 지정하지 못함 -3. 플레이어의 아이디.. 2021. 7. 18.
Javascript || 숫자 배열 정렬, 오름차순 프로그래머스에서 문제를 풀던 중, 숫자 배열 정렬하는 부분에서 오류가 나서 진행이 되지 않았고, MDN에서 arr.sort() 문서를 찾아봤습니다. 간략하게 설명하면, sort(compareFunction)함수에서 compareFunction을 비워두는 경우, "사전순"으로 정렬이 된다고 설명하고 있습니다. 예를 들어, 아래처럼 [80,9]라는 배열을 sort()를 통해 정렬하면 80은 9보다 크지만, 사전순으로 정렬되기 때문에 80이 앞으로 정렬이 됩니다. let arr = [80,9] arr.sort()//[80,9] 따라서, 비교하는 compareFunction을 따로 지정해줘야 숫자를 오름차순으로 정렬할 수 있습니다 오름차순으로 정렬하는 경우, 공식문서의 예제로는 다음과 같게 정렬하고 있습니다. .. 2021. 7. 18.
Node.js와 Socket.io를 이용한 멀티플레이 탄막피하기 게임 개발기 (2) | 21-05-10 지난 글 [프로젝트/학교 수업] - Node.js와 Socket.io를 이용한 멀티플레이 탄막피하기 게임 개발기 (1) | 21-05-06 다음 글 [프로젝트/학교 수업] - Node.js와 Socket.io를 이용한 멀티플레이 탄막피하기 게임 개발기 (3) 개발 상황 이전 진행상황은 클라이언트가 게임에 접속한 뒤, 키보드 방향키를 통해 공을 움직이면 그 공이 socket.io서버를 통해 연동이 되어 실시간으로 플레이어의 위치가 전송되는 것 까지 개발했다. 학기중이라 바빠서 이것만 할 수는 없어 진행이 조금 느리다. 현재까지 변경된 점은 크게 세 가지 이다. 첫째, 적들의 생성 둘째, 적들의 이동 셋째, 적들과의 충돌판정 변경된점에 맞춰 코드를 올리고 코드 분석을 해 보려 한다. 마찬가지로 짧은 기간동안.. 2021. 5. 10.
Node.js와 Socket.io를 이용한 멀티플레이 탄막피하기 게임 개발기 (1) | 21-05-06 개발 동기 이번 학기에 외국인 교수님의 수업을 듣고있는데, 이 수업에서 협업 방법, OOA, OOD 설계 방법과 디자인 패턴들을 배우면서 실제로 적용해보는 팀 프로젝트를 하고있다. 프로젝트는 어떤 만들고싶은 게임을 하나 정해서 제안서를 작성하고, OOA, OOD를 설계 한 뒤, 설계된 구조에 맞춰서 개발을 하는 것이다. 프로젝트를 하면서, 몇 주 간격으로 Milestone을 진행하고, 한 주 간격으로 Sprint를 진행하면서 개발 상황을 계속해서 브리핑을 해야한다. 중간고사가 끝나고, 이제 실제로 개발할 단계가 되어서, 개발기와 함께 개발 과정을 작성해보려 한다. 게임에 사용되는 툴은 자유롭게 선택하면 되고, 다만 Client-Sever Architecture는 필수로 들어가야 한다. 먼저, 우리 팀은 .. 2021. 5. 6.
운영체제 || 10. Process Scheduling III 1. Real Time System a) Hard real time system > 어떤 task가 주어진 시간안에 반드시 완료되어야 함 > 자동차 에어백, 자율주행 등등 b) Sort real time system > 데드라인이 중요하긴 하나 못맞춰도 기능적 문제는 없음 > 실시간 스트리밍, 온라인게임같은거 > RealTime CPU scheduling은? > Preemption이 가능한 우선순위 기반으로 스케쥴링함 > 왜냐면 non-preemptive 알고리즘을 채용하게 되면 데드라인을 만족하기 어렵기 때문 + Real Time에서는 Task(Process)가 주기적임을 가정함 t는 한번 수행시 t만큼의 시간이 걸리는 것 d는 데드라인 p는 주기 2. RMS - Rate Monotonic Schedu.. 2021. 4. 17.
운영체제 || 9. Process Scheduling II 1. Priority Scheduling > 우선순위를 어떻게 할당하냐에 의해 알고리즘이 달라짐. > preemptive, non-preemptive 둘 다 디자인 가능 > 이 우선순위 알고리즘에 몇가지 문제가 존재함 a) Starvation 문제 >> 높은 우선순위가 계속 들어오게되면 낮은 우선순위를 가진 프로세스는 실행되지 못함 >> 해결방법으로는 ready queue에 있는 시간이 길어지면 일시적으로 우선순위를 높여주는 방법이 있음 b) Priority inversion problem >> 우선순위 역전 문제 >> 순위 높은순으로 진행해야하는데, 경우에따라 낮은 프로세스가 먼저 실행될 때가 있음. >> 가장 유명한 예시로 PathFinder > Low 프로세스에서 LOCK을 걸어서 HIGH 프로세스.. 2021. 4. 17.
운영체제 || 8. Process Scheduling I 1. What is Process Scheduling? > 각 프로세스들은 각자 주소 공간을 가지고 있음 > 멀티 프로세스 환경에서는 각 코어가 각각의 프로세스 코드를 실행함. >> 그렇다면 단일 프로세스인 경우에는?? >> 각 프로세스의 실행을 CPU가 번갈아가면서 작업함. >> 1번 프로세스 조금 2번 프로세스 조금 3번 프로세스 조금 이런식으로 스위칭 >> 그럼 이 순서는 누가 정하냐? >> 당연히 OS가 정하게 됨 OS에서 어떤 프로세스가 실행 될지 정해줌 프로세스 스케쥴링의 목표는 CPU 리소스에 대해서 여러 프로세스들을 가능한 빠르게 교체하는 것. 즉 프로세스간 스위칭을 굉장히 빠르게 하는 것. 스케쥴링 하는 방법을 말하기 전에, 프로세스들의 타입에 대해 설명하려 함. A) CPU-bounde.. 2021. 4. 17.