Internet

Internet이 동작하기 위해서 computer가 최소, 최대 2대 필요함

각각 컴퓨터들이 Internet으로 연결됨 = computer 간의 사회가 만들어짐 = 1대가 가지고 있는 한계 초월

1대의 컴퓨터는 정보를 다른 컴퓨터에게 요청하고 또 다른 컴퓨터는 요청한 정보를 응답함

 

Web

컴퓨터에 역할에 따라 이름을 붙임 : 서비스 요청(client), 서비스 응답(server)
client → Internet → server 
client ← Internet ← server

 

Database

MySQL는 두개의 프로그램을 설치함 - Database Client, Database Server

database를 다룰 때, database server를 직접 다루는 것처럼 보이지만, database server를 직접 다룰 수 없음

반드시 database client 사용해야 함

 

Database client

프롬포트에 mysql이라고 했을 때, 실행되는 명령어 기반의 프로그램

MySQL monitor(client)를 통해 명령어로 서버를 제어

 ※ MySQL moniter : MySQL server에 접속할 수 있도록 default로 번들로서 제공하는 기본 클라이언트 프로그램

 

데이터베이스 서버와 클라이언트의 구조로 생기는 효과

수많은 데이터베이스 클라이언트들이 database server를 중심으로 데이터 저장 사용, 관리, 등을 할 수 있음

 


♥ 이해하는 것이 아닌 익숙해지는 것
익숙해지는 방법이 이해와 암기

 

 

 

 

 

 

참고 : https://opentutorials.org/course/3161/19546

'Computer Science > Database' 카테고리의 다른 글

[MySQL] Mac M1에서 설치 및 실행  (0) 2021.11.03
[MySQL] MySQL Client  (0) 2020.08.15
[SQL] table 완성하기  (1) 2020.08.07
[SQL] create table  (0) 2020.08.07
[MySQL] MySQL Moniter  (0) 2020.08.05

https://bskwak.tistory.com/141 에 이어서 table 완성하기 

 

[SQL] create table

SQL이란? Structed Query Language 데이터베이스에서 사용되는 일종의 공통 언어 table data를 저장하는 database의 개체로, database를 구성하는 가장 기본적이고 핵심적인 요소 row : record, 행, x축, database..

bskwak.tistory.com

 

SQL의 INSERT 구문

mysql create row

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

 

row 1 

INSERT INTO topic (title, description,created,author,profile) 
VALUES('MYSQL','MYSQL is ...',NOW(),'egoing','developer');

- NOW( ) 함수는 현재 날짜,시간을 불러옴

 

나머지 row도 동일하게 진행

 

 

SQL의 SELECT 구문

mysql select syntax

https://dev.mysql.com/doc/refman/8.0/en/select.html

 

MySQL :: MySQL 8.0 Reference Manual :: 13.2.10 SELECT Statement

