fbfbf1의 등록된 링크

키자드에 등록된 총 1413개의 포스트를 확인하실 수 있습니다.

Naver Blog

[Pandas] apply 함수

먼저 데이터를 만든다. yyyy-mm-dd에서 year만 추출하고 싶을 때는 함수를 만들어서 apply 함수를 적용시켜주면 된다. 함수를 보면 year(row)로 되어있어서 매개변수를 넘겨줘야 하는데 apply(year)만 해줬다. 매개변수 또한 넘겨줄 수 있다. year에다가 임의의 수를 더한다고 해보자. 매개변수를 여러 개 넘겨 줄 수도 있다. 현재 연도를 말한다고 해보자 매개변수를 여러 개 만들어서 넘겨주면 된다. 열의 값들을 넘겨줘서 새롭게 만들어줄 수 있다.

Naver Blog

[Pandas] map, applymap

map과 applymap을 알아본다. map은 apply와 유사하나 문자열을 숫자로 바꿀 때 유용하다. map date에서 year를 추출한다고 할 때 apply를 함수를 사용한 것처럼 map도 똑같이 사용할 수 있다. 이번에는 map을 이용해서 문자열을 숫자로 바꿔본다. python에서도 map은 적용시켜준다는 의미로 사용되는 것 같은데 여기서도 마찬가지인 것 같다. 먼저 데이터를 만든다. police = 1, professor = 2, president = 3으로 바꿔본다. applymap 모든 행과 열에 일괄적을 적용시키려면 applymap을 사용하면 된다. 반올림을 모든 데이터에 적용한다고 하자 이때 numpy가 필요하다.

Naver Blog

[Pandas] pandas 데이터 불러오기, 데이터프레임 생성

pandas를 사용하기 전에는 pandas를 import 해줘야 된다. 파일을 불러올 때는 pd.read_csv("파일 위치/파일명") 을 이용한다. 이때 파일은 ,로 구별되어있을 때는 위와 같이 하면되고 만일 파일이 ,가 아닌 tab이나 다른 걸로 구별이 되어있을 경우에는 delimiter를 넣어줘야 한다. tab으로 구별되면 위와 같이 delimiter = '\t'를 넣어주면된다. 헤더 정보가 없는 파일을 불러올 때는 헤더 정보가 없다고 알려주면 된다. header = None을 쓰면 된다. 헤더 정보를 넣고 싶으면 columns를 이용하면 된다. 을 해주면 헤더가 추가된다. 헤더가 없는 파일을 헤더를 추가해서 한 줄로 넣고 싶다면 아래처럼 하면 된다. .......

Naver Blog

[Pandas] 데이터 프레임 csv 파일로 저장, 데이터 프레임 행,열 선택 및 필터

먼저 리스트와 딕셔너리를 이용해서 데이터를 만들어 준다. 데이터프레임으로 변환해 준다. 위의 데이터프레임을 csv 파일로 변환해 주기 위해서는 to_csv를 이용하면 된다. 를 이용하면 된다. index는 위의 사진에서 0,1,2를 나타내는 값을 의미하고 True를 하면 저장이 되고 False를 하면 저장이 안 된다. header는 name, age, job을 의미하고 True가 기본 값이고 False를 하면 저장이 되지 않는다. na_rep은 데이터에 None 값이 있을 때 이 값을 csv로 저장할 때 지정한 값으로 저장할 수 있게 한다. 지금은 na_rep = '-'로 해서 None 값을 -로 저장하게 한다. 먼저 리스트를 이용해서 데이터를 만들어준다. dict와 from_dict를.......

Naver Blog

[Pandas] 데이터프레임 행, 열 삭제

먼저 간단한 데이터를 만든다. 먼저 행부터 삭제해보면 drop을 이용하면 된다. 물론 다시 재할당 해줘야 삭제된 걸로 df가 만들어진다. 재할당 하지 않고 삭제해도 바로 적용되게 하려면 inplace를 이용해 준다. 이렇게 하면 따로 assign 해줄 필요가 없다. 인덱스를 이용해서도 삭제할 수 있다. 이것 또한 재할당해 줘야지만 적용된다. 조건을 이용해서도 삭제가 가능하다. 나이가 20보다 작은 걸 제거하고 싶으면 이건 20보다 큰 사람들만 뽑는 거기에 반대로 생각하면 20보다 작은 걸 제거하는 거다. 데이터를 새로 만든다. 이번엔 name, age, job까지도 다 넣어준다. age 열을 없앤다고 하면 age를 없애고 axis = 1은 column을 의미한다.......

Naver Blog

[Pandas] 데이터프레임 행, 열 생성 및 수정하기

먼저 데이터를 만들어준다. 행렬을 추가할 때는 아래와 같이 하면 된다. = 0으로 하면 모든 행에 열이 들어간다. 값을 각각 해주려면 배열을 사용한다. 이번에는 student는 연봉이 없으니 NO로 바꾸고 나머지는 연봉이 있기에 YES로 바꿔본다 numpy의 wherer 함수를 이용한다. df['job']에서 student 가 아니면 즉 true 이면 yes student 이면 False면 No로 바꾼다. 이번에는 숫자 연산을 해본다. weight와 height의 합을 새로운 열로 넣어주려고 하면 아래와 같이 하면 된다. 평균을 넣어주고 싶으면 / 2를 해주면 된다. 이번에는 평균 값에 점수를 매겨줘서 새로운 열을 추가해본다. apply 함수를 이용해서도 가능하다. apply는.......

Naver Blog

[Pandas] 데이터 그룹 만들기 group by

먼저 데이터를 만들어준다. 학과 별로 그룹을 만들고 싶을 때는 groupby를 이용하면 된다. groups를 이용하면 어떻게 나눠졌는지 볼 수 있다. 성별로 나누면 아래와 같다. 좀 더 이쁘게 보려면 for 문을 이용하면 된다. name을 통해서 학과 명 len(group)을 통해서 학과의 수 group을 통해서 그 그룹에 속한 정보가 나온다. 학과의 이름과 학과의 수를 데이터 프레임에 넣고 싶으면 아래처럼 하면 된다. 인덱스 번호도 넣고 major와 count를 헤더로 하려면 reset_index()를 하면 된다.

Naver Blog

[Pandas] 데이터프레임 중복 제거

먼저 데이터를 만든다. 중복을 확인하려면 duplicated()를 사용하면 된다 중복된 건 True로 뜨고 아닌 건 False로 뜬다. 처음에 위치한 건 False로 뜬다 모든 중복된 거에 대해서 True로 뜨지 않는다. 1번과 13번은 중복이지만 1번은 False 13번은 True이다. 중복을 제거하는 건 drop_duplicates()를 사용하면 된다. 왼쪽이 원래 데이터 오른쪽이 중복제거한 데이터이다. 중복인 것들은 삭제되고 다 유일한 데이터들만 남았다. 지금까지 중복을 제거한 건 한 행 자체가 다 똑같을 때를 말했다. 하지만 데이터들 중에서 꼭 다 같지 않고 몇 개만 같을 수도 있다. 예를 들어 6번 8번 데이터를 보면 전공과 성별이 같다. 이런 느낌이다. 먼저 이름이.......

Naver Blog

[ML] Bagging(배깅), Extra_Trees(엑스트라 트리), AdaBoost(에이다부스트)

