전체 글 77

프로그래머스 Level2, 전화번호 목록, python

문제 설명 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요. 제한 사항 phone_book의 길이는 1 이상 1,000,000 이하입니다. 각 전화번호의 길이는 1 이상 20 이하입니다. 같은 전화번호가 중복해서 들어있지 않습니다. 문제풀이 처음 문..

5.차원 축소를 사용한 데이터 압축, 머신러닝교과서, python

* 본 포스팅은 머신러닝교과서를 참조하여 작성되었습니다. 5.1 주성분 분석을 통한 비지도 차원 축소 특성 선택 vs 특성 추출 - 원본 특성을 유지한다면 특성 선택 - 새로운 특성 공간으로 데이터를 변환하거나 투영한다면 특성 추출 특성 추출은 대부분의 관련 있는 정보를 유지하면서 데이터를 압축하는 방법이다. 이는 저장 공간을 절약하거나 학습 알고리즘의 계산 효율성을 향상시키고 차원의 저주(curse of dimensionality) 문제를 감소시켜 예측 성능을 향상시키기도 한다. 5.1.1 주성분 분석의 주요 단계 PCA : 비지도 선형 변환 기법 PCA를 많이 사용하는 애플리케이션에는 탐색적 데이터 분석과 주식 거래 시장의 잡음 제거, 생물정보학 분야에서 게놈(genome) 데이터나 유전자 발현(ge..

4.6 랜덤 포레스트의 특성 중요도 사용, 머신러닝교과서, python

* 본 포스팅은 머신러닝교과서를 참조하여 작성되었습니다. 4.6 랜덤 포레스트의 특성 중요도 사용 랜덤 포레스트를 사용하면 앙상블에 참여한 모든 결정 트리에서 계산한 평균적인 불순도 감소로 특성 중요도를 측정할 수 있다. 편리하게도 사이킷런의 랜덤 포레스트의 구현은 특성 중요도 값을 이미 수집하고 있다. RandomForestClassifier 모델을 훈련한 후 feature_importances_ 속성에서 확인할 수 있다. 다음 코드에서 Wine 데이터셋에서 500개의 트리를 가진 랜덤 포레스트를 훈련하고 각각 중요도에 따라 13개의 특성에 순위를 매긴다. * 트리 기반 모델은 표준화나 정규화를 할 필요가 없다. from sklearn.ensemble import RandomForestClassifie..

boj_2193, 이친수, 백준, python

문제 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않는다. 이친수에서는 1이 두 번 연속으로 나타나지 않는다. 즉, 11을 부분 문자열로 갖지 않는다. 예를 들면 1, 10, 100, 101, 1000, 1001 등이 이친수가 된다. 하지만 0010101이나 101101은 각각 1, 2번 규칙에 위배되므로 이친수가 아니다. N(1 ≤ N ≤ 90)이 주어졌을 때, N자리 이친수의 개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. 출력 첫째 줄에 N자리 이친수의 개수를 출력한다. 문제풀이 N이 주어지면, N자리 이친수의 갯수를 ..

Chapter3.7 k-최근접 이웃: 게으른 학습 알고리즘, 머신러닝교과서, python

* 본 포스팅은 머신러닝교과서를 참고하여 작성되었습니다. 3.7 k-최근접 이웃: 게으른 학습 알고리즘 이번 장에서 언급할 마지막 지도 학습 알고리즘은 k-최근접 이웃(K-Nearest Neighbor, KNN)이다. KNN은 전형적인 게으른 학습기(lazy learner)이다. 단순하기에 게으르다고 말하는 것이 아니라 알고리즘은 훈련 데이터에서 판별 함수(discriminative functioin)를 학습하는 대신 훈련 데이터셋을 메모리에 저장하기 때문이다. KNN 알고리즘은 매우 간단해서 다음 단계로 요악할 수 있다. 숫자 k와 거리 측정 기준을 선택한다. 분류하려는 샘플에서 k개의 최근접 이웃을 찾는다. 다수결 투표를 통해 클래스 레이블을 할당한다. - 선택한 거리 측정 기준에 따라 KNN 알고리..

Chapter 3.6 결정 트리 학습, 머신러닝교과서, pyhon

* 본 포스팅은 머신러닝교과서를 참조하여 작성되었습니다 3.6 결정 트리 학습 결정 트리(decision tree) 분류기는 설명이 중요할 때 아주 유용한 모델이다. 결정 알고리즘을 사용하면 트리의 루트(root)에서 시작해서 정보 이득(Information Gain)이 최대가 되는 특성으로 데이터를 나눈다. 반복 과정을 통해 리프 노드(leaf node)가 순수해질 때까지 모든 자식 노드에서 이 분할 작업을 반복한다. 트리의 최대 깊이를 제한하여 가지치기(pruning)를 한다. 3.6.1 정보 이득 최대화: 자원을 최대로 활용 import matplotlib.pyplot as plt import numpy as np def gini(p): return p * (1 - p) + (1 - p) * (1 ..

Chapter 3.4 서포트 벡터 머신을 사용한 최대 마진 분류, 머신러닝교과서, python

* 본 포스팅은 머신러닝 교과서를 참고하여 작성되었습니다. 3.4 서포트 벡터 머신을 사용한 최대 마진 분류 서포트 벡터 머신(Support Vector Machine, SVM) : SVM은 퍼셉트론의 확장으로 생각 할 수 있다. SVM의 최적화 대상은 마진을 최대화 하는 것이다. 3.4.1 최대 마진 큰 마진(large margin)의 결정 경계를 원하는 이유는 일반화 오차가 낮아지는 경향이 있기 때문이다. 반면 작은 마진의 모델은 과대적합되기 쉽다. 3.4.2 슬랙 변수를 사용하여 비선형 분류 문제 다루기 슬랙변수 : 오류를 허용하는 '직선', 소프트 마진 분류(soft margin classification) 슬랙 변수는 선형적으로 구분되지 않는 데이터에서 선형 제약 조건을 완화할 필요가 있기 때문..

Chapter3.3 로지스틱 회귀 모델을 사용한 클래스 확률 모델링, 머신러닝 교과서, python

으* 본 포스팅은 머신러닝 교과서를 참조하여 작성되었습니다! 3.3 로지스틱 회귀 모델을 사용한 클래스 확률 모델링 퍼셉트론 규칙은 머신 러닝 분류 알고리즘을 배우기에 간단하고 좋은 모델이지만 가장 큰 단점은 클래스가 선형적으로 구분되지 않을 때 수렴할 수 없다. 여전히 간단하지만 선형 이진 분류 문제에 더 강력한 다른 알고리즘은 로지스틱 회귀(logistic Regression)을 살펴보자. * 이름이 회귀이지만 로지스틱 회귀는 회귀가 아니라 분류모델이다! 3.3.1 로지스틱 회귀의 이해와 조건부 확률 오즈비(odds ratio) : 오즈는 특정 이벤트가 발생할 확률이다. - logit 함수는 0과 1 사이의 입력값을 받아 실수 범위 값으로 반환한다. - 이 함수를 로지스틱 시그모이드 함수(logist..

[Dacon] Basic 축구선수의 유망 여부 예측 AI 경진대회 1, python

대회 출처 링크 : https://dacon.io/competitions/official/236031/overview/description 데이콘 Basic 축구선수의 유망 여부 예측 AI 경진대회 - DACON 분석시각화 대회 코드 공유 게시물은 내용 확인 후 좋아요(투표) 가능합니다. dacon.io 밑바닥부터 시작하는 딥러닝.. 머신러닝 교과서를 공부 중인데, 하루에 한 두시간이라도 뭔가 해보면 좋을 것 같아서 하게 되었다. 예전에 캐글에서 타이타닉 데이터를 분석해보았을 때와 같이 이 데이터도 Classification 문제로 비슷하게 해볼 수 있을거 같아서 시도해보았다. [배경] 안녕하세요 데이커 여러분! 데이콘 Basic 축구선수의 유망 여부 예측 AI 경진대회에 오신 것을 환영합니다! 축구 선..

Chapter3 머신러닝 교과서, python

본 포스팅은 머신러닝 교과서를 참고하여 작성되었습니다. 3.1 분류 알고리즘 선택 알고리즘을 훈련하기 위한 다섯 가지 주요 단계 특성을 선택하고 훈련 샘플을 모은다. 성능 지표를 선택한다. 분류 모델의 최적화 알고리즘을 선택한다. 모델의 성능을 평가한다. 알고리즘을 튜닝한다. 3.2 사이킷런 첫걸음 : 퍼셉트론 훈련 사이킷런 라이브러리를 사용해 퍼셉트론 훈련을 해보자 150개의 꽃 샘플에서 꽃잎 길이와 꽃잎 너비를 특성 행렬 X에 할당하고 꽃 품종에 해당하는 클래스 레이블을 벡터 y에 할당한다. from sklearn import datasets import numpy as np iris = datasets.load_iris() X = iris.data[:, [2,3]] y = iris.target pr..