본문 바로가기

Programming

(13)
[Python] 알고리즘의 시간 복잡도 알고리즘 평소 어느 목적지로 이동을 할 때 우리는 자연스럽게 최단거리, 최소시간을 생각하며 움직인다. 10이라는 시간으로 갈 수 있는 목적지인데 굳이 100의 시간을 들여 다른 길로 가려하지 않는다. 프로그래밍에서는 목적지로 가는 수많은 과정(루트)을 알고리즘이라 말할 수 있으며, 알고리즘의 실행 시간(처리 시간)을 최소화 하기 위한 노력을 알고리즘의 시간복잡도를 개선한다라고 표현할 수 있다. 즉, 최소한의 시간과 공간을 이용해 문제를 해결하는 과정이 좋은 알고리즘이라고 할 수 있다. 시간 복잡도와 점근 표기법(Big - O) 시간 복잡도는 간단히 말해 알고리즘이 동작하는데 시간이 얼마나 걸리는 지 수치화하여 표현한 것이다. Big - O 표기법은 알고리즘의 시간복잡도를 단순화 할 때 사용하는 표기법으로..
[Python] 데이터 수집을 위한 웹 크롤링(Crawling) 원하는 데이터를 수집하고자 할 때 크롤링(Crwaling)을 하곤 한다. 크롤링은 해당 페이지의 데이터들을 추출하는 행위를 의미한다. 이 때 크롤링을 하기 위한 소프트웨어를 크롤러(Crawler)라고 하며, 봇, 스파이더, 지능 에이전트 라고도 불린다. 스크래이핑과 크롤링의 차이 ? Scraping : 웹 사이트의 특정 정보를 추출하는 것. 웹 데이터의 구조 분석이 필요 Crawling : 프로그램이 웹사이트를 정기적으로 돌며 정보를 추출하는 것 수집 데이터의 형태 데이터를 수집하기 앞서, 수집 데이터의 형태를 3가지로 구분할 수 있다. 수집 데이터 형태 정형 – 일정한 규격에 맞춰서 구성된 데이터 (어떠한 역할을 알고 있는 데이터) 관계형 데이터베이스 시스템의 테이블과 같이 고정된 컬럼에 저장되는 데이..
[Python] 머신 러닝 지도 학습을 이용한 간단한 비만도 평가 모델 생성, 예측 지도 학습(Supervised Learning) : 훈련하기 위한 데이터가 존재할 때 사용할 수 있는 기계학습(Machine Learning)의 한 방법 훈련 데이터(training data)는 입력(input)과 정답(label, target)으로 구성 사용할 지도학습 알고리즘 K-최근접 이웃 알고리즘(K-Nearest Neighbors algorithm, KNN) 새로운 데이터가 주어졌을 때, 근처 k 개의 데이터 중에서 특성(feature)이 비슷한 범주로 새로운 데이터를 분류하는 방법 사용할 데이터 확인 bmi_500.csv import pandas as pd df = pd.read_csv('bmi_500.csv', index_col='Label') print(df.head()) print(df...
[Python] 머신 러닝 간단한 xor 예제 xor 연산(배타적 논리합)은 입력값 2개가 동일하면 출력 값 0, 다르면 1을 반환하는 논리게이트이며 진리표는 다음과 같다. input1 input2 output 0 0 1 1 0 0 0 1 0 1 1 1 svm 분류 모델을 사용한 선형 분리 불가 데이터의 정답 예측 과정 # import modules from sklearn import svm # load data xor_input = [ [0,0,0], [0,1,1], [1,0,1], [1,1,0] ] input_cnt = 4 # data split(X_train, y_train) X_train = [] # train_input y_train = [] # train_target for p, q, r in xor_input: X_train.append..
[Python] 함수 - arguments Positional arguments 함수 호출 시 인수 순서대로 매개변수에 값을 전달. (위치 기반) # positional def checkout(name, age, birth): print(f'{name}, {age}, {birth}') checkout('kim', 99, '2020/07/17') 첫 번째 인수 'kim' 은 name 매개변수에 전달 두 번째 인수 99 는 age 매개변수에 전달 세 번째 인수 '2020/07/17' 은 birth 매개변수에 전달 Keyword arguments 함수 호출 시 매개변수 이름대로 인자를 매칭. (키워드 기반) # keyword def checkout(name, age, birth): print(f'{name}, {age}, {birth}') checko..
절차적 프로그래밍과 객체 지향 프로그래밍 코드를 짤 때 어떤 방식으로 코딩을 하는지에는 두 가지 패러다임이 있다. 프로그래밍을 시작하기 앞서 절차적 프로그래밍(Procedural Progamming, PP)과 객체지향 프로그래밍(Object Oriented Programming, OOP)에 대해 가볍게 알아보자. 절차적 프로그래밍(Procedural Programming) 흔히 절차 지향으로 알고 있는 프로그래밍 방법이다. 하지만 애초에 프로그래밍은 코드 연산을 절차적으로 수행한다는 의미인데 절차 지향적인 방법으로 프로그래밍을 한다는 것은 말에 어폐가 있다. 그렇다면 절차적 프로그래밍은 무슨 의미인가? 간단한 예시 코드로 두 방법의 차이를 느껴보자. 사용언어 : Python3 """ 장바구니 기능 구현 시나리오 1. 고객이 사과를 장바구니에 추..
[Python/점프 투 파이썬 복습] 2. (6) Python 프로그래밍 자료형 연습문제 복습용/초보자 참고를 목적으로 포스팅합니다. 최근 들어 프로그래밍 언어들 중 직관적인 표현으로 코딩이 가능한 Python이 인기를 끌고 있습니다. 코드 구성의 가독성이 타 언어 대비 뛰어나고, C/C++/JAVA 에서 구현 가능한 모든 것들을 Python에서도 만들 수 있습니다. 데이터 분석부터 머신러닝, 딥러닝 등 다양한 분야에서 활용 가능한 언어 Python 지금부터 차근차근 공부해봅시다. 2장 연습문제 Q1. 문자열 슬라이싱 활용 문제 홍길동 씨의 주민번호는 881120-1068234입니다. 홍길동씨의 주민등록번호를 연월일(YYYYMMDD) 부분과 그 뒤의 숫자 부분으로 나누어 출력하십시오 pin = "881120-1068234" yyyymmdd = num = print( ) print( ) # 결..
[Python/점프 투 파이썬 복습] 2. (5) Python 프로그래밍 자료형(변수) 복습용/초보자 참고를 목적으로 포스팅합니다. 최근 들어 프로그래밍 언어들 중 직관적인 표현으로 코딩이 가능한 Python이 인기를 끌고 있습니다. 코드 구성의 가독성이 타 언어 대비 뛰어나고, C/C++/JAVA 에서 구현 가능한 모든 것들을 Python에서도 만들 수 있습니다. 데이터 분석부터 머신러닝, 딥러닝 등 다양한 분야에서 활용 가능한 언어 Python 지금부터 차근차근 공부해봅시다. 2. (5) 자료형(변수) 2. 7 자료형의 값을 저장하는 공간, 변수 앞 내용들에서 이미 변수를 여러 번 사용했습니다. 이제는 그 변수들의 정확한 의미와 사용법을 살펴보겠습니다. 변수를 만들 때는 예시처럼 =(assignment)기호를 사용합니다. # 변수 정의 a = 1 b = "Python" c = [1, 2..