파이썬 라이브러리를 활용한 머신러닝 책을 보고 정리한 내용입니다. 앙상블 알고리즘에는 배깅(Bagging), 에이다부스트(AdaBoost), Extra-Trees(엑스트라 트리)도 있다. 데이터셋은 two_moons 데이터셋과 cancer 데이터셋을 사용한다. 참고로 preamble은 파이썬 라이브러리를 활용한 머신러닝 github(https://github.com/rickiepark/introduction_to_ml_with_python/blob/1st_edition/preamble.py) 들어가서 다운 받아야 된다. 배깅 Bagging Bagging은 Bootstrap aggregating의 줄임말이다. 배깅은 중복을 허용한 랜덤 샘플링으로 만든 훈련 세트를 사용해서 분류기를 각각 다르게 학습시킨다. 분류기가 predict_proba() 메서드를 지원하는 경우.......

Naver Blog

[ML] 커널 서포트 벡터 머신 (Kernerlized support vector machines)

파이썬 라이브러리를 활용한 머신러닝 책을 보고 정리한 내용입니다. 서포트 벡터 머신 지도 학습 모델 중 하나인 커널 서포트 벡터 머신(SVM)이다. 커널 서포트 벡터 머신은 입력 데이터에서 초평면(hyper plane)으로 정의되지 않는 더 복잡한 모델을 만들 수 있도록 확장한 것이다. SVM은 분류와 회귀 모두 사용이 가능하다. 선형 모델과 비선형 특성 선형 모델을 유연하게 만드는 한 가지 방법은 특성끼리 곱하거나 특성을 거듭제곱하는 식으로 새로운 특성을 추가하는 것이다. 아래의 사진은 선형적으로 구분되지 않는 클래스를 가진 이진 분류 데이터셋이다. 분류를 위한 선형 모델은 직선으로만 데이터를 나눌 수 있어서 위와 같은 데이터.......

Naver Blog

[ML] Machine Learning, Numpy, Scipy, matplotlib, mglearn, knn

파이썬 라이브러리를 활용한 머신러닝 책을 보고 정리한 내용입니다. 머신러닝 Machine Learning은 데이터에서 지식을 추출하는 작업이다. 가장 많이 사용되는 머신러닝 알고리즘은 이미 알려진 사례를 바탕으로 일반화된 모델을 만들어 의사 결정 프로세스를 자동화하는 것이다. 이 방식을 supervised learning 지도학습이다. 이는 사용자는 알고리즘에 입력과 기대되는 출력을 제공하고 알고리즘은 주어진 입력에서 원하는 출력을 만드는 방법을 찾는다. 다른 알고리즘으로는 unsupervised learning 비지도 학습이다. 비지도 학습에서는 알고리즘에 입력은 주어지지만 출력은 제공되지 않는다. 머신러닝에서는 하나의 개체 혹은 행을 sample(샘.......

Naver Blog

[ML] KNN 알고리즘

파이썬 라이브러리를 활용한 머신러닝 책을 보고 정리한 내용입니다. KNN 알고리즘은 가장 간단한 머신러닝 알고리즘이다. 훈련 데이터 셋을 저장하는 것이 모델을 만드는 과정의 전부이다. 새로운 데이터 포인트(행)에 대해 예측할 땐 알고리즘이 훈련 데이터 셋에 가장 가까운 데이터 포인트, 즉 최근접 이웃을 찾는다. KNN 알고리즘 KNN 알고리즘은 가장 가까운 훈련 데이터 포인트를 하나를 최근접 이웃으로 찾아 예측에 사용한다. 아래의 사진은 forge 데이터셋을 분류한 것이다. KNN을 기준으로 아래의 그림에는 데이터 포인트를 3개 추가했다.(별 모양) 그리고 추가한 각 데이터의 포인트에서 가장 가까운 훈련 데이터 포인트를 연결했다.......

Naver Blog

[ML] 선형 회귀 Linear regression, Ridge, Rasso, SVM, LogisticRegression

파이썬 라이브러리를 활용한 머신러닝 책을 보고 정리한 내용입니다. 선형 모델 선형 모델은 입력 특성에 대한 선형 함수를 만들어서 예측을 수행 의 형태를 가지고 있다. w와 b는 모델이 학습할 parameter이다. w는 가중치 또는 계수 b는 편향 또는 절편이다. wave 데이터셋으로 파라미터 w와 b를 직선처럼 학습 시켜본다. 코드는 아래와 같다. 기울기는 대략 0.4이고 y 절편은 -0.03 정도이다. 회귀를 위한 선형 모델은 특성이 하나일 때는 직선, 두 개일 땐 평면이 되고 더 높은 차원에서는 hyperplane(초평면)이 되는 회귀 모델의 특징을 가지고 있다. 선형 회귀(최소제곱법) 모델 파라미터 w와 b를 학습하는 방법에는 여러 가지가 있는 데 그.......

Naver Blog

[ML] 나이브 베이즈 Naive bayes

파이썬 라이브러리를 활용한 머신러닝 책을 보고 정리한 내용입니다. Naive bayes Naive bayes는 베이즈 정리에 기반한 통계적 분류 기법이다. Naive bayes 분류기는 선형 모델과 매우 유사하다. LogisticRegression이나 LinearSVC 같은 선형 분류기보다 훈련 속도는 빠르지만, 대신 일반화 성능이 조금 떨어진다. 나이브 베이즈가 효과적인 이유는 각 특성을 개별로 취급해 파라미터를 학습하고 각 특성에서 클래스별 통계를 단순하게 취합하기 때문이다. scikit-learn에 구현된 나이브 베이즈 분류기는 GaussianNB, BernoulliNB, MultinomialNB 세 가지이다. Gaussian은 연속적인 데이터에 적용 가능하고 Bernoulli는 이진 데이터, Multinomial.......

Naver Blog

[BackEnd] flask routing

먼저 flask의 기본 템플릿(?) flask를 import 하고 app을 통해서 flask 객체를 만든다. flask에서도 routing을 여러 종류로 지정할 수 있다. module이 아닐 때 app을 실행한다. route에 인자를 넣어주면 그 경로로 갈 수 있다. 일단 home은 "/" 인자를 넣어준다. /pizza 경로로 가고 싶으면 route에 넣어주면된다. route 인자에 데이터도 전달할 수 있다. <pizzaname>이 전달해줄 데이터이다. 위와 같이 작성해주면 아래와 같은 결과가 나온다. 데이터형도 설정해줄 수 있다. 데이터 형을 설정하지 않으면 기본형인 문자열로 설정된다.

Naver Blog

이럴때 화나요

코로나 확진자 수가 왜 안 줄어드는 거지? 오늘만 해도 1400명이 넘었네,, 줄어들 기미가 보여야 되는데 보이지를 않네 어쩌다 이렇게 된 걸까

Naver Blog

[ML] decision tree 결정 트리 알고리즘

파이썬 라이브러리를 활용한 머신러닝 책을 보고 정리한 내용입니다. 결정 트리 decision tree 결정 트리는 분류와 회귀 문제에 사용되는 모델이다. 결정 트리는 결정에 다다르기 위해 예/아니오 질문을 하면서 학습을 진행한다. 머신러닝 식으로 말하면 세 개의 특성(날개, 비행, 지느러미)을 사용해 네 개의 클래스(매, 펭귄, 돌고래, 곰)를 구분하는 모델을 만드는 것이다. 이런 모델을 직접 만드는 대신 지도 학습 방식으로 데이터로부터 학습할 수 있다. 결정 트리 만들기 아래의 데이터셋을 분류하는 결정 트리를 만든다. 결정 트리를 학습한다는 것은 정답에 가장 빨리 도달하는 예/아니오 질문 목록을 학습한다는 의미이다. 머신러닝에서.......

Naver Blog

[ML] 결정 트리 앙상블(ensemble), random forest

파이썬 라이브러리를 활용한 머신러닝 책을 보고 정리한 내용입니다. 앙상블(ensemble)은 여러 머신러닝 모델을 연결해서 더 강력한 모델을 만드는 기법이다. 여러 종류의 머신 러닝 모델이 많지만 그중 두 앙상블 모델이 분류와 회귀 문제의 다양한 데이터셋에서 효과적이라고 입증되었다. random forest(랜덤 포레스트)와 gradient boosting(그레이디언트 부스팅) 결정 트리는 둘 다 모델을 구성하는 기본 요소로 결정 트리를 사용한다. Random Forest Random Forest는 다른 여러 결정 트리의 묶음이다. 랜덤 포레스트 아이디어는 각 트리는 비교적 예측을 잘 할 수 있지만 데이터의 일부에 과대적합하는 경향을 가지는 것에 기초한다. 즉 잘 작.......

Naver Blog

[ML] 결정 트리 앙상블(ensemble), gradientBoosting(그레이디언트 부스팅) 회귀 트리

파이썬 라이브러리를 활용한 머신러닝 책을 보고 정리한 내용입니다. 앙상블(ensemble)은 여러 머신러닝 모델을 연결해서 더 강력한 모델을 만드는 기법이다. 그레이디언트 부스팅 회귀 트리는 여러 개의 결정 트리를 묶어 강력한 모델을 만드는 또 다른 앙상블 방법이다. 이전에 만든 트리의 예측과 타깃 값 사이의 오차를 줄이는 방향으로 새로운 트리를 추가하는 알고리즘 방법이다. 이를 위해 손실 함수를 정의하고 경사 하강법을 사용하여 다음에 추가될 트리가 예측해야 할 값을 보정해간다. GradientBoosting 회귀 트리 이름은 회귀지만 회귀와 분류 모두에 사용할 수 있다. 그레이디언트 부스팅은 이전 트리의 오차를 보완하는 방식으로.......

Naver Blog

[DNN] 가중치의 초깃값 Xavier,He 초기화

밑바닥부터 시작하는 딥러닝 책을 보고 정리한 내용입니다. 가중치의 초깃값 신경망 학습에서 중요한 것이 가중치의 초깃값이다. 가중치의 초깃값을 무엇으로 설정하느냐가 신경망 학습의 성패가 가르는 일이 실제로 자주 발생한다. 이번 파트는 권장 초깃값에 대해서 책에서 설명한다. 초깃값을 0으로 하면? 오버피팅을 억제해 범용 성능을 높이는 기술인 Weight Decay(가중치 감소) 기법이다. 가중치 감소는 가중치 매개변수의 값이 작아지도록 학습하는 방법이다. 가중치 값을 작게 하여 오버피팅이 일어나지 않게 하는 것이다. 가중치를 작게 만들고 싶으면 초깃값도 최대한 작은 값에서 시작하는 것이 정공법 지금까지 가중치 초깃값은 0.01.......

Naver Blog

[DNN] 배치 정규화 Batch Normalization

밑바닥부터 시작하는 딥러닝 책을 보고 혼자 정리한 내용입니다. 가중치의 초깃값을 적절히 설정하면 각 층의 활성화 값 분포가 적당히 퍼지면서 학습이 원활하게 수행된다. 그럼 각 층이 활성화를 적당히 퍼뜨리도록 강제해보면 어떨까? 배치 정규화가 이런 아이디에서 출발했다. 배치 정규화 배치 정규화의 장점은 1. 학습을 빨리 진행할 수 있다.(학습 속도 개선) 2. 초깃값에 크게 의존하지 않는다.(초깃값 선택 부담감 감소) 3. 오버피팅을 억제한다.(드롭아웃 등의 필요성 감소) 배치 정규화의 기본 아이디어는 각 층에서의 활성화값이 적당히 분포되도록 조정하는 것이다. 아래 그림과 같이 데이터 분포를 정규화하는 배치 정규화(Batch N.......

Naver Blog

[DNN] 오버피팅(overfitting), 가중치 감소(weight decay), 드롭아웃(Dropout), 하이퍼파라미터

밑바닥부터 시작하는 딥러닝 책을 보고 혼자 정리한 내용입니다. 기계학습에서는 오버피팅이 문제가 되는 일이 많다. 오버피팅이란 신경망이 훈련 데이터에만 지나치게 적응되어 그 외의 데이터에는 제대로 대응하지 못하는 상태이다. 오버피팅(overfitting) 오버피팅은 주로 매개변수가 많고 표현력이 높은 모델, 훈련 데이터가 적은 경우에서 발생한다. 훈련 데이터를 사용하여 측정한 정확도는 100 에폭을 지나는 무렵부터 거의 100%이다. 하지만 시험 데이터에는 그렇지 않은 결과를 보인다. 이처럼 정확도가 크게 벌어지는 것은 훈련 데이터에만 적응해 버린 결과이다. 훈련 때 사용하지 않은 범용 데이터(시험 데이터)에는 제대로 대응하지.......

Naver Blog

[DNN] 합성곱 신경망(CNN, Convolutional neural network)

밑바닥부터 시작하는 딥러닝 책을 보고 혼자 정리한 내용입니다. 합성곱 신경망 CNN은 이미지 인식과 음성 인식 등 다양한 곳에서 사용되고 보통 이미지 인식 분야에서 딥러닝을 활용한 기법은 거의 CNN으로 한다. 전체 구조 CNN도 신경망과 같이 레고 블록처럼 계층을 조합해서 만들 수 있다. CNN에서는 합성곱 계층(Convolutional layer)과 풀링계층(Pooling layer)가 있다. 지금까지의 신경망은 인접하는 계층의 모든 뉴런과 결합되어 있다. 이를 완전연결(fully Connected, 전결합)이라고 하고 완전히 연결된 계층을 Affine 계층이라고 한다. 이 Affine 계층을 사용해서 층이 5개인 완전연결 신경망은 아래와 같다. 위와 같이 완전연결 신경.......

Naver Blog

[DNN] 합성곱, 풀링, CNN 구현 및 LeNet, AlexNet

밑바닥부터 시작하는 딥러닝 책을 보고 정리한 내용입니다. 합성곱 계층 구현 im2col 함수의 인터페이스는 아래와 같다. input_data - (데이터 수, 채널 수, 높이, 너비)의 4차원 배열로 이루어진 입력 데이터 filter_h - 필터의 높이 filter_w - 필터의 너비 stride - 스트라이드 pad - 패딩 im2col은 필터 크기, 스트라이드, 패딩을 고려해서 입력 데이터를 2차원 배열로 전개한다. 첫 번째는 배치 크기가 1 (데이터 1개) 채널은 3개, 높이 * 너비가 7 * 7 인 데이터이고 두 번째는 배치크 크기만 10이고 나머지는 첫 번째와 같다. im2col 함수를 적용한 두 경우 모두 2번째 차원의 원소가 75개이다. 이 값은 필터의 원소 수와 같다(채널 3개, .......

Naver Blog

[DNN] 딥러닝, VGG, ResNet, GoogLeNet, R-CNN, FCN

이번에는 딥러닝의 특징과 과제 가능성을 살펴본다. 데이터 확장(data augmentation) 데이터 확장은 입력 이미지(훈련 이미지)를 알고리즘을 동원해서 인위적으로 확장한다. 입력 이미지를 회전하거나 세로로 이동하는 등 미세한 변화를 주어 이미지의 개수를 늘린다. 이미지 일부를 잘라내는 crop이나 좌우를 뒤집는 flip 등이 있다. 일반적인 이미지에는 밝기 등의 외형 변화나 확대, 축소 등의 스케일 변화도 효과적이다. 층을 깊게 하는 이유 이번에는 층을 깊게 하는 것에 대해서 알아본다. 층을 깊게 할 때의 이점은 신경망의 매개변수 수가 줄어든다는 것이다. 층을 깊게 한 신경망은 깊지 않은 경우보다 적은 매개변수로 같은 (혹은 그 이.......

Naver Blog

밑바닥부터 시작하는 딥러닝 끝

7월 4일부터 보기 시작한 밑바닥부터 시작하는 딥러닝 책 한 8일 걸렸네 사실 더 빨리 볼 수도 있었으나 블로그에 다 정리하면서 그림도 다 직접 그려가면서 하니까 오래 걸렸다. 가끔 그림 그리거나 만들면서 이거 왜 하고 있지 이런 생각도 많이 했는데 결국 직접 손으로 그리다 보면 더 이해가 잘 된다. 이런 전공 책을 사서 다 읽은 건 학교 다니면서 처음인 것 같기도 하네 아무튼 종강하고 나서 갑자기 인공지능 쪽에 빠져버렸다. 1학년으로 거슬러 올라가서 1학년 때 python을 처음 배우고 python 전공 수업 마지막쯤에 교수님이 python 통해서 인공지능 할 수 있다고 하시고 홍콩 과기대 김성훈 교수님의 모두의 딥러닝 강의를 알려주셔.......

Naver Blog

[DNN] 오차역전파법 backpropagation

밑바닥부터 시작하는 딥러닝 책을 보고 정리한 내용입니다. 오차역전파법 신경망의 가중치 매개변수 기울기(가중치 매개변수에 대한 손실 함수의 기울기)는 수치 미분을 사용했다. 수치 미분은 단순하고 구현이 쉽지만 시간이 오래 걸린다는 단점이 있다. 이번에는 가중치 매개변수의 기울기를 효율적으로 계산하는 오차역전파법(backpropagation)을 배운다. 오차역전파법은 오차를 역(반대 방향으로) 전파하는 방법이다. 계산 그래프 계산 그래프는 계산 과정을 그래프로 나타낸 것이다. 계산 그래프에 익숙해져야 오차역전파를 공부하는데 편하다. 문제 1: 슈퍼에서 1개에 100원인 사과 2개를 샀을 때의 지불 금액을 구해라, 이때 소비세 10% 부.......

Naver Blog

[DNN] Affine, softmax, backpropagation

밑바닥부터 시작하는 딥러닝 책을 보고 정리한 내용입니다. Affine 계층 구현 신경망의 순전파 때 수행하는 행렬의 곱은 기하학에서는 어파인 변환(affine transformation)이라고 한다. 신경망의 순전파에서는 가중치 신호의 총합을 계산하기 위해 행렬의 곱을 사용했다. Y = np.dot(X, W) + B를 계산 그래프로 나타내면 아래와 같다. 이 계산 그래프에서는 변수가 행렬이고 각 변수의 형상을 변수명 위에 표기했다. 역전파를 생각해 보면 행렬을 사용한 역전파도 행렬의 원소마다 전개해보면 스칼라 값을 사용한 계산 그래프와 같은 순서로 생각할 수 있다. 위의 식을 바탕으로 역전파를 계산 그래프로 나타내면 아래와 같다. 각 변수의 형.......

Naver Blog

[BackEnd] flask 시작하기

를 통해서 flask를 다운 받아준다. 이게 실행을 위한 기본 코드이다. Flask(__name__)을 이용해서 현재 위치를 flask 객체에 알려주고 flask 객체를 만든다. 여기서 __name__에는 모듈의 이름이 저장이 된다. 실행하는 코드에서는 __main__ 값이 들어간다. route를 해주는 부분이다. https://blog.naver.com/fbfbf1/postwrite?categoryNo=49 쉽게 얘기해서 네이버 블로그 들어가서 fbfbf1로 갈 수 있게 해주는 것이다. 위의 코드가 의미하는 건 /hello로 들어가면 helloWorld() 함수가 실행된다는 의미이다. flask에서는 테스트를 쉽게 해주기 위해서 자체적으로 웹서버 기능을 제공한다. 간단한 명령으로 웹 서버를 띄울 수 있다. run을 통.......

Naver Blog

신문 읽어보기 18

거의 2달 만에 신문 글 올리네 신문은 꾸준히 읽고 있는데 글 올리기 귀찮아서 안 올리고 있었다. 방금 기사를 보니 수도권 4단계로 격상되고 1316명 확진자 나왔다고 한다. 음,, 이게 왜 2030 탓일까 할 말은 많지만 말을 아껴야겠다. 배터리 산업이 핫하다. 아마 나도 이쪽과 관련된 전공이었다면 배터리 쪽으로 가지 않았을까 싶다. 정말 세상에는 똑똑한 사람들이 많은 것 같다. 사진이 잘 안 보이기는 하지만 첫 번째 비행기는 기존 비행기보다 5배 정도 빠른 속도를 가진 비행기다. 이런 걸 만들고 있다고 하는데 빨리 만들어졌으면 좋겠다. 유럽 갈 때 12시간 정도 타야 되는 거 너무 힘들다

Naver Blog

[DNN] 매개변수 최적화, SGD, Momentum, AdaGrad, Adam

밑바닥부터 시작하는 딥러닝 책을 보고 혼자 정리 한 내용입니다. 6장에서는 신경망 학습의 핵심 개념들을 본다. 가중치 매개변수의 최적값을 탐색하는 최적화 방법, 가중치 매개변수 초깃값, 하이퍼파라미터 설정, 오버피팅 대응책인 가중치 감소와 드롭아웃도 본다. 매개변수 갱신 신경망 학습의 목적은 손실 함수의 값을 최소로 하는 매개변수를 찾는 것이다. 이는 곧 매개변수 최적값을 찾는 문제이고 이러한 문제를 푸는 것이 최적화(optimization)이다. 지금까지 최적의 매개변수 값을 찾는 단서로 매개변수의 기울기를 이용했다. 매개변수의 기울기를 구해서 기울어진 방향으로 매개변수 값을 갱신하는 일을 반복해서 최적의 값에 다가갔.......

Naver Blog

[DNN] 신경망 학습

밑바닥부터 시작하는 딥러닝을 보고 혼자 정리한 글입니다. 이번에는 신경망 학습이다. 학습은 훈련 데이터로부터 가중치 매개변수의 최적값을 자동으로 획득하는 것을 의미한다. 여기서는 신경망이 학습할 수 있도록 해주는 지표인 손실 함수를 공부한다. 손실 함수의 결괏값을 가장 작게 만드는 가중치 매개변수를 찾는 것이 학습의 목표이다. 데이터 학습 신경망의 특징은 데이터를 보고 학습할 수 있다는 점이다. 데이터에서 학습한다는 것은 가중치 매개변수의 값을 데이터를 보고 자동으로 결정한다는 의미이다. 데이터 주도 학습 기계학습 중심에는 데이터가 존재한다. 기계학습에서는 사람의 개입을 최소화하고 수집한 데이터로부터 패턴.......

Naver Blog

90

방금 블랙 쇼맨과 이름 없는 마을의 살인 다 읽어서 히가시노 게이고 책 90권 읽었다. 10권만 더 읽으면 100권인데 국내에 더 읽을 책이 있나,,

Naver Blog

[DNN] 퍼셉트론

퍼셉트론 퍼셉트론은 다수의 신호를 입력으로 받아 하나의 신호를 출력 다만 퍼셉트론 신호는 흐른다/ 안 흐른다(1 or 0)의 두 가지 값을 가짐 딥러닝 분야에서 퍼셉트론은 인공 뉴런, 단순 퍼셉트론을 의미 원은 뉴런 or 노드 부르고 입력 신호가 뉴런에 보내질 때는 각각 고유한 가중치가 곱해진다. 뉴런에서 보내온 신호의 총합이 정해진 한계를 넘어설 때만 1을 출력 아니면 0을 출력 - 뉴런이 활성화한다고 표현 - 한계를 임계값이라고 한다. 퍼셉트론은 다수의 입력 신호 각각에 고유한 가중치를 부여, 가중치는 각 신호가 결과에 주는 영향력을 조절하는 요소로 작용. 즉 가중치가 클수록 해당 신호가 그만큼 더 중요하다. y에 미치는 영.......

Naver Blog

[DNN] 신경망

밑바닥부터 시작하는 딥러닝 책을 보고 혼자 정리한 내용입니다. 신경망 퍼셉트론을 이용해서 복잡한 함수도 표현이 가능하다. 하지만 가중치를 설정하는 작업은 여전히 사람이 수동적으로 해야 된다. 신경망은 가중치를 수동으로 설정하는 작업을 해결해 준다. 즉 가중치의 매개변수의 적절한 값을 데이터로부터 자동으로 학습하는 능력이 신경망의 중요 성질 먼저 신경망의 구조는 위와 같다. 가장 왼쪽에 있는 층을 입력층 맨 오른쪽에 있는 층을 출력층 중간에 있는 층을 은닉층이라고 한다. 은닉층은 입력층, 출력층과 달리 사람 눈에 보이지 않는다. 위의 신경망 구조는 총 3개의 층으로 구성되지만 가중치를 갖는 층이 2개이기에 2층 신경.......

Naver Blog

[DNN] MNIST

밑바닥부터 시작하는 딥러닝 책을 보고 혼자 정리한 내용입니다. 손글씨 숫자 인식 신경망의 구조를 이용해서 손글씨 숫자 분류를 해본다. 여기서는 이미 학습된 매개변수를 사용해서 학습 과정은 생략하고 추론 과정만 본다. 이러한 추론 과정을 신경망의 순전파(forward propagation)라고 한다. MNIST 데이터 셋 MNIST 이미지 데이터는 28 x 28 크기의 회색조 이미지(1채널) 각 픽셀은 0에서 255까지의 값을 가진다. 각 이미지에는 9,5,3과 같이 그 이미지가 실제 의미하는 숫자가 레이블로 붙어 있다. load_mnist 함수는 MNIST 데이터를 (훈련 이미지, 훈련 레이블), (시험 이미지, 시험 레이블) 형식으로 반환 인수로는 normalize, flattne, .......

Naver Blog

[DNN] CNN 이용 MNIST

합성곱 방식을 이용하는 CNN(Convolutional Neural Network) convolution layer와 pooling layer로 구성이 되며 이미지 처리에 특화된다. 다층 퍼셉트론 방식은 공간적인 구조 정보를 보존하지 못했기에 이미지의 공간적인 구조 정보를 보존하면서 학습할 수 있는 방법으로 CNN이 만들어짐 이미지는 (높이, 너비, 채널)이라는 3차원 텐서 채널은 깊이(depth)라고도 함 합성곱층은 합성곱 연산을 통해서 이미지의 특징을 추출하는 역할 합성곱은 kernel 또는 filter라는 n x m 크기의 행렬로 이미지를 처음부터 끝까지 겹치며 흝으면서 n * m 크기의 겹쳐지는 부분의 각 이미지와 커널의 원소의 값을 곱해서 모두 더한 값을 출력으로 하는 것 입력.......

Naver Blog

[1년 전 오늘] [일상] 1학기 종강이다

뭐지 21년도에는 6월 11일에 시험 다 끝나고 6월 16일 과제 제출 했는데 20년도에는 6월 30일에 시험 끝나고 7월 3일에 과제 제출 했네 왜 이렇게 많이 차이난거지?

Naver Blog

방학동안 할 것

1. 네트워크 - samsum vran white paper 읽어보기 - network slicing paper & samsum white paper 읽어보기 - 세미나 하기 2. AI - 모두의 딥러닝 시즌 1, 모두의 딥러닝(?) - pytorch로 시작하는 딥러닝 입문 - 단단한 강화학습 - 심층 강화학습 인 액션 - 간단한 게임 프로젝트 해보기 3. 그외 - 게임이론 - 영어공부 원래 목표는 크게 잡아야 할 수 있는 것도 많다 여기 있는 것만 다 해도 전 세계 상위 0.01% 방학일 듯 다 못 해도 되니 어차피 다 할 생각도 아니고 너무 욕심 부리지 말고 하나하나씩 격파해야겠다.

Naver Blog

지갑

제발 제 지갑 돌려주세요 제발요 진짜 제발 연락 오게 해주세요 제발요 비싼 지갑이에요 제발요 안에 너무 많은 게 있어요 제발요

Naver Blog

최근 본 영화

혼자 영화관 가서 공포/스릴러 영화 보는 걸 좋아해서 이번에도 콰이어트 플레이스 2 보고 왔는데 나름 쫄깃쫄깃해서 재밌게 봤다. 스트레스 풀리는 듯 콰이어트 플레이스 1과 바로 이어진다는데 시간 나면 1도 봐야겠다.

Naver Blog

[DNN] BackPropagation

1. 출력층에서 입력층 방향으로 계산하면서 가중치를 업데이트 해가는 방법 미분을 이용한다. 2. 먼저 w5, w6, w7 ,w8 출력층 바로 이전의 은닉층에서 출력층으로 향하는 가중치를 업데이트 해줘야됨 3. w1,w2,w3,w4 업데이트 입력층에서 은닉층으로 향하는 가중치 업데이트 4. 업데이트된 가중치를 가지고 다시 순전파를 한 후에 오차를 확인

Naver Blog

[DNN] Overfitting 방지 방법

1. 데이터양 늘리기 - 모델은 데이터양이 적을 경우, 해당 데이터의 특정 패턴이나 노이즈까지 쉽게 기억하므로 overfitting 발생 확률이 늘어난다. 그렇기에 데이터양의 많아질수록 모델은 데이터의 일반적인 패턴을 학습하여 과적합을 방지 2. 모델의 복잡도 줄이기 - 인공 신경망의 복잡도는 hidden layer의 수나 매개변수의 수 등으로 결정이 되기에 과적합 현상이 발견되었을 시에 인공 신경망의 복잡도를 줄여준다. 3. 가중치 규제(Regularization) 적용 - 복잡한 모델이 간단한 모델보다 overfitting될 가능성이 높다. - 복잡한 모델을 간단하게 하는 방법으로 regularization이 있다. - L1 regularization : 가중치 w들의 절댓값 합계를.......

Naver Blog

[DNN] Gradient Vanishing, Exploding

Gradient Vanishing(기울기 소실) - 깊은 인공 신경망을 학습하다 보면 backpropagation 과정에서 입력층으로 갈수록 gradient가 점차적으로 작아지는 현상이 발생, 입력층에 가까운 층들에서 가중치들이 업데이트가 제대로 되지 않으면 결국 최적의 모델을 찾을 수 없게 되는데 이런 현상을 기울기 소실이라고 한다. Gradient Exploding(기울기 폭주) - 기울기 소실과 반대의 경우로 기울기가 점점 커져서 가중치들이 비정상적으로 큰 값이 되면서 발산된다. 기울기 소실과 기울기 폭주 완화 방법 1. ReLU - 기울기 소실을 완화하는 간단한 방법으로 은닉층의 활성화 함수로 시그모이드나 하이퍼볼릭 탄젠트 함수 대신 ReLU, Leacky ReLU를 사용.......

Naver Blog

[DNN] Xavier 이용 MNIST

기존에는 weight를 무작위로 초기화 했는데 무작위가 아닌 방법으로 weight를 초기화해서 성능을 높인다. 그 방법 중 하나인 Xavier

Naver Blog

7만

토탈 7만 넘었다 오호호호 7만때 딱 찍을려고 했는데 오늘 넘을 줄은 몰랐네 하 금요일만 되라 빨리 시험 끝나라

Naver Blog

종강 후의 삶

6월 11일에 모든 시험이 다 끝났다. 좀 만족스럽지 못 한 학기이기는 하다. 더 많이 할 수 있었으나 하지 못했던 학기. 종강하자마자 친구 만나서 건대에 양 꼬치 먹으러 갔다. 살면서 처음 먹어보는 양꼬치었다. 호불호가 많이 갈린다는데 나는 호였다. 사실 엄청 맛있는 맛은 아닌 것 같다. 꿔바로우도 같이 먹었다. 양꼬치 먹고 건대 구경하러 갔다. 건대 호수가 크다는 건 알고 있었으나 이렇게 클 줄이야.. 건대도 보고 한강도 보러 갔다. 정말 오랜만에 오는 한강이다. 맨날 7호선 타고 가면서 아 한강 한 번 가야 되는데라는 생각을 정말 많이 했는데 이번에 갔다. 사람이 너무 많아서 사람 없는 곳으로 피신 왔다. 그다음 날에는 우리 소.......

Naver Blog

치킨 vs 피자

둘 다 먹으면 되지 굳이 고르자면 치킨 먹음 브랜드 피자는 너무 비쌈 피자스쿨이 제일 맛있음ㅋㅋㅋ

Naver Blog

6월 3일

#블챌 #오늘일기 마지막 블챌이다. 까먹고 안 할 뻔 오늘 기숙사 점심 나 같은 돼지에게는 너무 적은 양이다. 학교에서 주관하는 공모전 동아리에 채택됐다. 매달 10만 원씩 받으면서 공모전 준비해야 된다. 후,, 열심히 해야징~

Naver Blog

[공유] 노력하면 뇌는 달라집니다!

열심히 하자‘성인이 되면 머리가 굳는다’라는 편견, 한 번쯤 들어보셨을 텐데요, 학습에 출중했던 유년 ...

Naver Blog

[공유] [자기주도 학습코칭] 산만함을 줄이고 공부 집중력을 높이는 방법

초등학생을 위한 글인데,, 도움이 되네

Naver Blog

[공유] 새롭게 시작하는 #오늘일기 챌린지 사전안내

블챌 ㅋㅋㅋ 안녕하세요. 네이버 블로그팀입니다. 지난 번 #오늘일기 챌린지를 진행하고 종료하는 과정에서...

Naver Blog

[공유] 2020년 대학원생 세금 환급 방법과 환급금 조회 방법/ 종합소득세, 지방소득세/ 체리씨 ver.

세금환급

Naver Blog

5월 31일

#블챌 #오늘일기 어제는 비가 이렇게 많이 오더니만 오늘은 또 날씨가 괜찮네 다음 주부터 시험이다 벌써 종강이라니...:(

Naver Blog

6월 1일

#블챌 #오늘일기 오늘 기숙사 점심 푸짐하게 먹었다 저녁은 쪼매가서 분식 먹었다 이제 내년부터 2월 개강에 여름방학 3개월.. 진짜 누군가에게는 독이 될 수도 있고 기회가 될 수도 있겠네 3개월은 진짜 길다ㄱㅋㅋ

Naver Blog

6월 2일

#블챌 #오늘일기 점심에는 연구실 회식으로 중국집 갔다. 탕수육도 먹고 군만두도 먹고 짬뽕도 먹고 맛있었다 종강하고 일정이 있어서 비행기 예약했다ㅎ 호텔도 예약하고 ㅎ 빨리 종강하고 가고 싶다~~~

Naver Blog

5월 27일

#블챌 #오늘일기 구씨가 보내준 일론 머스크 짤 형만 믿을게요! 아침에 도서관 가서 데이터분석 SVM을 들었다 오늘도 여전히 뉴스 7월부터 노마스크 하는건가!!!!!!!!!!!!!!!!!!! 2학기 대면 되는 건가.. 빨리 맞아야겠다. 한미 정상회담에서 미사일 제한이 해제되었는데 해제로 인해서 우주개발에 박차를 가할 수 있게 되나 보다, 요즘 위성이 좀 핫한 분야 이긴 한데 이 제한 해제로 더 핫 해졌다. 사실 이름값할 거면 위성 공부하는 게 맞긴 한데 근데 또 김정은 씨는 뭘 못 참았을까 비트코인이 휘청거린다. 기관들은 금을 많이 사다고 하는데 사실 보이지도 않는 가상화폐 쪼가리나 걍 번쩍번쩍 빛나는 돌덩이나 뭐 이리 비싼 거지, 알 수가.......

Naver Blog

5월 28일

오늘은 점심으로 감자탕을 먹었다 여기 꿀맛이다 자주 이용해야지 후식으로 볶음밥까지 토스에서 계좌개설하면 2주 준다고 해서 바로 개설했다 총합 2.3만원 아쉽다! Lg화학주지 저녁으로는 오랜만에 한솥 먹었다 역시 치킨마요가 최고다! #블챌 #오늘일기

Naver Blog

5월 29일

재입대 하는 꿈 꿨다. 그것도 꿈에서 일상생활하다가 병사로 재입대하는 꿈이다. 와 진짜 처음에 내가 왜 재입대하지라고 생각했다가 그래도 적응하자 해서 2주 차 정도 훈련받다가 2주 차에 빨간 명찰 주는 거 보고 현타와서 탈주하려다가 꿈에서 깼다 군대 꿈은 정말 꾸고 나면 멍해진다. 오늘 저녁은 피자스쿨이다.ㅋㅋㅋ 비주얼 보소 진짜 화랑대역점 피자스쿨이 최고다 이 비주얼을 보소 우리 집 앞 반성하자 치즈바이트 시킨 적 없는데 치즈바이트까지 왔다! 아,, 공부할게 참 많네

Naver Blog

5월 30일

#블챌 #오늘일기 오늘은 날씨가 정말 좋다 또 열심히 공부 해야지 경영과학 마스터!

Naver Blog

[백준] 2631번 줄 세우기 c++

LIS 문제이다. 문제에서 중요한 게 이미 정렬되어 있는 학생들을 바꿀 필요가 없다는 거다. 즉 가장 긴 증가하는 부분 수열의 길이를 구해서 전체 학생 수에서 빼주면 된다. 문제의 예시를 보면 3 7 5 2 6 1 4 3 5 6이 가장 긴 증가하는 수열이다. 얘네 3명은 이미 정렬되어 있는 거니 건드릴 필요 없이 나머지 4명만 건드리면 된다.

Naver Blog

[백준] 1890번 점프 c++

DP를 이용해서 풀 수 있는 문제 여러 가지 경로의 수가 존재할 수 있으므로 dp를 이용해서 지금까지 가능한 경로의 수를 저장해 주고 그 값들을 계속 더 해주는 식으로 한다. 일단 처음에 0,0에서 시작하므로 0,0 도 1로 초기화 준다 이중 for 문을 돌면서 board[i][j] == 0 이면 끝이므로 넘어가 주고 그게 아니라면 좌표 값에 board[i][j]를 더 하나 값이 N보다 작으면 갈 수 있다는 의미이므로 현재 dp[i][j]의 값을 i와 j에 board[i][j]를 더한 좌표 값들에 더 해준다.

Naver Blog

[백준] 11060번 점프점프 c++

점프와 굉장히 유사한 문제 1차원 DP를 이용한다. 일단 최솟값을 구해야 되니 배열을 INF로 초기화 시켜준다. INF로 하는 이유는 dp[i] == INF일 때는 경로가 한 개도 없다는 의미이고 답을 갱신할 때 최솟값을 적용시켜줄 수 있기 때문이다. i = 1부터 시작해서 N까지 돈다 이때 board[i]의 값을 보면서 i에다가 1 ~ board[i]까지 더한 인덱스를 탐색하면서 기존에 있는 값과 현재 i에서 + 1을 더한 값을 비교해 줘서 최솟값을 구한다. 문제에서 board[i] 이하 값들로 움직일 수 있다고 했으니 이 구문을 이용했다.

Naver Blog

[CP] AtCoder Beginner Contest 202

2021년 5월 22일에 열린 AtCoder Beginner Contest 202 3솔 했다 B 번까지 했을 때 270등이어서 아 C 번까지 빨리 풀면 대박이겠구나고 생각했지만 역시나 C 번에서 시간을 좀 소모해버렸다. 심지어 런타임 에러로 한 번 틀려버렸다 자꾸 문제에서 n이 10^5일 때 배열을 10002로 선언해서 틀린다 ㅋㅋㅋㅋㅋㅋㅋ 별생각 없이 5자릿수로 선언해버린다.. A 번 밑 바닥이 7이니 전체 21에서 abc 다 더한 값 빼주면 된다. B 번 문자열 for 문 돌면서 6,9일 때만 거꾸로 돌려주면 된다. C 번 저번 코포 C 번에서 본 테크닉(?)을 써먹었다랄까 이것도 쉬운데 참 아쉽다. 코드 다 짜놓고 계속 답이 0으로 나오길래 뭐지 싶었는데 인덱스를 잘못 써서 한.......

Naver Blog

5월 24일

기숙사 아침이 9시까지인데 9시에 일어나버렸다 바로 준비해서 나간 다음에 스캔할 거 스캔하고 등기 보냈다 빵이라 음료 산 다음에 먹으려고 하는 순간 교수님이 같이 밥 먹자고 해서 초밥 먹으러 갔다. ㅋ 저번에 갔던 로지스시다 우리가 저번에 먹었을 때 쫌 짜다고 말씀드렸더니 이번엔 덜 짜게 해주셨다. 훨씬 맛있었다 주방장님이 12년 동안 초밥집 하면서 딱 3명한테 짜다는 소리를 들었다고 하신다. 나랑 교수님한테 듣고 자신의 삶을 돌아보셨다고 했다. 이제는 좀 덜 짜게 만들어본다고 하셨다. 괜히 진상이 된 건가라는 느낌이 들었다. 오늘은 교수님이랑 희재랑 많은 이야기를 나눴다 아 뭐하고 살지 ㅋㄷㅋㄷ 오늘 커피 1잔 공차 1잔.......

Naver Blog

5월 25일

#블챌 #오늘일기 오늘은 오랜만에 아침에 도서관을 갔다. 역시 전자기기와 멀어져야 공부가 잘된다. 도서관에서 신문을 읽었다. 역시 HMM을 샀어야 됐다. 한미 정상회담 내용을 보는데 잘 된 것 같다. 음,, 역시 AI가 정말 핫하다,, 국세청 들어가서 소득공제(?) 받으려고 신청했다. 쥐꼬리만하게 돌려받는다 점심에 친구랑 학교 앞에 있는 기린 라멘 가서 라멘 먹었다. 교수님한테 점심에 기린라멘 먹었다고 하니 교수님도 라멘 먹고 싶다고 하셔서 저녁에 또 갔다. 나는 이번엔 사케동 먹었다. 교수님과 희재는 돈코츠 라멘을 시켰는데 역시 기본이 제일 좋은 것 같다. 아 점심에 돈코츠 라멘으로 먹을걸 치킨 가라아케도 먹었다. 재수가 생각.......

Naver Blog

5월 26일

#블챌 #오늘일기 오늘도 아침에 도서관을 갔다. 바로 연구실 가는 것 보다 5억 배 더 좋다. 집중력 차이가 21억 배 수준 없는 게 없는 삼성이다. 방학 때 공부할 분야들 white paper 찾아보니 삼성에도 있어서 바로 프린트 했다. 갓삼성이기에 무조건 읽어야된다! 삼성리서치 보내주세요 오늘도 신문을 읽었다. 메타버스가 핫하다. 이제 몇 년 뒤면 레디 플레이어 원처럼 가상공간에서 살고 있는건가? 가상공간도 공부해보고 싶다.! 새로운 서울 도시계획에 관한 글이다. 미국의 공룡들도 메타버스에 많이 투자하나보다.. 메타버스가 답인가? 요즘 체력이 약해진 것 같아서 다시 조깅을 시작하고 바로 비타민과 오메가 3를 시켰다. 오메가 3는 빨.......

Naver Blog

카드 뉴스가 제작되었다.

학생회에서 컴공 복수 전공에 대해서 궁금한 질문을 재학생들한테 받고 컴공 복수전공하는 사람들한테 질문지를 줘서 답변해 줬는데 보니까 나한테만 물어본 것 같아서 내 답변으로 카드 뉴스가 제작됐다ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 뭔가 굉장히 웅장해지네

Naver Blog

[백준] 19583번 싸이버개강총회 c++

분명히 처음 코드 맞는 것 같은데 56%에서 틀려서 코드를 다시 짰다. 어디서 틀린 건지 아직도 모르겠다. 원래는 시간과 분을 따로따로 비교했는데 다시 생각해 보니 시간에 백을 곱하고 분을 더해주면 시간 그대로를 이용할 수 있어서 다 그렇게 만들어줬다. num은 내가 입력한 시간이고 snum은 개강 총회 시작하는 시간 Enum은 개강 총회 끝나는 시간 Qnum은 스트리밍 끝나는 시간이다. 처음에 num <= snum 이면 출석한 거니 5로 바꿔준다. 5는 별 의미 없다. 그냥 숫자 아무거나 써도 된다. 그다음에는 개강 총회 끝나는 시간과 스트리밍 끝나는 시간 사이이면서 값이 5이면 7로 바꿔준다. 7도 별 의미 없다. 마지막에 for 문 돌면서.......

Naver Blog

[CP] Codeforces Round #722 (Div. 2)

2021년 5월 20일 11시 35분에 열린 Codeforces Round 722 1솔 했다. 문제 풀다가 쪽지 왔길래 공지사항인가 싶어서 봤는데 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 푼 거 알려달라고 쪽지 왔다. 답장은 안 했다. A 번 웬일로 문제 보자마자 풀이 떠올라서 오 빨리 풀겠구나 했는데 자꾸 구현에서 시간 잡아먹고 심지어 2번이나 틀려버려서 풀이 떠오른 게 의미가 없어졌다. 문제가 요구하는 해답은 숫자 n이 주어졌을 때 n보다 작거나 같은 2의 제곱수를 찾아서 -1을 한 수를 출력하면 된다. 2의 제곱수이면 가장 큰 비트만 1이고 나머지가 여기여서 &의 연산을 해주면 맨 앞만 1이 되고 나머지 0이 된다 여기서 2의 제곱수 - 1의 수는 맨 앞만 0이고 나머지 1.......

Naver Blog

Please send a

코드포스 풀다가 쪽지로 A번 알려달라고 쪽지 왔다. ㅋㅋㅋㅋㅋㅋㅋㅋ 귀엽네 우리 러시아친구 이러면 안돼요~

Naver Blog

[백준] 1660번 캡틴 이다솜 c++

처음에 문제를 N이 주어지면 몇 번째 사면체까지 만들 수 있냐로 잘못 이해해서 틀렸다. dp 문제이다 동전 dp 문제들과 유사한 문제다. 문제는 해석하면 N 개가 주어졌을 때 사면체를 이용해서 N이 되도록 만드는데 이때 사면체의 개수를 최소로 해서 구하는 문제이다. dp[i] = 개수가 i일 때 만들 수 있는 최소 사면체의 수 일단 30만이 넘지 않는 개수를 v 벡터에 다 넣어준다. 인덱스 값이 사면체의 개수와 똑같다면 최소 1개를 만들 수 있으므로 dp[v[i]] = 1로 만들어준다. 이중 for 문을 보면 v[i]을 다 돌아보면서 을 해준다 두 번째 for 문에서 이렇게 해주는 이유는 j - v[i] >= 0을 항상 만족해야 되기에 이걸 바꾸.......

Naver Blog

999등

646문제가 1000등이네 그걸 몰랐네,, 999등 이제야 1000등 진입

Naver Blog

[백준] 1965번 상자넣기 c++

LIS 기본 문제 문제에 힌트가 있다 1 2 3 7을 선택하면 된다는 건 결국 가장 긴 증가하는 부분 수열을 구하면 된다는 의미이므로 구해주면 된다. i 번째를 기준으로 삼아서 이중 for 문으로 작은 인덱스를 탐색하면서 1. 자신보다 작은 지 2. 원래 있는 값과 dp[j] + 1을 비교해서 dp[j] + 1이 더 크면 더 긴 부분 수열을 만족하므로 갱신해 준다. 다 구하고는 + 1을 해줘야 정답 처리가 된다. 1 62만 보면 dp를 구했을 때 0 1 1로 되는데 1과 6을 보면 6안에 1이 있으므로 2개가 된다. 그래서 1을 더 해줘야 된다.

Naver Blog

신문 읽어보기 17

1. 변호사 3만 명 시대에도 민사 70% 나 홀로 소송 - 민사소송 1심 10건 중 7건이 변호사를 선임하지 않는 나 홀로 소송으로 나타남 - 인터넷을 통해 손쉽게 법률 정보에 접근할 수 있어서 변호사 선임을 주저하는 사람이 많아짐 - 변호사 최소 수임료는 330만 원부터 시작하고, 변호사 상담료는 별도. 상담료는 시간당 10만 원 수준을 요구하는 경우가 많다. - 재판할 때 반드시 변호사 선임해야 되는 줄 알았는데 아니었네, 변호사 선임 비용 비싸긴 하다. 2. 가상화폐 검은 수요일 - 중국이 가상화폐 시장 과열을 경고하며 가상화폐 관련 서비스를 단속하기 시작 - 가상화폐로 결제하거나 금융상품을 만들어 투자하는 행위, 가상화폐를 예금처.......

Naver Blog

신문 읽어보기 16

1. 불합격 이유 고지 의무를 만들겠다는 여당 - 채용 불합격 통보를 받은 후에 불합격 고지 의무를 알 수 있는 법안을 개정하려고 시도 중 - 만일 이 법이 시행되면 취준생 입장에서는 자신의 탈락 이유를 알 수 있기에 약점을 보완할 수 있지만 대기업 입장에서는 행정 업무의 부담이 증가하여서 채용 횟수 자체를 줄일 수가 있다. 2. 미국과 한국의 보유세 차이 - 미국 캘리포니아 기준으로 합리적인 세제를 가짐, 55세 이상 고령자가 상급지로 이사할 경우 파격적인 재산세 혜택을 준다. 또한 다주택자에 대한 보유세 중과가 전혀 없다. 우리나라는 종부세 최고세율 최대 3%, 다주택자의 경우는 종부세 공제를 전혀 받지 못한다. - 대한미국의.......

Naver Blog

[백준] 12865번 평범한 배낭

왜 이렇게 나와 knapsack 문제의 가장 기본이 되는 문제 3개월 전에도 풀긴 했으나 제대로 이해하고 푼 것도 아니어서 공부 다시 하고 다시 풀었다. 지금도 좀 이해가 덜 되기는 하네 이중 for 문 재귀 DP

Naver Blog

[백준] 14728번 벼락치기 c++

평범한 배낭 문제와 완전히 똑같은 문제 설명 생략

Naver Blog

[백준] 18222번 투에-모스 문자열 c++

MAX 값을 잘못 생각해서 계속 틀린 문제 10의 18승이면 최대 19자리인데 18승이니까 18자리겠지라고 생각해서 MAX를 대충 50 몇으로 했다가 틀려버림 1. dp 배열 이용해서 n 번째 문자열의 길이를 다 구해준다. 2. 예를 들어 k = 6이면 01101001에서 1001에서 0이다. 그럼 1001은 0110을 뒤집은 것이기에 0110의 두 번째 1로 간다. 이걸 계속 반복하고 n == 1 즉 한자리 수 될 때 처음 수가 0이기에 return 0; 중요한 게 뒤집은 것이기에! return 을 해줘야 된다.

Naver Blog

[CP] Educational Codeforces Round 109 (Rated for Div. 2)

2021년 5월 16일 5시에 열린 edu round 109 2솔 A번 최대공약수 이용 B번 아 A번 좀 빨리 풀어서 오늘 잘되겠구나 했는데 자꾸 B번에서 잘못 생각해서 시간 엄청 날려버렸다ㅋㅋㅋㅋ 페널티도 많이 받고,, 하 정말 빠르게 한 번에 푸는게 정말 중요하다 글고 역시 코드포스는 그리디다 B번은 가장 작은 수인 1과 가장 큰 수인 5의 위치를 보면 된다. D번 이걸 보고 어떻게 DP를 떠올릴까 전혀 생각 안나던데 2차원 DP 문제라고 한다. 먼저 초기화 부분들 n개를 입력 받으면서 1(이미 사람이 있는 자리)이면 one vector에 넣어주고 0(사람이 없는 자리)이면 zero vector에 넣어준다. dp 부분은 쉽게 생각해서 2차원 배열을 -1로 초기화 해주는거다.......

Naver Blog

[백준] 1535번 안녕 c++

5가지 풀이법이 존재하는 좋은(?) 문제 재귀 n 번째 사람을 사용하냐 안 사용하냐로 재귀 가능 비트마스킹 재귀랑 아이디어는 똑같다 1이면 그 사람한테 인사를 한다. 재귀 DP 재귀랑 거의 비슷하나 DP 이용해서 풀었다. 얘도 재귀랑 아이디어는 똑같다. 인사하냐 안 하냐 이중 for 문 DP 안녕 문제가 냅색 문제다. 재귀로 짜는 건 이해가 되는데 예전에도 그렇고 지금도 for 문 이용해서 짜는 건 잘 이해가 안 되네 dp[i][j] = i번째 사람의 체력이 j일때의 행복 최댓값 for 문 DP 추후 작성

Naver Blog

[백준] 16455번 K번째 수 찾는 함수 c++

당연히 sort로 하면 O(NlogN)이기에 약 3천만 정도 나와서 시간 초과인데 혹시 c++은 빠르니까 되지 않을까 싶어서 몇 번 제출해봤는데 시간 초과,, 뭔지 몰라서 좀 찾아보니 c++에서 제공하는 기능 중 nth_element가 있는데 모든 배열을 다 정렬하지 않고 내가 원하는 몇 번째 수가 정렬이 될 때까지만 정렬을 한다 시간 복잡도는 O(N)이라고 한다. 그렇기에 5백만이어도 통과 가능

Naver Blog

[백준] 2448번 별 찍기 - 11 c++

재귀가 익숙해졌다고 생각했는데 이거 풀면서 역시 안일한 생각이라는 걸 깨달음 재귀문에서 2,3번째 재귀문은 계속 생각했는데 1번째 재귀문을 놓쳐버렸다. 그 점에서 찍는 걸 생각했는데 그걸 코드로 옮길 생각을 못 했네 재귀 돌리면서 n == 3 최소 삼각형이 되면 그때 삼각형을 그 부분부터 그려주면 된다.

Naver Blog

[백준] 20164번 홀수 홀릭 호석 c++

이 문제 풀다가 다시 알고리즘 접을 뻔했다. 분명히 쉬운 문제인데 자꾸 못 풀어서 분노가 차올랐다. 처음 푼 방식도 분명히 맞는 것 같은데 도저히 왜 답이 안 나오는지 모르겠어가지고 다른 방식으로 풀었다. 문제 자체는 어렵지 않다. 재귀를 이용해서 계속 세주면 된다. 1자릿수와 2자릿수는 문제 나와있는 그대로 구현하면 되고 3자릿수 이상부터 이제 잘라줘야 되는데 substr 이용해서 잘라주면 된다. 자르고 더한 다음에 재귀 돌리면 된다. 이 문제를 풀고 느낀게 재귀 사용할 때는 매개변수로 사용하자! 전역변수로 하니 생각하기가 넘 힘들었따.

Naver Blog

[백준] 10830번 행렬 제곱 c++

1629번 제곱, 13171번 A랑 똑같은 문제 다만 행렬이라는 게 좀 더 까다롭다. 이 문제를 풀고 느꼈던 것 중 하나가 아 C++ 문법이 중요하구나! 이차원 배열을 넘겨주는 걸 생각을 못 했다ㅋㅋㅋㅋㅋㅋ 벡터로 해버렸다. 단순히 N 번 제곱해서 구하는 건 시간 초과이기에 분할 정복 이용해서 logN으로 구해야 된다!

Naver Blog

신문 읽어보기 12

연구실 생긴 뒤로 도서관을 잘 안 가니 신문 읽기가 힘드네 - 알트코인 : 비트코인 등 대형 코인을 제외한 나머지 군소 가상화폐 코인들을 말함 rock the boat - 문제를 일으키다, 평지풍파를 일으키다. leaflet - 전단 summit - 정상,정점 dampen - 꺽다, 약화시키다 defiance - 공개적으로 하는 반항 defector - 탈북자 enact - 제정하다 provocation - 도발 recalcitrant - 반항하는 salvage - 구조, 지키다, 인양하다

Naver Blog

[백준] 8979번 올림픽 c++

쉬운 문제인데 코드를 짤 때 실수를 너무 많이 했다. 1. cmp 함수 짤 때 true인데 false로 하고, false인데 true로 한 부분도 있었다. 2. 이중 for 문에서 비교해 줄 때 j와 i를 비교해야 되는데 j와 j+1를 비교해 줬다. 3. 코드를 갈아엎었는데 그전에는 i + 1인데 i라고 쓴 것도 있고 bronze인데 sliver라고 쓴 것도 있었다. 코딩 실수를 줄이도록 노력해야겠다. 문제는 cmp 함수를 문제 조건 그대로 구현하면 된다. 등수를 매기는 방식을 처리해 줄 때는 이중 for 문 사용해 줬다. 같다면 등수 그대로 가고 아니면 등수 계속 증가하는 방식으로

Naver Blog

신문 읽어보기 13

- monument : 기념비적인 - unveil : 공개하다 - indispensable : 없어서는 안 될, 필수적인 앞으로는 단어만 정리하는게 아니라 읽으면서 인상 깊었던 내용들 정리해야겠다.

Naver Blog

[백준] 2246번 콘도 선정 c++

문제가 조금 이해 안 되긴 했는데 문제 그대로 구현하면 되는 문제 정렬을 써서 for 문 한 개로 하는 법도 있던데 공부해봐야겠다.

Naver Blog

신문 읽어보기 14

1. K반도체 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ - 반도체 관련 대기업은 최대 40% 중소기업은 최대 50%까지 세금을 깎아줌 - 메모리 반도체가 세계 1위이고 시스템반도체는 2030년 내로 최고가 되기를 목표로 - 세액공제도 대폭 강화, 인재풀도 대폭 강화, 대학 학과 신설 및 인원 확대 반도체 주식 사면 될 듯 2. 이재용 사면 - 응답자 67% 이재용 사면 찬성, 이명박 박근혜 전직 대통령 사면 찬성은 39% - 이재용은 사면 찬성 여론은 전 연령대에서 과반으로 나타나 고른 지지 - 반도체 패권 전쟁과 고 이건희 회장의 3조 원 미술품, 문화재 기증으로 인한 찬성 여론이 높아짐 3. 머스크 비트코인으로 테슬라 구입 불가 - 비트코인 채굴로 인한.......

Naver Blog

[백준] 2910번 빈도 정렬 c++

이렇게 푸는 게 맞나? struct three에 숫자, 몇 번, 우선순위를 넣을 수 있게 해준다. 처음 배열 입력해서 숫자 받아주고 map 이용해서 우선순위를 기록한다. 첫 번째 우선순위를 1로 해야 된다. 처음에 0으로 해서 0값이 들어가서 틀렸다. 아무튼 v2 배열에 v 배열 값을 넣어주고 중복 값을 제거해 주고 이 값들을 이용해서 이분 탐색을 해서 v 배열에 어디 있는지 찾아주고 그 값들을 v3 배열에 넣어준다. 이때 우선순위는 0으로 일단 다 넣어준다 그다음 v3 배열을 돌면서 map에 접근해서 우선순위를 업데이트해주고 결괏값을 출력해 준다.

Naver Blog

[백준] 15661번 링크와 스타트 c++

문제의 키포인트는 그룹을 나누는 것 1. 비트 마스킹 두 그룹으로만 나누면 되니 0과 1로 생각해서 비트 마스킹을 이용했다. 1이면 team1으로 0이면 team2로 넣어주고 문제 조건에서 한 명 이상 있어야 됐으니 이 조건을 만족할 때만 최솟값을 구해줬다. 2. 재귀(백트래킹) 아이디어는 비트 마스킹과 똑같다 단순히 그룹을 나누는 걸 재귀를 이용해서 구현했다. team1에 넣어주고 team2에 넣어주는 방식으로 똑같이 한 명 이상이어야 되니 조건 걸어주고 만족하면 최솟값 구해주면 된다.

Naver Blog

ICPC 준비

5월 5월 7일 코드포스 라운드 720 Div2 - 0솔 5월 8일 Atcoder beginner Contest 200 - 3솔 5월 9일 Atcoder Regular Contest - 1솔 1주차(브루트포스, 재귀, 정렬) 5월 10일 5904번 Moo 게임, 15661번 링크와 스타트, 13171번 A 5월 11일 20165번 홀수 홀릭 호석 5월 12일 2456번 나는 학급회장이다 8979번 올림픽 5월 13일 5648번 역원소정렬, 15975번, 15970번 화살표 그리기, 2246번 콘도 선정 5월 14일 2910번 빈도 정렬 5월 15일 16455번 K 번째 수 찾는 함수, 1015번 수열 정렬, 별 찍기 - 11, Atcode beginner Contest 201 - 3솔 5월 16일 18222번 투에모스 문자열, 20186번 수 고르기, edu codeforces 2솔, Atcoder Regular Contest 1솔.......

Naver Blog

[백준] 1744번 수 묶기 c++

오랜만에 백준 문제 다시 시작해야지 수를 최대 2개씩 묶을 수 있는 문제 문제를 보자마자 그럼 양수 내림차순 정렬 음수 오름차순 정렬하고 양수는 무조건 다 묶고 1개 남으면 더 하고 음수도 일단은 다 묶고 1개 남았을 때 0이 있는 지보고 0이 있다면 음수와 곱해서 0으로 만든 다음에 더하고 0이 없으면 그대로 음수를 더하면 되겠다고 생각해서 코드를 작성해보니 자꾸 틀려서 왜인가 싶었는데 처음에 음수를 내림차순 정렬해서 조금 잘못된 방식으로 풀었고 반례를 찾다 보니 무조건 묶는 게 좋은 게 아니라는 걸 발견했다 양수 1이 있다면 이거는 묶는 것보다 그냥 더하는 게 더 숫자가 크게 나온다. 그래서 곱하는 것과 더하는 걸 비교해.......

Naver Blog

[백준] 13171번 A c++

1. 재귀 이용 큰 수에서부터 작은 수로 가는 방법 작은 수를 구해버린다 8제곱이면 4제곱 * 4제곱 4제곱 = 2제곱 * 2제곱 이런 식으로 구해주는 방법 이때 y가 짝수 면 그냥 곱하면 되고 홀수 면 A까지 한 번 더 구해준다. dp를 쓸까 하다가 배열의 크기가 너무 커서 할 수 없다고 판단했다. res(A % MOD, X)로 결괏값을 해주는 이유는 결국 A도 곱해야 되기에 이것도 곱하는 거니 % MOD 해준다. 2. dp + for 문 이용 dp는 문제에서 64번 반복하면 된다고 하니 dp[i]는 A^(2^i)의 값이라고 생각해서 구해줬다. 홀짝 나눠줄 필요가 없는 게 1 2 4 8 16.. 이므로 무조건 짝수만 구하면 되니까 나눌 필요 없다. 문제에서 11 = 1 + 2 + 8이.......

Naver Blog

블챌 조기종료

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 아 나름 재밌었는데 아쉽네.. 공식 블로그 가서 댓글보니 살벌하네..

Naver Blog

신문 읽어보기 10

1. 공매도 -특정 종목의 주가가 하락할 것으로 예상되면 해당 주식을 보유하고 있지 않은 상태에서 주식을 빌려 매도 주문을 내는 투자 전략. 주로 초단기 매매차익을 노리는 데 사용되는 기법. 향후 주가가 떨어지면 해당 주식을 싼값에 사 결제일 안에 주식대여자(보유자)에게 돌려주는 방법으로 시세차익을 챙김 예를 들어 A 종목 주가가 1만 원이고 주가 하락이 예상되는 경우, 이때 A 종목 주식을 갖고 있지 않더라도 일단 1만 원에 공매도 주문을 낸다. 그리고 실제 주가가 8,000원으로 하락했을 때 A 종목을 다시 사서 2,000원의 시세차익을 챙기는 것이다. [네이버 지식백과] 공매도 (시사상식사전, pmg 지식엔진연구소) 2. 제청 - 안건.......

1 2 3 4 5 6 7 8 9 10