13.2.10 SELECT Statement SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr] ... [into_option] [FROM table_referenc

dev.mysql.com

링크에 있는 코드

SELECT
    [ALL | DISTINCT | DISTINCTROW ]
    [HIGH_PRIORITY]
    [STRAIGHT_JOIN]
    [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
    [SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
    select_expr [, select_expr] ...
    [into_option]
    [FROM table_references
      [PARTITION partition_list]]
    [WHERE where_condition]
    [GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]]
    [HAVING where_condition]
    [WINDOW window_name AS (window_spec)
        [, window_name AS (window_spec)] ...]
    [ORDER BY {col_name | expr | position}
      [ASC | DESC], ... [WITH ROLLUP]]
    [LIMIT {[offset,] row_count | row_count OFFSET offset}]
    [into_option]
    [FOR {UPDATE | SHARE}
        [OF tbl_name [, tbl_name] ...]
        [NOWAIT | SKIP LOCKED]
      | LOCK IN SHARE MODE]
    [into_option]

into_option: {
    INTO OUTFILE 'file_name'
        [CHARACTER SET charset_name]
        export_options
  | INTO DUMPFILE 'file_name'
  | INTO var_name [, var_name] ...
}

대괄호 [] 의 경우 : 생략 가능

FROM의 위치 중요

 

모든 데이터 화면에 출력

SELECT * FROM table_name;

 

특정 column 제한하여 출력

SELECT column FROM table_name;
-- SELECT id, title, created, author FROM topic;

 

원하는 정보에 해당하는 행만 출력

WHERE문을 통해 필요한 정보 출력

SELECT column FROM table_name WHERE column2 = "...";
-- SELECT id, title, created,author FROM topic WHERE author = "egoing";

 

어떤 column의 값을 기준으로 오름차순으로 나열

SELECT column FROM table_name ORDER by column DESC;
-- SELECT id, title, created, author FROM topic ORDER by id DESC;

 

위의 기준으로 나열할 때 n 순위 까지 출력

SELECT column FROM table_name ORDER by column DESC LIMIT n;
-- SELECT id, title, created, author FROM topic ORDER by id DESC LIMIT 2;	//2순위

 

SQL의 UPDATE 구문

mysql update syntax

https://dev.mysql.com/doc/refman/8.0/en/update.html

 

MySQL :: MySQL 8.0 Reference Manual :: 13.2.13 UPDATE Statement

MySQL 8.0 Reference Manual  /  ...  /  SQL Statements  /  Data Manipulation Statements  /  UPDATE Statement 13.2.13 UPDATE Statement UPDATE is a DML statement that modifies rows in a table. An UPDATE statement can start with a WITH clause to defin

dev.mysql.com

 

링크에 있는 코드

UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET assignment_list
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

value:
    {expr | DEFAULT}

assignment:
    col_name = value

assignment_list:
    assignment [, assignment] ...

WHERE문이 없는 경우, 열 전체가 바뀜

 

예시

UPDATE topic SET description='Oracle is ...',title='ORACLE' WHERE id=2;

 

SQL의 DELETE 구문

mysql delete syntax

https://dev.mysql.com/doc/refman/8.0/en/delete.html

 

MySQL :: MySQL 8.0 Reference Manual :: 13.2.2 DELETE Statement

MySQL 8.0 Reference Manual  /  ...  /  SQL Statements  /  Data Manipulation Statements  /  DELETE Statement DELETE is a DML statement that removes rows from a table. A DELETE statement can start with a WITH clause to define common table expressions

dev.mysql.com

링크에 있는 코드

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
    [PARTITION (partition_name [, partition_name] ...)]
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

UPDATE문과 마찬가지로 WHERE문이 없으면 전체가 delete됨

 

예시

DELETE FROM topic WHERE id=5;

 

 

 

 

참고 : https://opentutorials.org/course/3161/19538

'Computer Science > Database' 카테고리의 다른 글

[MySQL] MySQL Client  (0) 2020.08.15
[Database] Internet & Database  (0) 2020.08.15
[SQL] create table  (0) 2020.08.07
[MySQL] MySQL Moniter  (0) 2020.08.05
[Database] database란?  (0) 2020.08.04

SQL이란? 

Structed Query Language

데이터베이스에서 사용되는 일종의 공통 언어

 

table

data를 저장하는 database의 개체로, database를 구성하는 가장 기본적이고 핵심적인 요소

row : record, 행, x축, database에서 data

column : field, 열, y축, database에서 data의 구조 

 

create table in mysql

아래 사진(cheat sheet) 참고

CREATE TABLE table_name (
	column_name1 datatype(length),
	column_name2 datatype(length),
	...
    PRIMARY KEY ( )
)

 

아래 표를 table로 작성해보기 

 

※ mysql datatye number

SQL의 column은 엑셀과 다르게 column의 datatype를 가지고 있음 

- datatype이 맞지 않으면 입력 거부할 수 있음 

길이에 대한 규제(VARCHAR(size)) 가능

https://www.techonthenet.com/mysql/datatypes.php

 

MySQL: Data Types

MySQL: Data Types The following is a list of datatypes available in MySQL, which includes string, numeric, date/time, and large object datatypes. String Datatypes The following are the String Datatypes in MySQL: Data Type Syntax Maximum Size Explanation CH

www.techonthenet.com

column 1 : id

- 보통 11자리수까지 반영 ( INT(11)

- 빈칸이면 안됨 ( NOT NULL )

- 자동으로 1씩 증가하도록 설정 ( AUTO_INCREMENT )

id INT(11) NOT NULL AUTO_INCREMENT

column 2 : title (제목)

- 255개 문자를 허용하는 VARCHAR을 쓰되, 문자열 길이 100으로 규제 ( VARCHAR(100) )

- 빈칸이면 안됨 ( NOT NULL )

title VARCHAR(100) NOT NULL

 

column 3 : description (본문)

- 65000 문자 허용 ( TEXT

- 내용이 없어도(빈칸이어도) 가능 ( NULL )

description TEXT NULL

 

column 4 : create (생성시간)

- date, time 모두 허용 ( DATATIME

빈칸이면 안됨 ( NOT NULL )

created DATETIME NOT NULL

 

column 5 : author 

- 255개 문자를 허용하는 VARCHAR을 쓰되, 문자열 길이 30으로 규제 ( VARCHAR(30) )

- 빈칸 허용 : 익명 ( NULL )

author VARCHAR(30) NULL

 

column 6 : profile 

- 255개 문자를 허용하는 VARCHAR을 쓰되, 문자열 길이 100으로 규제 ( VARCHAR(100) )

- 빈칸 허용 ( NULL )

profile VARCHAR(100) NULL

 

PRIMARY KEY 

- 성능, 중복방지 기능

- 해당 table의 id column이 main key라는 것을 선언 

 

table code

CREATE TABLE topic(   
    id INT(11) NOT NULL AUTO_INCREMENT,
    title VARCHAR(100) NOT NULL,
    description TEXT NULL,
    created DATETIME NOT NULL,
    author VARCHAR(30) NULL,
    profile VARCHAR(100) NULL,
    PRIMARY KEY(id));

 

 

 

 

생활코딩 https://opentutorials.org/course/3161/19537

'Computer Science > Database' 카테고리의 다른 글

[MySQL] MySQL Client  (0) 2020.08.15
[Database] Internet & Database  (0) 2020.08.15
[SQL] table 완성하기  (1) 2020.08.07
[MySQL] MySQL Moniter  (0) 2020.08.05
[Database] database란?  (0) 2020.08.04

MySQL Server 접속

mysql -uroot -p 입력후 자신의 password 입력

 

 

Create database(schema)

 

mysql> CREATE DATABASE database_name;

 

Delete database

mysql> DROP DATABASE database_name;

 

Show database list in mysql

mysql> SHOW DATABASES;

 

Select database 

mysql> USE database_name;

 

Show tables

mysql> SHOW TABLES;

 

Show structure of table

mysql> DESC table_name;

 

Show all of data from table

mysql> SELECT * FROM table_name;

 

'Computer Science > Database' 카테고리의 다른 글

[MySQL] MySQL Client  (0) 2020.08.15
[Database] Internet & Database  (0) 2020.08.15
[SQL] table 완성하기  (1) 2020.08.07
[SQL] create table  (0) 2020.08.07
[Database] database란?  (0) 2020.08.04

database란? 

일반적으로 컴퓨터 시스템에 전자 방식으로 저장된 구조화된 정보 또는 데이터의 체계적인 집합

'데이터의 저장 공간' 자체를 의미하기도 함

 

※ database 의 input output 파악 (CRUD)

input : Create Update Delete

output : Read

 

DBMS(DataBase Management System) 분류 

☞ hierachical DBMS (계층형)

각 계층이 트리 형태를 띠고 1:N 관계

접근의 유연성 부족

 

 network DBMS (망형)

1:1, 1:N, N:M 관계 지원

효과적이고 빠른 데이터 추출

but 매우 복잡한 내부 포인터 사용

 

 relational DBMS (관계형) - 多 사용 

데이터베이스는 table 이라는 최소단위로 구성, 이 table은 하나 이상의 열로 구성

모든 data가 table에 저장

 

 object-oriented DBMS (객체지향형)

 

 object-relational DBMS (객체관계형)

 

database ranking :  https://db-engines.com/en/ranking

 

DB-Engines Ranking

Popularity ranking of database management systems.

db-engines.com

1위(Oracle)

- database의 절대 강자

- 관공서 / 큰 기업에서 많이 사용 (비용이 비쌈)

 

2위(MySQL)

- 오픈소스 (소스를 공개한 소프트웨어) , 무료

- 대규모의 data가 생성되지만 data의 신뢰성이 중요하지 않은 경우 사용 O 

 

5위(MongoDB)

- document store (relational DBMS 가 아님)

- MySQL이 감당하지 못하는 data 관리 O

- MongoDB가 아니더라도 relational DBMS가 아닌 database 공부하는 것을 추천

 

Spreadsheet vs relational DBMS

공통 : data를 table의 형태로 표현, 기능이 비슷

Spreadsheet : 클릭을 통해 데이터 제어 

database는  컴퓨터 언어(코드)를 통해 데이터 제어 가능

'Computer Science > Database' 카테고리의 다른 글

[MySQL] MySQL Client  (0) 2020.08.15
[Database] Internet & Database  (0) 2020.08.15
[SQL] table 완성하기  (1) 2020.08.07
[SQL] create table  (0) 2020.08.07
[MySQL] MySQL Moniter  (0) 2020.08.05

앞서 올린 글에서처럼 ubuntu를 설치하려고 했으나, 가상 머신을 이용하여 우분투를 설치해 사용하고자 한다. 

 

가상머신이란? 하드웨어를 소프트웨어적으로 구현해서 그 위에서 운영체제가 작동하도록 하는 기술이다. 

 

가상머신을 사용하는 이유

  • 다른 운영체제를 사용해야 하는 경우(맥OS에서 윈도우, 윈도우에서 리눅스)

  • 독립된 작업공간이 필요한 경우 (바이러스 회피, 백업)

  • 하나의 머신에서 여러명에게 운영체제 환경을 제공

이렇게 세가지가 있다. (출처: 생활코딩)

 

Virtual Box

- Oracle에서 개발한 크로스 플랫폼(cross - platform) 가상화 소프트웨어

- 리눅스, macOS, 윈도우를 게스트 운영체제로 가상화 할 수 있음

- 지원하는 운영 체제에 Virtual Box를 설치하고 가상 머신을 생성하여 원하는 운영체제를 설치할 수 있음

- 운영체제 간에 파일 전송, 클립보드 공유, 등을 포함한 통신이 가능

 

Virtual Box 설치 방법

 

1. https://www.virtualbox.org/wiki/Downloads  에 접속하여 다운로드 한다. 

 

Downloads – Oracle VM VirtualBox

Download VirtualBox Here you will find links to VirtualBox binaries and its source code. VirtualBox binaries By downloading, you agree to the terms and conditions of the respective license. If you're looking for the latest VirtualBox 6.0 packages, see Virt

www.virtualbox.org

 

 

2.  

 

가상환경 (Ubuntu 우분투) 설치

 

1. 우분투 18.04 이미지 파일을 다운로드 한다. 

(우분투 홈페이지에서 OS 이미지 파일을 다운 받을 경우, 전송 속도가 느리기 때문에 카카오 서버를 통해 OS 이미지 파일을 다운로드한다.)

http://mirror.kakao.com/ubuntu-releases/bionic/ 에 접속하여 다운로드 한다.

 

Ubuntu 18.04.4 LTS (Bionic Beaver)

Select an image Ubuntu is distributed on three types of images described below. Desktop image The desktop image allows you to try Ubuntu without changing your computer at all, and at your option to install it permanently later. This type of image is what m

mirror.kakao.com

 

2. 윈도우 검색창에 "Oracle VM VirtualBox"를 검색해서 실행시키면 다음과 같은 화면이 뜬다.

 

3. 위의 화면에서 "새로만들기"를 클릭한다. 

 

4.  종류(T)와 버전(V)를 아래와 같이 변경한다. 

 

5. 메모리 크기를 설정한다. 

 

6. "지금 새 가상 하드 디스크 만들기"를 선택한다. 

 

7. "VDI"를 선택한다. 

 

8. 파일 크기를 100GB로 설정하였다. (25GB이상)

 

9. 완료되면 아래와 같은 화면이 뜬다. 

 

10. 위의 화면에서 자신이 설정한 이름을 더블클릭하면 아래와 같은 화면이 뜬다. 

 

 

11. 비어있음 옆의 아이콘을 선택하면 다음과 같은 화면이 뜨는데 "추가"를 클릭한 후 아까 다운받은 우분투 이미지 파일을 선택한다. 

 

12. 기다리면 아래와 같은 화면이 뜨는데 " Install Ubuntu"를 클릭한다. 

 

13. 다음 화면에서 English(US)를 선택한 뒤, Continue를 클릭한다. 

 

14. Minimal installation으로 선택하고 Other options을 모두 선택한다. 

15. Install Now 를 클릭한다. 

 

16. 이름과 원하는 비밀번호를 입력한다. 

 

17. 완료되면 아래와 같은 화면이 뜬다. 

 

 

1. 윈도우 검색창에서 " Windows 기능 켜기/끄기를 찾아 실행시킨다. 

 

2. 다음과 같은 화면이 뜨는데 "Linux용 Windows 하위시스템"을 체크한다.

 

3. 재부팅한다.

4. Microsoft Store에서 "Ubuntu"를 찾아 설치한다. 

 

 

선형회귀알고리즘의 목표 : 입력 데이터(x) 와 타깃 데이터(y)를 통해 기울기(a)와 절편(b)를 찾는 것

                       = 산점도 그래프를 잘 표현하는 직선의 방정식을 찾는 것 

                 - 푸는 방법 : 경사 하강법 (gradient descent) , 정규방정식(normal equation), 결정트리, 등

 

경사하강법

- 모델이 데이터를 잘 표현할 수 있도록 기울기(변화율)를 사용하여 모델을 조금씩 조정하는 최적화 알고리즘

 

예측값과 변화율

- 딥러닝에서는, 기울기 a를 가중치를 의미하는 w나 계수를 의미하는 θ 로 표기

- y(타깃데이터)는 y ̂(y-hat)으로 표기

- y=ax+b 를 y ̂=wx+b로 

- 가중치 w와 절편 b는 알고리즘이 찾은 규칙, y ̂는 예측값(우리가 예측한 값)

 

 

훈련데이터에 잘 맞는 w와 b찾기

from sklearn.datasets import load_diabetes
diabetes = load_diabetes()  #diabetes에 당뇨병 데이터 저장
x=diabetes.data[:,2]
y=diabetes.target

 

1. w와 b 무작위로 초기화 하기

예시)

w=1.0
b=1.0

 

2. 훈련데이터의 첫번째 샘플 데이터로 y ̂얻기

- 훈련데이터의 첫번째 샘플 x[0]에 대한 y ̂계산 -> y_hat변수에 저장

y_hat = x[0] * w + b
print(y_hat)	#1.0616962065186886

 

3. 타깃과 예측 데이터 비교하기

y[0]과 y_hat값 비교

print(y[0])	#151.0

 

4. w값 조절해 예측값 바꾸기

y_hat 과 타깃(y[0])의 차이가 큼 -> w와 b 무작위 설정

-> w와 b 조금씩 변경

w_inc = w+0.1	#1차 함수의 기울기를 0.1만큼 높여준다고 생각
y_hat_inc = x[0] * w_inc + b
print(y_hat_inc)	#1.0678658271705574

- y_hat보다 조금 증가 

 

5. w값 조정한 후 예측값 증가 정도 확인하기

- w가 0.1만큼 증가했을 때 y_hat이 얼마나 증가했는지 계산 (y_hat증가량 / w증가량)

w_rate = (y_hat_inc - y_hat)/(w_inc -w)
print(w_rate)	#0.061696206518688734

- w_rate 는 첫번째 훈련 데이터 x[0]에 대한 w의 변화율

- 변화율은 양수 이므로 w값을 증가시키면 y_hat값 증가

- 변화율이 음수라면? w값을 감소시키면 y_hat값 감소

- w_rate에 대한 코드를 수식으로 적어 정리하면 변화율 = 훈련 데이터의 첫번째 샘플인 x[0]

w_rate = (y_hat_inc - y_hat) / (w_inc - w) = ((x[0] × w_inc + b) - (x[0] × w + b)) / (w_inc - w)

        = (x[0] × ((w + 0.1) - w)) / ((w + 0.1) - w) = x[0]

 

변화율로 가중치(w) 업데이트하기

(1) 변화율이 양수일 때

- w가 증가 y_hat증가

(2) 변화율이 음수일 때

- w가 감소 y_hat증가

- w에 w_rate(변화율) 더하는 방법! 

w_new = w + w_rate

 

변화율로 절편(b) 업데이트하기

- 절편 b에 대한 변화율을 구한 다음 변화율로 b 업데이트

- b 0.1만큼 증가시킨후 y_hat이 얼만큼 증가했는지 계산

b_inc = b + 0.1
y_hat_inc = x[0] * w + b_inc
print(y_hat_inc)  #1.1616962065186887

- 변화율 계산

b_rate = (y_hat_inc - y_hat) / (b_inc - b)
print(b_rate) #1.0

- 변화율의 값은 1 : b가 1만큼 증가하면 y_hat도 1만큼 증가

b_rate=(y_hat_inc-y_hat)/(b_inc-b) = ((x[0]×w+b_inc)-(x[0]×w+b))/(b_inc-b)

        = ((b+0.1)-b)/((b+0.1)-b)=1

 

- 즉 b를 업데이트하기 위해서는 변화율이 1이므로 1을 더하면 됨

b_new = b + 1
print(b_new)  #2.0

 

위의 방법들은 수동적인 방법!

이유 1) y_hat이 y에 한참 미치지 못하는 값의 경우, w와 b를 더 큰 폭으로 수정 X, 앞에서 변화율만큼 수정  했지만 특별한 기준 잡기 어려움

이유 2) y_hat이 y보다 커지면 y_hat을 감소시키지 X

 

오차역전파(backpropagation)사용 - 가중치와 절편 보다 적절하게 업데이트

오차역전파 : y ̂과 y 차이를 이용하여 w와 b 업데이트

 

1. 오차와 변화율을 곱하여 가중치 업데이트하기

x[0]일때 w의 변화율과 b의 변화율에 오차를 곱한다음

업데이트 된 w_new와 b_new 출력

err=y[0]-y_hat
w_new=w+w_rate*err
b_new=b+1*err
print(w_new,b_new)
# 10.250624555904514 150.9383037934813

 

2. 두번째 샘플 x[2]를 사용하여 오차를 구하고 새로운 w와 b 구하기

w_rate식을 정리하면 샘플값과 같아지므로 w_rate별도로 계산 X, 샘플값그대로 사용

y_hat = x[1]*w_new+b_new
err=y[1]-y_hat
w_rate=x[1]
# w_rate식을 정리하면 샘플값과 같아지므로 w_rate별도로 계산 X, 샘플값그대로 사용
w_new=w_new+w_rate*err
b_new=b_new+1*err
print(w_new,b_new)
# 14.132317616381767 75.52764127612664

 

3. 전체 샘플 반복하기

for x_i,y_i in zip(x,y):
  y_hat = x_i * w + b
  err = y_i - y_hat
  w_rate = x_i
  w=w+w_rate *err
  b=b+1*err
print(w,b)
# 587.8654539985689 99.40935564531424

cf) python의 zip()함수 : 여러개의 배열에서 동시에 요소를 하나씩 꺼내줌

위의 코드 : 입력 x와 타깃y 배열에서 요소를 하나씩 꺼내여 err계산 후 w와 b 업데이트

 

4. 그래프 그려 위에서 얻어낸 모델이 전체 데이터를 잘 표현하는지 확인

plt.scatter(x,y)
pt1=(-0.1,-0.1*w+b)
pt2=(0.15,0.15*w+b)
plt.plot([pt1[0],pt2[0]],[pt1[1],pt2[1]])
plt.xlabel('x')
plt.ylabel('y')
plt.show()

 

그래프그리기 전에 아래 코드 까먹지 말고 입력하기

입력하지 않으면 NameError: name 'plt' is not defined 과 같은 에러가 뜸

import numpy as np
import matplotlib.pyplot as plt

 

5. 여러 에포크(epoch)를 반복하기

for i in range(1,100):
  for x_i,y_i in zip(x,y):
    y_hat = x_i * w + b
    err = y_i - y_hat
    w_rate = x_i
    w=w+w_rate *err
    b=b+1*err
print(w,b)
#913.5973364345905 123.39414383177204

다시 그래프로 나타내면

plt.scatter(x,y)
pt1=(-0.1,-0.1*w+b)
pt2=(0.15,0.15*w+b)
plt.plot([pt1[0],pt2[0]],[pt1[1],pt2[1]])
plt.xlabel('x')
plt.ylabel('y')
plt.show()

위의 경우 머신러닝 모델:  y ̂=913.6x + 123.4

 

6. 모델로 예측하기

입력 x에 없었던 새로운 데이터가 발생했다고 가정

   -> 이 데이터에 대한 예측값을 얻으려면?

   -> 우리가 찾은 모델에 x를 넣고 계산

 

ex. x=0.18일때

x_new = 0.18
y_pred = x_new * w +b
print(y_pred)
# 287.8416643899983

이 데이터를 산점도 위에 나타내면

plt.scatter(x,y)
plt.scatter(x_new,y_pred)
plt.xlabel('x')
plt.ylabel('y')
plt.show()

+ Recent posts