nicedeveloper의 등록된 링크

 nicedeveloper로 등록된 티스토리 포스트 수는 87건입니다.

분류성능평가지표 : F1-score , Accuracy, ROC curve, AUC curve [내부링크]

2022.12.07 - [ML] - 오차행렬, FP, FN, F-score, Threshold Confusion Matrix TN : 4 / FP : 1 FN : 1 / TP : 2 from sklearn.metrics import confusion_matrix # assume y_true and y_pred are your true and predicted labels, respectively y_true = [0, 1, 1, 0, 1, 1, 0, 0] y_pred = [0, 1, 0, 0, 1, 1, 0, 1] cm = confusion_matrix(y_true, y_pred) >> array([[4, 1], [1, 2]]) Precision이나 Recall은 모두 실제 Positive인 정답을 모델..

나이브 베이즈 이론 연습문제 [내부링크]

CASE 1 CASE 2 총 8개의 메일 중 4개의 메일이 스팸 메일이므로 P(spam) = 4/8 = 1/2 총 8개의 메일 중 3개의 메일이 coupon이라는 단어를 포함하므로 P(coupon) = 3/8 총 4개의 스팸 메일 중 2개의 메일이 coupon이라는 단어를 포함하므로 P(coupon | spam) = 2/4 = 1/2 P(coupon | spam)과 P(spam)를 곱한 후에 P(coupon)로 나눠줍니다. 정답은 2/3 즉, 66.7%입니다.

벡터화 발전과정 2 - soynlp (비지도학습 한국어 형태소 분석기) [내부링크]

Soynlp - 품사 태깅, 형태소 분석 등을 지원하는 한국어 형태소 분석기. - 비지도 학습으로 데이터에 자주 등장하는 단어들을 형태소로 분석함. - 내부에 단어사전 같은 단어 점수표를 만들어 동작하며 . 이 점수는 응집 확률(cohesion probability) 과 브랜칭 엔트로피(branching entropy) 를 활용함. - 학습은 txt string (말뭉치, 진짜뭉치)을 DoublespaceLineCorpus로 띄어쓰기 두개 기준으로 떼어내 문서단위로 구분하고, 이를 WordExtractor로 단어를 추출하여 .train 시키면, 단어점수표가 만들어짐. 단어점수표 구조 응집 확률 (cohesion probability) 내부 문자열(subword)가 "얼마나 응집"하여 "자주" 등장하는가의..

cGAN / Pix2pix [내부링크]

GAN의 목적 1. Pg -> Pdata (만들어낸 이미지의 분포가 실제 이미지의 분포로 수렴하면 성공) 2. D(G(z)) -> 1/2 (Generator가 만들어낸 결과(G(z))를 Discriminator가 판별했을 때, 1이 진짜, 0이 가까이지만 잘 모르겠어서 1/2로 판별해내면 성공. 첨에는 0으로 잘 가려내겠지만 나중에는 1인가? 하다가 결국 그 평균인 1/2에 수렴해야함) D(x) : x는 진짜에서 뽑아온 분포니, D가 판별했을 때 진짜이도록, 즉 1이 되도록 D(G(z)) : G(z) output 자체가 가짜니 D입장에서는 ; D가 판별했을 때 가짜이도록, 즉 0이 되도록 G입장에서는 ; D가 판별했을 때 진짜이도록, 즉 1이 되도록 결국, log 1 + log 0.5 가 될 것임. lo..

벡터화 발전과정 (BoW/DTM/TF-IDF/SVD/LSA/LDA/토픽모델링) [내부링크]

벡터화 분산표현이 대중화되기 전에 쓰이던 방법 단어의 의미! 를 부여하기 위한 인간의 노력들. 크게 빈도 / 분포 를 이용한 두가지 방법으로 나뉨 단어 빈도를 이용한 벡터화 1. BoW (Bag of Words) 문서 내 단어들을 다 쪼개서 >> 하나의 가방에 넣고 순서 무시하고 흔들어버림 >> 단어별 빈도수에 따라 정렬 >> 단어 분포를 보고 문서의 특성을 파악 Keras로는 tokenizer.word_counts를 딕셔너리로 만들면 BoW. sklearn로는 CountVectorizer.fit_transform(sentence).toarray() 로 BoW 만듬. Bow에는 단어별 빈도수까지 들어있기 때문에 단순 단어 색인인 fit_on_texts로 만든 word_index와는 다름. 한계 : 어순에..

Keras Tokenizer 와 SentencePiece 비교 이해 [내부링크]

Keras vs SentencePiece 1. fit_on_texts() : keras.preprocessing.text.Tokenizer에 내장된 함수로, 사전을 만들기 위한 준비작업 Sentencepiece : 파일을 불러올 때 SentencePieceTrainer.Train("--input 파일명 --model_prefix=korean_spm --vocab_size= 보카사이즈") 이렇게 불러오면, prefix 단위로 토큰화, idx 매길 준비를 한다. 불러올 때 이미 토큰화를 내재적으로 하기때문에, 다른 두개와 달리 토큰화된 문장 list가 아니라 온전한 원문 문장 list를 매개변수로 전달함. 2. texts_to_sequences() : word to 숫자 Sentencepiece : Enco..

전처리, 분산표현, 임베딩, 토큰화 [내부링크]

자연어 (Natural) : 인류의 언어. 200가지의 언어 중 40가지 정도가 문자를 가짐. 문맥 의존 언어 (context sensitive language) parsing이 어려움. 문맥, 현실세계의 이해를 필요로 할 때가 많아 단순 파싱이 되지 않음. 착한 영희 친구를 parsing 하여 다 떨어뜨리면, 영희가 착한건가 친구가 착한건가.. She drove down the street in her car. 그녀는 그녀의 차를 타고 길을 운전한건가, 차안에 있는 길을 운전한건가. 인공어 (Artificial) : 프로그래밍 언어. C언어, 파스칼 등등. 문맥 자유 언어 (context free language) parsing이 너무 잘됨. 문맥이 자유로우니 그냥 나누면 끝. 1. 전처리 자연어의 N..

OCR (광학문자인식)과 딥러닝 [내부링크]

OCR(Optical Character Recognition, 광학 문자 인식) 1) Detection - 인식 2) Recognition - 해독 1. Detection Object Detection(객체 인식) 방법이 사용됨 Regression(회귀) 방식 : 기준으로 하는 박스 대비 문자의 박스가 얼마나 차이가 나는지를 학습 Segmentation(세그멘테이션) : 픽셀 단위로 해당 픽셀이 문자를 표현하는지를 분류하는 문제(pixel-wise classification) 객체 : 물체에 따라 크기가 일정하고, 물체간 거리가 충분히 확부된다. 문자 : 문자는 영역과 배치가 자유롭고, 검출하기 위한 설정이 필요, 글자간 거리가 촘촘함. (박스가 겹침) 논문근거 기술분류 Regression-based :..

비지도학습 / K-means, DBSCAN / PCA, T-SNE [내부링크]

비지도학습 지도학습과 달리 training data로 정답(label)이 없는 데이터가 주어지는 학습방법. 주어진 데이터가 어떻게 구성되어 있는지 스스로 알아내는 방법 지도학습이 회귀, 분류라면, 비지도학습은 분류! 종류 군집화 (clustering) : K-means, DBSCAN (주로 Classification) 차원축소 (dimensionality reduction) :PCA(Principal Component Analysis), T-SNE 생성모델 (generative model) 군집화 (clustering) 1. K-means 정답 label 도 없고, 분류기준이 되는 클래스나 카테고리도 없는 데이터를 가까운, 유사한 것들끼리 묶어주는 것. 묶을 기준이 없기 때문에 k개의 기준점을 중심으로 ..

Chatbot [내부링크]

챗봇의 종류 1.대화형 챗봇 NLP처리를 기본으로 한 챗봇으로 질문을 분석하여 답변을 주는 프로세스를 가진다. 비용, 전문성, 개발소요시간 모두 최상으로 소요된다. 2. 트리형 챗봇 인공지능은 아니며, 질문을 받으면 그 다음 단계로 넘어갈 버튼을 제시한다. 자주하는 질문에 쓰기 좋으며, 챗봇1세대의 방식이다. 비용은 매우 낮고, 전문성은 낮은 정도, 시간은 보통으로 소요된다. 3. 추천현 챗봇 인공지능일수도 있고, 아닐수도 있다. 질문을 받으면 추천하는 답변을 여러개 제시한다. 만약 1개만 제시한다면 대화형 챗봇이 된다. 비용과 전문성은 보통이고, 시간은 많이 소요되는 편이다. 4. 시나리오형 챗봇 제공할 서비스나 결과물이 정해져 있을 때 많이 사용한다. 고객에게 받아야할 정보를 단계적으로 받을 수 있어..

추천시스템 - ALS [내부링크]

ALS(Alternating Least Squares) 알고리즘 설명 사용자 또는 상품 측면의 벡터가 주어져 있을 때 최소제곱해(Least Squares) 도출 이전 스텝에서 설명한 Matrix Factorization 모델을 implicit 패키지를 사용하여 학습해 봅시다. implicit 패키지는 이전 스텝에서 설명한 암묵적(implicit) dataset을 사용하는 다양한 모델을 굉장히 빠르게 학습할 수 있는 패키지입니다. 이 패키지에 구현된 als(AlternatingLeastSquares) 모델을 사용하겠습니다. Matrix Factorization에서 쪼개진 두 Feature Matrix를 한꺼번에 훈련하는 것은 잘 수렴하지 않기 때문에, 한쪽을 고정시키고 다른 쪽을 학습하는 방식을 번갈아 수..

Ex12_ NLP / 뉴스 요약봇 [내부링크]

1. 데이터 전처리 null값 제거 : .nunique()로 null 확인 후, .dropna로 제거 중복 제거 : drop_duplicates()로 제거 텍스트 정규화와 stopwords 제거 정규화사전, 불용어사전(NLTK) 를 불러오거나 만들어주거나 한 후에 preprocess_sentence라고 함수를 만드는데 text 컬럼은 정규화와 불용어 모두 처리하고, clean_text=[ ]에 담고 headlines 컬럼은 자연스러운 문맥을 위해 정규화만 하고, clean_healines =[ ] 에 담아둠. 2. train, test 나누기 최대길이 정하기 길이분포를 구하여 그래프로도 한번 보고 적당한 text_max_len, headlines_max_len을 임의로 잡는데, 잡을 때 평균보다는 약간 ..

추천 시스템 알고리즘/ MF / CSR [내부링크]

추천 시스템(Recommender System) 언제 사용하는가? 아이템은 너무 많고, 유저의 취향이 다양할 때 주요 특징 범주형(이산적) 데이터를 다룬다. 데이터들을 일직선 좌표에 두고 유사도를 계산하여 추천한다. 코사인 유사도 (Cosine similarity) 두 벡터의 방향이 이루는 각에 코사인을 취해 구함. 두 벡터의 방향이 완전히 동일하면 (둘다 왼쪽아래-오른쪽위) : 1, 둘의 교차각이 90도라면 (왼쪽아래-오른쪽위)와 (오른쪽아래-왼쪽위) : 0, 둘의 교차각이 180도라면 (왼쪽아래-오른쪽위)와(오른쪽위-왼쪽아래) : -1 1 ~ -1까지 값을 가지며, 1일수록 유사도가 높음. 사이킷런으로 구사함. 기타 다른 유사도 계산법 코사인 유사도 이외에도 유클리드 거리, 자카드 유사도, 피어슨 상..

MLE, MAP / prior, posterior, likelihood [내부링크]

베이지안 머신러닝 모델 모델 파라미터를 고정된 값이 아닌 불확실성(uncertainty)을 가진 확률 변수로 보는 것, 데이터를 관찰하면서 업데이트되는 값으로 보는 것 베이즈 정리(Bayes' theorem) prior(prior probability, 사전 확률) 데이터를 관찰하기 전 파라미터 공간에 주어진 확률 분포 확률분포 먼저 고정 후 데이터 받음. p(θ) likelihood(가능도, 우도) 파라미터의 분포 p(θ)가 정해졌을 때 x라는 데이터가 관찰될 확률 prior 분포를 고정한 후, 주어진 파라미터 분포에 대해서 우리가 갖고 있는 데이터가 얼마나 '그럴듯한지' 계산하는것 p(X=x∣θ) , L(θ∣x) 입력 데이터의 집합을 X, 라벨들의 집합을 Y라고 할 때, likelihood는 파라미터..

머신러닝과 인간. 그 끝의 딥러닝 [내부링크]

데이터는 유한하나, 나는 모든것을 알고싶다. 이를 위한 아주 과학적이고 수학적인 접근법 통계. 사람의 한계치를 넘은 계산량과 속도를 기계에게 일임하여 이를 해결하려는 시도가 머신러닝. 유한한 데이터로 확률분포만을 알아낸다면 새로운 데이터로도 예상되는 결과를 추정할 수 있다. 하지만 문제는 데이터가 유한하다는 사실. 그렇기에 많은 변수들이 있는 실제에 가깝기는 상당히 어렵다. 그래서 머신러닝은 그 변수들을 파라미터라고 할당해주고 범용적인 모델을 만들어낸다. 그리고 이 파라미터값을 조절하여 데이터의 분포를 표현한다. 머신러닝의 목표 모델의 확률분포가 실제 분포에 가장 가까울 수 있는 최적의 파라미터값을 찾는 것. 새로운 데이터를, 아직 일어나지 않은 일을, 다가올 미래를. 두려움인가, 통제인가, 기대인가, ..

생성 모델들 / GAN [내부링크]

모델의 종류 판별 모델 (Discriminative Modeling) : 입력된 데이터셋을 특정 기준에 따라 분류하거나, 특정 값을 맞히는 모델 생성 모델 (Generative Modeling) : 학습한 데이터셋과 비슷하면서도 기존에는 없던 새로운 데이터셋을 생성하는 모델. 하기는 모드 생성모델에 해당. Pix2Pix 간단한 이미지를 입력할 경우 실제 사진처럼 보이도록 바꿔줄 때 많이 사용되는 모델 단순화된 이미지(Input Image) 와 실제 이미지(Ground Truth) 가 쌍을 이루는 데이터셋으로 학습을 진행 How to use 스케치로 그려진 그림을 실사화하기 흑백 사진을 컬러로 변환하기 위성사진을 지도 이미지로 변환하기 낮에 찍힌 사진을 밤 배경의 사진으로 변환하기 CycleGAN Pix2..

확률과 통계 [내부링크]

1. 확률 (Probability) 이항(discrete) / 연속(continuous) 서로 배타적(mutually exclusive) : 시행의 모든 시도에서 한 사건 발생 시 다른 하나사건이 발생하지 않을 경우 집합(set), 원소(elements), 사건(events), 부분집합(subset), 전체집합(universal set), 공집합(null,empty set) 교집합(intersection), 합집합(union), 같음(equality) 여집합(complementary set; Set - A), 차집합(difference; A-B != B-A in Union), 서로소집합(disjoint set; A and B are mutually exclusive) A1,A2,…,An 이 서로 배..

Entropy / Cross - Entropy [내부링크]

Entropy 불확실성(uncertainty)에 대한 척도. 예측모델의 궁극적인 목표는 불확실성 제어에 있다. 불확실성이 없을 때, 즉 내가 사람이라는 사실에 있어 entropy는 0이다. 어떤 사건이 같은 비율로 발생한다고 하고, 사건의 갯수를 n이라고 하면, entropy는 log(n)이다. 만약 양념치킨과 후라이드 치킨이 반반일 때의 entropy는 log(2) = 0.69이다. 여기서 2는 사건의 갯수로, 양념을 집거나 후라이드를 집는 사건, 총 2개가 된다. 하지만 치킨맛이 2개가 아닌 여러개고, 맛마다 치킨조각이 다르다면, 공식이 필요해진다. H(q) : 엔트로피 C : 범주갯수 = 치킨 맛이 몇개인가 q : 사건의 확률질량함수 (probability mass function) = 각 사건이 ..

Regression (회귀) / 이진분류는 회귀인가 분류인가? [내부링크]

Regression 두시간 반을 갈아넣어 만든 표..... ㅠㅠㅠㅠㅠ 선형 회귀 분석(Linear Regression) 1. 표기법 종속변수 Y와 한 개 이상의 독립변수 X와의 선형 상관관계를 모델링하는 회귀분석 기법 주어진 데이터에 우리의 선형 식이 잘 맞도록 회귀계수 및 오차를 구하는 것 β : 회귀계수 = weight / ϵ : 종속 변수와 독립 변수 사이에 오차 = bias 수학과의 차이는, W, b는 단순스칼라 값이 아니라 행렬로 거의 대부분 오게됨 2. 용어설명 잔차(residual) 관측값(y_test)과 회귀직선의 예측값(y_pred)과의 차이, 보통 e로 표기 잔차로 그래프를 그린 후에 특정 패턴이 나타나면 회귀직선이 적합하지 않다는 의미. 잔차의 개념을 잘 알면 손실함수를 이해할 수 있..

Regularization, Normalization [내부링크]

Regularization(정칙화) - 오버피팅(과적합) 해결을 위한 방법에 속함 - train loss는 약간 증가하더라도 결과적으로 val loss와 test loss 감소가 목적임 - L1, L2 Regularization, Dropout, Batch normalization Normalization(정규화) - 데이터 전처리 과정 중 하나. - 데이터의 형태를 좀 더 의미있고, 학습에 적합하게 만드는 과정 - z-score, minmax scaler로 value를 0-1 사이로 분포를 조정

model.summary 에서의 param# 구하기 [내부링크]

param_number = output_size * (input_size + 1) = output_channel_number * (input_channel_number * kernel_height * kernel_width + 1) - for. conv ### num_param 1. conv2d (Conv2D) = 32 * ((3 * 3)+1) = 320 2. conv2d_1 (Conv2D) = 64 * ((32 * 3 * 3)+1) = 18496 3. conv2d_2 (Conv2D) = 64 * ((64 * 3 * 3)+1) = 36928 4. dense(Dense) = 64 * (576+1) = 36928 5. dense_1(Dense) = 10 * (64+1) = 650 ### num_param 1..

Convolution Layer 심화학습 [내부링크]

퍼실님 Question keras.layers의 Conv2D()는 필터의 크기 (가로, 세로)와 필터의 갯수를 인자로 받습니다. 그러나 각 층의 input 값으로 들어가는 feature map들은 depth가 3, 16, 32 등등 제각각인데요, 그렇다면 Conv2d()의 인자로 depth 정보는 왜 입력하지 않아도 되는걸까요? Conv2D()의 인자 중 필터의 수는 ouput(feature map)의 형태 중 어느 부분에 영향을 줄까요? 필터 수가 늘어나거나, 필터의 크기가 커지는 것은 이미지를 인식하고 해석하는 과정에서 어떤 영향을 줄까요? My Answer 1. input image의 depth (= num of channels = num of feature maps) = filter 의 num o..

NLP 기본개념 [내부링크]

희소 표현(Sparse Representation) 단어 벡터의 각 차원마다 고유의 의미를 부여하는 방식 (너무 양이 많아 결국 한계가 옴) 분산 표현(Distributed Representation) 유사한 맥락에서 나타나는 단어는 그 의미도 비슷하다 라는 분포가설에서 비롯하여, 유사한 맥락에 나타난 단어들끼리는 두 단어 벡터 사이의 거리를 가깝게 하고, 그렇지 않은 단어들끼리는 멀어지도록 조금씩 조정 Embedding layer 컴퓨터용 단어사전을 만드는 곳 (단어 n개 쓸꺼고 k 깊이(차원)로 표현한 것) Weight이다 Lookup Table이다 (LUT : 주어진 연산에 대해 미리 계산된 결과들의 집합(배열), 매번 계산하는 시간보다 더 빠르게 값을 취득해 갈 수 있도록 사용되는 레퍼런스로 사용..

활성화함수 종류 [내부링크]

vanishing gradient 현상이 발생한다. (0과 1에 결과값이 포화 saturate 된다. 포화된다는 말 자체가 kill the gradient. 기울기가 죽어버리면 에포크를 많이 돌려도 더이상 학습되지 않는다. ) exp 함수 사용 시 비용이 크다. 요즘은 ReLU를 더 많이 사용한다. Hyperbolic Tangent : 쌍곡선 함수 중 하나. (쌍곡선함수 hyperbolic tuction : 일반 삼각함수와 유사한 성질을 갖는 함수지만 삼각함수와 달리 주기함수는 아니다. tanh 함수는 함수의 중심값을 0으로 옮겨 sigmoid의 최적화 과정이 느려지는 문제를 해결. vanishing gradient 문제 존재. (값이 1, -1에 포화됨) sigmoid, tanh 함수에 비해 학습이 빠..

인공지능, 머신러닝 그리고 딥러닝 [내부링크]

인공지능 사람이 직접 프로그래밍 하지 않고, 기계가 자체 규칙 시스템을 구축하는 과학 머신러닝 데이터를 통해 스스로 학습하는 방법론. 데이터를 분석, 패턴학습, 판단,예측을 수행함. 기존의 머신러닝은 데이터를 입력하기 위해 사람이 직접 피처(Feature)를 가공한다. 데이터의 여러가지 표현방식 중 주로 '표' 형태로 된 정형 데이터를 처리하도록 설계되었기 때문. 그래서 데이터 전처리나, 좋은 피쳐를 조합하여 만들거나 하는 피처 엔지니어링(Feature Engineering) 이 중요하다. 그만큼 머신러닝은 더 좋은 모델을 만들기 위해 '사람의 개입'이 많다. 딥러닝 머신러닝의 하위 집합이며, 그 과정의 모델 형태가 신경망인 방법론. Deep learning is inspired by neural net..

TF-IDF [내부링크]

TF_IDF (TF * IDF) A : " a new car, used car, car review" B : "A friend in need is a friend indeed." Term Frequency Score 어떤단어가 많이 출현할 수록 그 문서와의 관계가 높을 것이다. = 가장 중요한 단어다. 단점 : A friend in need is a friend indeed. 경우, a 와 friend의 tf score가 같아 연관성을 나타내기 부족했음 IDF log (총문장의 갯수 / 이 단어가 출현한 문장의 갯수)

시계열 개념 / ADF Test / 시계열 분해 /ARIMA [내부링크]

시계열 예측(Time-Series Prediction)을 다루는 여러 가지 통계적 기법 ARIMA(Auto-regressive Integrated Moving Average) 페이스북 Prophet LSTM Layer 시계열 예측의 예시 지금까지의 주가 변화를 바탕으로 다음 주가 변동 예측 특정 지역의 기후데이터를 바탕으로 내일의 온도 변화 예측 공장 센터 데이터 변화 이력을 토대로 이상 발생 예측 예측을 위한 전제 2가지 과거의 데이터에 일정한 패턴이 발견된다. 과거의 패턴은 미래에도 동일하게 반복될 것이다. >>>> 즉, 안정적(Stationary) 데이터에 대해서만 미래 예측이 가능하다. 안정적(Stationary) : 시계열 데이터의 통계적 특성이 변하지 않는다 / 시계열 데이터를 만들어내는 시간..

Loss / Metric [내부링크]

Loss : 모델 학습시 학습데이터(train data) 를 바탕으로 계산되어, 모델의 파라미터 업데이트에 활용되는 함수 Metric : 모델 학습 종료 후 테스트데이터(test data) 를 바탕으로 계산되어, 학습된 모델의 성능을 평가하는데 활용되는 함수 왜 loss와 metric를 다르게 적용하는가? 분류모델일 경우 loss : crossentropy를 써서 학습시키고, metric : accuracy로 성능을 평가한다. 회귀모델일 경우 loss와 metrics에 RMSE를 둘 다 쓰기도 하고, 또 mse, mae 등 여러가지를 쓴다. 다르게 쓰는 이유는, loss는 학습을 위해 쓰는 것이기 때문에 학습을 잘 시킬 수 있는 방법을 아는 친구가 적절하고, (crossentropy는 continuous..

RFM(Recency, Frequency, Monetary) [내부링크]

RFM(Recency, Frequency, Monetary)분석 가장 최근 가장 빈번 가장 많은 금액 을 구매한 고객 을 기준으로 고객에게 등급을 부여하는 방식 데이터 준비 Sales 데이터 불러오기 총 log 고객수 : 52672 (unique ID count) Purchase 고객 (27682명)만 sales_data 변수로 지정 RFM dataframe 생성 열 생성 : RFM으로 사용할 columns 생성 후 RFM_data 변수로 지정 RFM_data = sales_data.groupby(['ID']).agg({'Interval':'min','ID': 'count', 'Payment': 'sum'}) 구매 고객 중 RFM 데이터 사용 가능한 고객수 : 5267명 R : ID별 오늘 - 접속시간 ..

EDA 노트 [내부링크]

상관계수의 절대값이 높다고 해서, 그 요소가 result의 원인이 되는 것은 아니다. breast cancer에서 softness error와 악성간의 상관계수지수가 높긴 했지만, 그렇다고 softness error가 암의 원인은 아니다. 시각화하는 seaborn의 유형을 잘 고르면 내가 전달하고 싶은 말을 효과적으로 할 수 있다. seaborn 유형을 더 많이 이해해야할 필요가 있다. bike 3시 예측하는 eda에서 나는 시간별, 온도, 습도에 따른 count 비교를 하고 싶었지만, 그 유형을 찾는데 (violin) 많은 시간이 걸렸고, 더불어 시간적 제한으로 결국 구현해보지 못하고 제출했다. duplicated는 전체로, index로 쓸 column 으로 각각 실행해야한다. 이상치 (Outlier)..

이미지처리 Basic [내부링크]

영상처리 사용목적에 따라 적절히 처리하여 개선된 영상을 생성하는것 노이즈제거, 대비(contrast)개선, 관심영역(region of interest)강조,영역분할(segmentation), 압축 및 저장 저수준 : 영상 획득, 향상, 복원 ,변환처리, 압축 고수준 (Computer Vision) : 영상 분할, 표현, 인식 Color Space : 색을 표현하는 다양한 방식. 색 공간 Channel : 각 컬러스페이스를 구성하는 단일 축 이미지 저장방식 raster, bitmap : 각 점 하나하나의 색상 값을 저장하는 방식. (r, g, b) (255,255,255). 확대시 깨짐 vector : 상대적인 점의 선의 위치를 방적식으로 기록 후 확대 및 축소할 때 각 픽셀의 값을 재계산하여 깨짐이 없음..

상관계수, 경사하강법, 손실함수, RMSE, 경사하강법, 선형회귀 [내부링크]

Correlation does not imply causation 상관은 인과를 함축하지 않는다 상관계수 한 변수가 커짐에 따라 다른 변수가 작아지는 관계인 경우, 두 변수는 '상관 관계가 있다'고 하고, 그 관계된 정도는 '피어슨(Pearson) 상관 계수'라고 함. model.fit 모델을 학습시킨다 = 모델의 정확도를 가장 높일 수 있는 최적의 "매개변수(가중치,Weight)" , 혹은 "파라미터(편향,Bias)" 를 찾는다 model.compile 손실함수(loss function) or 비용함수(cost function) predicted y 와 real y 값 간의 차이를 나타내는 함수. 값이 크면 그만큼 둘의 거리가 멀다는 뜻으로, 정확하지 않다는 뜻. 손실값은 작을수록 좋은것! 1) 모델이..

TensorFlow Developer Certificate 시험 후기 [내부링크]

마지막 10분을 남기고 제출했던 텐서플로우 개발자 자격증의 후기를 남긴다. 좀 더 생생하게 기록하기 위해, 끝나자마자 바로.. TensorFlow Developer Certificate 자격증 이름 그대로 TensorFlow를 잘 쓰는 개발자는 자격증을 주는 것인데, 시험 응시료는 $100, 5시간안에 5문제를 풀면 된다. Category 1 : Basic Model Category 2 : DNN Model Category 3 : CNN Model Category 4 : NLP Model Category 5 : Sequence Model 나는 전남 ICT 이노베이션스퀘어에서 주최하는 AI 전문자격 취득과정 (Google) 에 참여했고, 2022.10.04 - 2022.11.29 까지 저녁 7시 - 11시..

CSV, XML, JSON [내부링크]

모듈(module) : 파이썬으로 만든 코드가 들어간 파일 .py 패키지(package) : 기능적으로 동일하거나 동일한 결과를 만드는 모듈들의 집합 또는 폴더. 종종 라이브러리라고도 불림 라이브러리(library) : 모듈과 패키지의 집합. 패키지보다 포괄적인 개념이나 패키지와 혼용되어 사용되기도 함. sys os glob PIP(Package Installer for Python) : 패키지 관리자로 파이썬을 설치하면 기본으로 설치됨 PyPA(Python Packaging Authority) : 파이선 패키지를 관리하고 유지하는 그룹 PyPI(The Python Package Index) : 파이썬 패키지들의 저장소 sys.path : 현재 폴더와 파이썬 모듈들이 저장되는 위치를 리스트 형태로 반환 ..

문자열다루기, 정규표현식 [내부링크]

인코딩과 유니코드 인코딩 (encoding): 문자열을 바이트로 변환하는 과정 디코딩 (decoding) : 바이트를 문자열로 변환하는 과정 유니코드(Unicode) : ISO(International Standards Organization); 전 세계 문자를 모두 표시할 수 있는 표준 코드 UTF-8, UTF-16 : 유니코드를 표현하는 인코딩 방식들. 인코딩시 최소 8bit 혹은 16bit가 필요한가의 의미. 대세는 UTF-8이다. UTF-8은 문자 표현 시 1~4bytes 가 필요하고, UTF-16는 2~4bytes가 필요하다. 저장용량이 중요할 때에 코드들의 문자에 따라 잘 선택해줘야 한다. 영문은 UTF-8일 때 1byte, UTF-16일때 2bytes 이고, 한글은 UTF-8일 때 3byte..

Matplotlib, Seaborn [내부링크]

cheatsheet https://deeplearning.fr/wp-content/uploads/2020/12/0_Cfo6qfxirL4STHTY1.png https://martinnormark.com/a-simple-cheat-sheet-for-seaborn-data-visualization-2/ A simple cheat sheet for Seaborn Data Visualization Just gonna put this out here, courtesy of Kaggle's Data Visualization course [https://www.kaggle.com/learn/data-visualization]. It is a super simple description of the different p..

Scikit-Learn [내부링크]

Scikit Learn : 파이썬 기반 머신러닝 라이브러리. Scipy 및 NumPy 와 비슷한 데이터 표현과 수학 관련 함수 일반적으로 머신러닝에서 데이터 가공(ETL:Extract Transform Load)을 거쳐 모델을 훈련하고 예측하는 과정을 거침 Scikit Learn은 ETL - transformer()를 제공하고, 모델의 훈련과 예측은 Estimator 객체를 통해 수행되며, Estimator에는 각각 fit()(훈련), predict()(예측)을 행하는 메소드가 있음. 모델의 훈련과 예측이 끝나면 이 2가지는 작업을 Pipeline()으로 묶어 검증을 수행. data >> transformer() >> estimator.fit(X,y) >> estimator.predict(X) >> Pi..

알고리즘 선택하기 [내부링크]

어떤 알고리즘을 사용해야 하는가. 데이터의 크기, 품질, 특성 가용 연산(계산) 시간 작업의 긴급성 데이터를 이용해 하고 싶은 것 알고리즘 유형 1. 지도 학습(Supervised learning) 지도 학습 알고리즘은 한 세트의 사례들을(examples) 기반으로 예측을 수행합니다. 예를 들어, 과거 매출 이력(historical sales)을 이용해 미래 가격을 추산할 수 있습니다. 지도 학습에는 기존에 이미 분류된 학습용 데이터(labeled training data)로 구성된 입력 변수와 원하는 출력 변수가 수반되는데요. 알고리즘을 이용해 학습용 데이터를 분석함으로써 입력 변수를 출력 변수와 매핑시키는 함수를 찾을 수 있습니다. 이렇게 추론된 함수는 학습용 데이터로부터 일반화(generalizin..

오차행렬, FP, FN, F-score, Threshold [내부링크]

Accuracy for Classification 의 함정. 1-10까지의 handwriting 다중 분류 모델을 변형하여, label을 3일때만 구분하는 (0,0,1,0,0,0,0,0,0,0) 로 바꾸고 fitting 을 시켜도 accuracy는 0.93이 나온다. 0을 찍어도 accuracy가 잘 나올 수 있다는 이상한 사실. 즉, 불균형한 데이터, unbalanced 데이터, 정답의 분포에 따라 모델의 성능을 잘 평가하지 못할 수 있다. . 그렇기 때문에 분류 문제에서는 정확도 외에 다양한 평가 척도를 사용한다. 오차행렬 (confusion_matrix) from sklearn.metrics import confusion_matrix 코로나의 경우.. 건강하고 음성 (TN) 건강하고 양성 (FP) ..

Batch size, Epoch, Iteration [내부링크]

Total Dataset = 1000개 일 때, 100 X 10 = 1000 Batch size Batches Q'ty = Total Dataset |----------------------------------------------------------| 1 Epoch |___|___|___|___|___|___|___|___|___|___| 10 Iterations Batch는 데이터에 관한 부분. Batch는 10개 나오고, 한 Batch의 Size는 100 이 된다. (Batch = mini batch. 같은 개념) Epoch와 Iteration은 학습에 관한 부분. Iteration은 몇 번 학습 데이터를 받는냐로, Batch 갯수와 같고, 총 Dataset 을 모두 학습할 때 1 epoch 했..

여러가지 머신러닝 모델들 [내부링크]

(1) Dicision Tree (Iris Accuracy : 0.90) 분류, 회귀 모두 가능 한번 분기 때마다 변수 영역을 두 개로 구분하는 모델. 가지 두개로 나눠짐. 정보획득(information gain)의 기준 : 구분 뒤 각 영역의 순도(homogeneity)가 증가, 불순도(impurity), 불확실성(uncertainty)이 최대한 감소방향으로 학습진행 (2) Random Forest (Iris Accuracy : 0.93) Decision Tree를 모아 집단지성의 개념으로 기존 모델의 단점을 보완함. 앙상블 방식(Ensemble method) 랜덤으로 여러 작은 트리를 만들어 각각의 트리에서 나오는 결과를 다수결하여 최종결정 예) 30개의 feature (x값의 갯수 = 컬럼갯수와 같..

Day2. 데이터 전처리 [내부링크]

10.2 null 값 처리하기 결측치(Missing Data) 결측치가 있는 데이터를 제거한다. 결측치를 어떤 값으로 대체한다 특정값 지정 : .fillna() but, 결측치가 많은 경우, 모두 같은 값으로 대체한다면 데이터의 분산이 실제보다 작아지거나 편향되어 문제가 될 수 있음. 평균, 중앙값등으로 대체 : .fillna(df.mean()) 1특정 값으로 대체했을 때와 마찬가지로 결측치가 많은 경우 데이터의 분산이 실제보다 작아지는 문제가 발생할 수 있음. 다른 데이터를 이용해 예측값으로 대체할 수 있습니다. 예를 들어 머신러닝 모델로 2020년 4월 미국의 예측값을 만들고, 이 값으로 결측치를 보완할 수 있습니다. 시계열 특성을 가진 데이터의 경우 앞뒤 데이터를 통해 결측치를 대체할 수 있습니다...

랜덤수 맞추기 [내부링크]

생각의 흐름 뜯어고치기. 나는 어떻게 생각했나. 제일 처음 생각난 건 if xy: else 1. y값 랜덤 뽑는 함수 넣고 (randrange 혹은 randint인지 하기 설명 참조하기) 2. x값 input 받고 3. if문 작성하고 나니 루프가 안돌아간다. 어디서부터 루프가 돌아야하는가. input 부터였다. 루프를 언제까지 돌릴지 알지 못하고, 맞출때까지 돌려야 하기에 while True로 무한루프를 돌리고 그 안에 x값을 input 받고 if문을 넣는다. while의 끝엔 return이 없다. 어디서부터 반복을 돌려야할 지. 그리고 반복의 끝이 없다면 무한루프를 돌릴것을 기억하기.

프로그래머스) 점의 위치 구하기 [내부링크]

이렇게 2층으로 나눠서 생각하는 연습하기. a가 + 일 때, 경우의수 2가지 묶고, b가 - 일 때, 경우의 수 묶고,, 이건 2차 답안. 1. dot이 [1,2] 이렇게 리스트 안의 요소가 2개이면 굳이 인덱스하여 변수를 정해주지 않아도 변수갯수만 맞으면 자기 알아서 변수에 저장한다는 사실과, 2. 2단계로 나누어 생각하기 둘을 곱해 양수면, 둘은 부호가 같다는 뜻이고, 그 중 x가 양수일때, 그렇지 않을때 둘을 곱해 음수면, 둘은 부호가 다르다는 뜻이고, 그 중 x가 음수일때, 그렇지 않을때..

Day1. 데이터, 데이터베이스 [내부링크]

데이터 1. 데이터가 중요한 이유 :우리는 데이터가 넘쳐나는 세상에 살고있다. 지금 이 시대는 데이터가 모든 의사결정에 영향을 주고 있기 때문에 데이터는 날이갈 수록 중요해지는 추세이다. 2. 데이터 분석이란 : 현실세계의 신호>측정하여 데이터로 만듬>분석하여 정보를 얻어내기 위한 과정. 3. 필요능력 : (1) 문해력 : 데이터 해석 능력 (2) 코딩 : 컴퓨터와의 커뮤니케이션 수단 데이터 사이언스 데이터 분석을 통한 미래예측을 하는 것. 문제정의 > 데이터수집 > 전처리 > 분석 > 모델링 > 결과해석 및 시각화

EDA (Explratory Data Analysis) [내부링크]

1. lib import import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns 2. 데이터 불러오기 data = pd.read_csv('이름', low_memory = False) 3. 데이터 null값 처리 data.info() : null값과 자료형 보여줌 data.isnull().sum() : null값이 column별로 몇개인지 보여줌. data["컬럼명"].replace("카테고리명", "0") : 해당 컬럼의 해당카테고리명인 데이터를 모두 0으로 바꿔줌 4. 데이터 분석 data.head() data.tail() data.columns : 전체 컬럼명 data.describe() :..

Matplotlib [내부링크]

STEP 1. 막대(Bar) 그래프 import matplotlib.pyplot as plt %matplotlib inline # 그래프 데이터 subject = ['English', 'Math', 'Korean', 'Science', 'Computer'] points = [40, 90, 50, 60, 100] # 축 그리기 fig = plt.figure() ax1 = fig.add_subplot(1,1,1) # 그래프 그리기 ax1.bar(subject, points) # 라벨, 타이틀 달기 plt.xlabel('Subject') plt.ylabel('Points') plt.title("Yuna's Test Result") # 보여주기 plt.savefig('./barplot.png') # 그래프를 이..

프로그래머스) 배열 원소의 길이, 짝수 홀수 개수 [내부링크]

배열 원소의 길이 내답안 다른사람 답안 빈 리스트를 만들어서 for문을 돌려서 해당하는 i를 빈리스트에 append 하는 일 따위.. 이제 하지말자. 이정도는 [ ] 빈리스트 안에다가 [ for i in 해당리스트] 해당리스트를 바로 for문 돌려서 [i for in 리스트] for 문에 앞에 i를 써서 바로 이 리스트에 i가 들어간다고 명시하자 이렇게 하면 코드가 한줄에 끝난다.. 짝수홀수개수 내답안 2차 답안

막강한 클래스(Class) 2 [내부링크]

클래스 속성 클래스이름.클래스변수로 사용 클래스에 속해있으며 모든 인스턴스에서 공유 인스턴스 전체가 사용해야 하는 값을 저장할 때 사용 인스턴스 속성 생성자(__init__)에서 self.속성에 할당했던 변수들은 모두 인스턴스 속성에 해당 인스턴스별로 별개. 서로 영향을 받지 않음 각 인스턴스가 값을 따로 저장해야 할 때 사용 각각의 def 들은 모두 인스턴스 속성 정적메소드 속성 클래스 메서드는 정적 메서드처럼 인스턴스 없이 호출가능. # 정적메소드 쓰기 전 class Person(): def __init__(self): # self 필요 self.hello='hi' # self 필요 print(self.hello) # self 필요 time.sleep(3) def greeting(self,name,a..

Pandas, NumPy [내부링크]

Dictionary : {키 : 값} 키, 값 둘 다 정보를 바꿀 수는 있지만 인덱스를 먹일 수 없음. Series : {인덱스 : 값} 둘 다 변경 가능하고, 인덱스가 키값처럼 정보를 담을 수도 있지만, 정리가 깔끔하지 않음 DataFrame : index 와 column으로 그 제목을 따로하며 수정가능하고, 그 안에 값들을 담음. 정리된 데이터셋 정보 확인 df = pd. read_csv(csv_path or file name) : 불러오기 df.columns : column 이름들이 list로 나옴 df.dtypes : 데이터 개별 값의 자료 형태 (int, str, object 등등),카테고리가 아닌 데이터는 꼭 해보기 df.info() : 자료형과 null 있는지 보여줌 df.describe()..

기본수학, numpy [내부링크]

기본 수학 import numpy as np import statistics as st a = [9, 3, 5, 2, 7, 2, 6, 6, 7, 7, 8, 8, 10] 합계 : fsum(a) 평균 : np.mean(a) / st.mean(a) / np.average(a) ; weight 줄 수 있는 가중평균 중앙값: np.median(a) / st.median(a) n이 홀수 : n/2을 반올림한 순서의 값 n이 짝수 : n/2번째 값과 ((n/2) + 1) 번째 값 배열이 짝수일 때, 낮은 중앙값 : median_low , 높은 중앙값 : median_high 최빈값 : np.bincount(a).argmax() / st.mode(a) 가장 빈도수가 많은 값. 가장 많이 나오는 값 : 7 np.binc..

게임 캐릭터 클래스 만들기 [내부링크]

표준 입력으로 게임 캐릭터 능력치(체력, 마나, AP)가 입력됩니다. 다음 소스 코드에서 애니(Annie) 클래스를 작성하여 티버(tibbers) 스킬의 피해량이 출력되게 만드세요. 티버의 피해량은 AP * 0.65 + 400이며 AP(Ability Power, 주문력)는 마법 능력치를 뜻합니다. 예입력 511.68 334.0 298 결과 티버: 피해량 593.7 헷갈렸던 부분들 1. __init__에서 attribute 준 인자들을 다른 function에서 또 줘야하는가. 예를 들어 def tibbers(self) 후, 이 함수에서 사용될 ability_power에 대해 또 self.ability_power=self.ability_power라고 해줘야 하나.. 했는데 결과적으로 안해줘도 된다. 2. 이..

막강한 클래스 (Class) [내부링크]

Everything in Python is an object, and almost everything has attributes and methods. 파이썬(Python)에서 모든 것은 객체(object)다. 그래서 거의 모두가 속성(attributes) 과 메서드(methods) 를 갖는다. 객체(Object) 안에서, 변수(Variable)를 만들면 속성(Attribute; State)이 되고, mycat = 'kola' 함수(Function)를 만들면 메서드가(Method; Behavior) 된다. def genius(self, speed, lr): , mycat 변수는 단지 이름이다. 단지 = 이라는 연산자를 이용해 값을 할당받은 객체를 불러주는 second name이다. A shallow co..

Unit 31. 재귀호출 (recursive call) [내부링크]

재귀호출 함수 나 자신 안에 나를 또 호출하는 방법. 그럼 또 함수가 돌아가고 또 그 함수가 돌아가고 무한 loop. 다행히 파이썬은 1000번까지 반복이 가능해서 멈추기는 하지만, 꼭 빠져나오는 코드를 작성해줘야 함. 언제쓸까? 어떤 연산을 한 그 값으로 또 같은 연산을 해야할 때가 있다. 그 때 사용하면 된다. 어떻게쓸까? 먼저 제일 마지막에 빠져나올때의 조건문부터 작성하고, 그 뒤에 변환식을 넣어주자. n (차수) 의 변화가 어떻게 되는지를 잘 살필 것. def hello(count): if count == 0: # 종료 조건을 만듦. count가 0이면 다시 hello 함수를 호출하지 않고 끝냄 return print('Hello, world!', count) count -= 1 # count를 ..

Unit 29. 함수의 return [내부링크]

참고 | 매개변수는 없고 반환값만 있는 함수 함수를 만들 때 매개변수는 없지만 값만 반환하는 함수를 만들 수도 있습니다. 다음은 매개변수 없이 1만 반환합니다. >>> def one(): ... return 1 ... >>> x = one() >>> x 1 참고 | return으로 함수 중간에서 빠져나오기 return은 값을 반환하는 기능뿐만 아니라 함수 중간에서 바로 빠져나오는 기능도 있습니다. 다음은 매개변수 a가 10이면 함수를 그냥 빠져나옵니다. >>> def not_ten(a): ... if a == 10: ... return ... print(a, '입니다.', sep='') ... >>> not_ten(5) 5입니다. >>> not_ten(10) >>> not_ten 함수에 5를 넣으면 pr..

참고) zip( ) 함수 [내부링크]

zip 여러개의 iterable 객체 (like. list, tuple, dic..) 을 객체로 받으면서, 각 객체가 담고 있는 원소를 차례로 접근할 수 있는 능력자 iterator. 원래는 이렇게 for문을 두 리스트에 돌리겠지만, >>> numbers = [1, 2, 3] >>> letters = ["A", "B", "C"] >>> for i in range(3): ... pair = (numbers[i], letters[i]) ... print(pair) ... (1, 'A') (2, 'B') (3, 'C') zip을 사용하면, >>> for i in range(3): ... pair = (numbers[i], letters[i]) 이렇게 두 줄이 >>> for pair in zip(numbers,..

Unit30. *args / **kwargs (가변인자; Variadic Parameters) [내부링크]

인자 Argument에는 두 종류가 있다. 그리고 항상 함수를 실행시키는 인자를 줄 때에는, positional은 필수조건이므로 무조건 줘야 하고, 앞에 줘야하고, keyword는 필수가 아니므로 안주면 생략가능하고, positional갯수를 채운 뒤에 줘야한다. Positional arguments : 정해지는 인자 ; first, second Keyword arguments : 키워드로 잡는 인자 ; third, fourth 코드로 보면, def save_ranking(first, second, third=None, fourth=None): .... save_ranking('Alice', 'Bella', 'Mike', fourth = 'Daniel') 이렇게 될 때, Positinal 두개 다 채워서..

참고) map + lambda [내부링크]

lambda (원래모습 : 바뀐모습) print( (lambda x,y: x + y)(10, 20) ) 인자까지 한꺼번에 줄 수있음 map (def명, 넣을것) 순회가능한 데이터를 저 함수에 넣어 ouput을 도출하겠다. 는 뜻. map(변환 함수, 순회 가능한 데이터) map은 꼭 list로 변환해줘야 값을 볼 수 있음. def list_mul(x): return x * 2 result = list(map(list_mul, [1, 2, 3])) print(result) lambda + map map이 lambda 식 자체를 인수로 가짐. i 를 i*2로 바꿀꺼고 (lambda), [1,2,3]을 i로 돌릴꺼야 (map) result = list(map(lambda i: i * 2 , [1, 2, 3])..

참고) iterable, iterator 차이점 [내부링크]

iterable : 순환 가능한. 그냥 가능하다는 능력치. 나는 수학을 잘한다. 이런거. iterator : 순환가능자. 그 능력치를 컨트롤하는자. 수학선생님. 선생님은 수학을 당연히 잘한다. iterator는 당연히 iterable 하다. 지도 편달하는 코드가 들어간다. 학생이 수학을 잘해도 지도편달은 어려울 수 있따. iterable하다고 iterator는 아니다. 참고 : https://velog.io/@clueless_coder/%ED%8C%8C%EC%9D%B4%EC%8D%AC-iterable%EA%B3%BC-iterator-%EC%9D%98-%EC%B0%A8%EC%9D%B4%EA%B0%80-%EB%AD%90%EC%98%88%EC%9A%94 [파이썬] iterable과 iterator 의 차이가 ..

참고) 최댓값, 최솟값 (함수에서 return 잘 활용하는법) [내부링크]

list_data = [30, 20, 30, 40] def minmax_function(x_list): # 1번 함수에 최솟값, 최댓값 함수를 품는다. def inner_min_function(x): # 1-1 최솟값 length = len(x) min_result = x[0] for i in range(length): if min_result > x[i]: min_result = x[i] return min_result # "인덱스별" 최솟값 리턴받음. 계속 갱신하게되고 제일 마지막값남음. def inner_max_function(x): # 1-2 최댓값 length = len(x) max_result = x[0] for i in range(length): if max_result < x[i]: max..

참고) Enumerate/Yield/Generator/Try/Accept/Multiprocessing [내부링크]

Enumerate for문에서 인덱스도 같이 출력할 때. for i, value in enumerate(리스트명) my_list = ['a','b','c','d'] for i, value in enumerate(my_list): print("순번 : ", i, " , 값 : ", value) Generator, yield yield를 쓰면 generator로 연결된다. generator는 lazy iterator. 반복문을 출력할 때에도 주르륵 출력하는 것이 아니라, 하나 출력하고 쉬고, 하나 출력하고 쉬고. 데이터가 많을 때 메모리 사용이 효율적이어서 자주 사용하는 파이썬의 기능. 참고 사이트 : https://www.daleseo.com/python-yield/ 파이썬의 yield 키워드와 제너레이터..

AI에게 필수과목이 필요하지 않을까. [내부링크]

사람이 사람다워야 사람이다. 그렇다면, AI도 AI다워야 AI겠지? 내가 생각하는 AI의 제 1 강령. AI는 사람에게 이로워야 한다.. ㅠㅠ 제발 ㅠㅠ --- 사람과 AI가 가장 다른점이 무엇일까. 아니 사람이 달라하야 하는 이유는 무엇인가. 사람이 사람답다는 의미가 어떤 의미인가. 우리는 가정교육을 받는다. 물론 어려운 가정도 있겠지만, 가정에서 되지 않는 부분은 학교에서, 사회에서 받고있다. 능력을 배우기보다는 소위말하는 도덕적관념을 학습한다. 양심, 배려, 협동, 선과악, 예절, 그리고 종교와 사랑. 이런것들을 베이스로 학습시킨 후에 능력을 학습해야하지 않을까. 똑똑한 범죄자 하나를 잡으려면 한나라 전체 경찰들이 다 동원되어야 한다. 그 사실에 더 무서운 방법으로 발전하는 범죄 수법들을 우리는 매..

프로그래머스) 배열의 평균값, 중복된 숫자갯수, 피자나눠먹기 [내부링크]

내 답안 평균구하는거,, 예전에 엄청 힘들게 했던거 같은데 잘풀려서 너무 좋다.. import math를 해와서, 올림은 .ceil() 버림은 .floor() 반올림은.round()

프로그래머스) 머쓱이네 양꼬치 [내부링크]

답안 잘 실행되는데,, 프로그래머스에서 안넘어간다. 여튼 머쓱이는 이렇게 양꼬치를 먹었네.

Unit 26. 세트(set) [내부링크]

Set : 집합 합집합, 교집합, 차집합등의 연산을 가능케 하는 집합으로 {값1,값2,값3} 이런식ㅇ로 이루어져 있음. 출력을 할 때에는 randomly하게 출력하기 때문에, index를 지정하여 출력이 불가하고, 집합안에 중복된 것은 알아서 하나만 출력. 딕셔너리와 형태 주의하여 쓰기 >>> c = {} # 이렇게 빈 중괄호를 치면, 빈 딕셔너리가 됨. >>> type(c) >>> c = set() # 꼭 이렇게 set()이라고 지정해야 세트가됨. >>> type(c) set.union(세트1, 세트2) : 합집합 {1,2,3,4,5,6} 논리연산자 and와 같은 원리 set.intersection(세트1,세트2) : 교집합 {3,4} set.difference(세트1, 세트2) : 대칭차집합 {1,2..

조별학습) 평균구하기 (딕셔너리) [내부링크]

내코드 타입에 걸려서 추출이 안될때에는 for문으로 꺼내와서 리스트에 넣기. ilst는 numpy.mean으로 평균이 구해짐.

UNIT 25. 딕셔너리 응용 [내부링크]

1. 기본 1) 추가 .'딕셔너리명'.update(키=값) : 키가 문자열일때만! 딕셔나리 안의 키의 값을 수정하는 것. 만약 그 키 값이 없으면 자동으로 { } 안에 추가됨. .update(a=200, b=300) : 여러가지 값을 한꺼번에 업데이트 .update(딕셔너리) : 키가 문자열이 아니어서 바로 키=값을 못한다면, a = {1:'일',2:'이'} 이렇게 a 딕셔너리를 추가함. .update(리스트 or 튜플) : 리스트는 [[키1, 값1], [키2, 값2]] 형식으로 키와 값을 리스트로 만들고 이 리스트를 다시 리스트 안에 넣어서 키-값 쌍을 나열 .update(반복가능한객체) : 딕셔너리에 for문으로 키와 값을 더하고 싶을때 쓸 수 있을 것 같음. (zip([1,2],['one','two..

오답노트) 간단명료 코드 만들기 [내부링크]

1. 가장 뒤에 있는 파일명만 프린트하기 path = 'C:\\Users\\dojang\\AppData\\Local\\Programs\\Python\\Python36-32\\python.exe' filename = path.split('\\') print(filename[-1]) >>> filename = path[path.rfind('\\') + 1:]

조별학습) 구구단 만들기 [내부링크]

내답안 조원들 답안 count, %d , % 사용 print(f' ') .format 사용 format 복습 '{인덱스}' .format(값) : { } 이 위치에 format 뒤의 데이터의 인덱스 값을 넣어줘. ' Let me see.. {1} {2} {0}?'. format('me', 'You', 'love') 그래서 print('{0} x {1} = ', format(i,j), i*j) '{0} x {1} = ' . format(i,j) 까지 한뭉텅이로, format 뒤에 (i,j) 인수를 넣어줌

참고) 함수에 대하여. [내부링크]

매개변수(parameter), 인자(argument), 요소(element) 의 차이점 def shopping_list(date): print(date + '의 구매목록') print(['벤츠 2대','람보르기니 1대','강남빌딩 2개']) shopping_list('1월 23일') 만약 이렇게 shopping list라는 함수를 선언한다고 가정했을 때, 매개변수 (parameter) :입력값의 자리에 들어오는 함수 내부의 'date' 인자(argument) : 외부에서 이 함수를 불러주기 위해 넣어주는 '1월 23일' 요소(element) : 리스트 안의 여러값 중 하나의 값, '벤츠 2대' 하하.. 이렇게 작성하는 날이 올꺼야! 스코프(scope) 특정 위치에서 어떤 변수에 접근할 수 있는지, 또 한..

프로그래머스) 각도기 [내부링크]

내답안 처음에 print (1) 이렇게 넣었었는데, 결과값은 맞지만 오류가 났다. 웹에서 검색해보니 파이썬은 아니지만 return으로 푸신분이 계셔서 그렇게 해봤더니 맞다고 나왔다. 다른분 답안 if angle

프로그래머스) 나이 출력 [내부링크]

내답안 다른사람들은 아예 2023에서 age를 뺴고 +1을 하지 않은 경우도 있었다.

프로그래머스) 몫 구하기 (클래스문법 업데이트하기) [내부링크]

내답안 / 는 float값을 가질 수 있다는 것 주의하기. 그래서 data type을 int로 지정해줬다. 다른사람 답안을 보고있자니 // 가 생각났다. //는 나머지를 버리고 무조건 int로 반환한다. 그래서 다시한번 해봤다. 다른사람의 답안 이게 머선코드냐구.. __ 이거는 클래스 했을때 잠깐 본 거 같은데, 일단 클래스문법은 복잡하니 다음주중에 배울때 다시 업데이트 하기로 하고, floordiv는 찾아봤더니, self // value라고 한다. 그럼 지정해주지 않았는데도, num1을 self로 인식하고, num2를 value로 인식한다는 뜻인가? 희한하네,, 뭔가 고오급진 이 코드.. 숙제 시간이 얼마없으니 다음에 업데이트 꼭 하기.

프로그래머스) 나머지 구하기 [내부링크]

내답안 이번에도 lambda 쓰기 lambda 좋다. 한줄에 끝나고. 뭔가 코드가 짧아질수록 고오급진 느낌이 든다 ㅋㅋ 다른사람답안 은 패쓰! 왜냐면 lambda가 제일 짧기때문..

프로그래머스) 두 수의 곱 [내부링크]

내답안 방금 배운 lambda 응용했음. 후후 다른사람 답안 다른사람들은 대부분 def 를 썼는데,, 이부분은 패쓰!

프로그래머스) 숫자 비교하기 [내부링크]

내답안 답은 잘 나왔는데, 오류가 떠서,, 왜그럴까나? answer 변수를 살리니 성공 다른사람답안 return하세요 1을. 만약 num1과 num2가 같다면. 그렇지 않으면 -1 return 1 if num1==num2 else= -1 콜론 없고, 괄호도 없다는 것 유의하기.

프로그래머스) 두 수의 차 [내부링크]

1. 두 수의 차 내 답안 다른사람 답안 lambda를 써서 세 줄 코드를 한 줄에 끝냈다. 그 와중에 댓글 ㅋㅋㅋ 좀치네 ㅋ 부럽 ㅋㅋ lambda 문법은 lambda a : b (a를 b로 변환하겠다) def 에 대한 정의와 요소 선언을 한 줄에 끝내다니.. 필사해보기 solution = lambda num1, num2 : num1 - num2 lambda 뒤에는 괄호쓰지 않는데, 자꾸 습관적으로 괄호를 쓰고 있음.. 고치기

Unit24. 문자열 함수, 포매팅, format함수, %d [내부링크]

1. 바꾸기 replace('바꿀문자열', '새문자열') : 단어 >> 문자열 바꾸기 str.maketrans('바꿀문자', '새문자') : 단어안의 스펠링 >> 문자열 바꾸기 .translate(변수명) : 번역. 즉 apply .upper() : 문자열을 모두 대문자로 바꿈 .lower() : 문자열을 모두 소문자로 바꿈 2. 분리하고 합체하기 .split('기준문자열') : 기준문자열을 기준으로 스트링을 분리함. '구분자'.join(리스트) : 구분자를 리스트사이에 끼워서 하나의 스트링으로 만듬 3. 삭제 .strip('삭제할것') : 왼(lstrip),오(rstrip),양쪽 다 됨 4. 정렬 .ljust(숫자) : 왼,오(rjust) 다됨. 숫자만큼 문자열의 길이를 만들어 놓고, 정렬함. .cen..

참고) Stack & Queue [내부링크]

이 둘은 ADT로써 실물이 존재하지 않는 "상상속의 구조"이다. ADT (Abstract Data Type) : 추상적 자료구조 자료구조의 방법이 코드로 정의되지 않고 그 구조의 행동양식으로만 규정됨. array + 규칙. 서로 규칙이 다름. 1. Stack (팬케이크 무더기) Last In, First Out. stack은 무더기라는 뜻이다. 1,2,3,4,5 array를 90도로 눕여서 1을 가장 아래, 5를 가장 위로 놓는다. 가장 따끈한 팬케이크가 제일 위에 쌓이고 (Last in), 제일 빨리 먹히는 것 처럼(First out) 5번만 읽고, 삭제가능. e.g. 뒤로가기, ctr+z, 2. Queue (맛집에 줄선 사람들) First in, First Out. stack과 달리 90도 뒤집지 않..

Fund 4. Github에 Git Push 하기 (Git & Github의 차이점) [내부링크]

Git & GitHub Git : 소스코드 버전 관리 시스템 ; 개발을 진행하며 작성하는 소스 코드가 업데이트 되는 버전을 기록해두고 관리함.\ 더 쉽게 이해한 바로는 ,, 로컬(내컴터) 버전관리 툴. GitHub : 온라인 서비스 : Git으로 관리하는 프로젝트를 불러오고(hosting), 협업할 수 있게 해주는 서비스. 협업가능한 웹사이트 Git은 리눅스의 창시자 리누스 토를발즈가 만든 오픈소스 툴이다. 전세계 사람들이 동시다발적으로 리눅스를 함께 개발하고 관리하다 보니, 여러 개발자가 짠 코드를 한번에 합치고, 버전도 나눠야 했다. 그래서 리눅스 프로젝트의 코드 버전을 관리하기 위한 소프트웨어를 짰고, 그것이 Git이다. GitHub는 이런 Git을 더 잘 쓰게 도와주는 온라인 서비스다. Git을 ..

참고) Scalar, Vector, Matrix, Tensor [내부링크]

1. Scala : 단일 숫자 / 0차 텐서 / 소문자 normal n : 양의 정수 집합 (1,2,3..) z : 양,음수와 0의 집합 (...,-2,-1,0,1,2,...) q : 유리수 (z + 분수) 값 (Value)을 나타냄 2. Vector : Scala의 배열 / ordered arrays / 1차 텐서 / 소문자 Bold Scala는 값 1개만 나타낸다면, Vector는 크기와 방향, 속도와 거리, 속도와 속도차, 텍스트에서 단어간의 연관성, 이미지에서의 픽셀 집적도 (intensity) 등을 인코딩할 수 있게 함. 머신러닝에서는 feature vector라고 표현되기도 함. (Which are their individual components specifying how important ..

Unit 20. FizzBuzz [내부링크]

Practice 1. 1에서 100까지 출력 3의 배수는 Fizz 출력 5의 배수는 Buzz 출력 3과 5의 공배수는 FizzBuzz 출력 My answer 1 숫자 대신 fizz와 buzz를 출력했어야 했다. Answer 2 Practice 2. 3과 5의 공배수 Answer 혹은, if i % 15 == 0: 이렇게 15로 나눴을때 나머지가 없는 값을 줘도 됨. 코드 줄이기 문자열 * 1 = True , 문자열 * 0 = False 라는 특징을 이용한 것. 중간에 +를 넣으면 공배수에 FizzBuzz라고 출력가능 Practice 3. 2과 11의 배수, 공배수 처리하기 다음 소스 코드를 완성하여 1부터 100까지의 숫자를 출력하면서 2의 배수일 때는 'Fizz', 11의 배수일 때는 'Buzz', 2..

Unit 22. 2차원 리스트 [내부링크]

1. 기본문법 요소 추출 : 리스트[세로인덱스][가로인덱스] 요소 값 할당 : 리스트[세로인덱스][가로인덱스] = 값 >>> a = [[10, 20], [30, 40], [50, 60]] >>> a[2][1] # 출력 : 세로 인덱스 2, 가로 인덱스 0인 요소 60 >>> a[0][1] = 1000 # 값 할당 : 세로 인덱스 0, 가로 인덱스 1인 요소에 >>> a[0][1] 1000 2차원 리스트와 튜플 수정 가능여부 a = ((10, 20), (30, 40), (50, 60)) # 튜플 안에 튜플을 넣은 2차원 튜플 b = ([10, 20], [30, 40], [50, 60]) # 튜플 안에 리스트를 넣음 c = [(10, 20), (30, 40), (50, 60)] # 리스트 안에 튜플을 넣음 ..

Unit 22. List 와 Tuple / 리스트표현식(list comprehension) [내부링크]

List [ ] : mutable sequence type (변경할 수 있는 시퀀스 자료형) Tuple ( ) : immutable sequence type (변경할 수 없는 시퀀스 자료형) method (method = 함수) 1. 기본내용 Add (list만 가능) append(요소) : element 한 개 or list 하나씩 중첩으로. 꼭 하나씩 추가 가능 extend([리스트]) : list + list = 1개의 list 로 가능. append로 일일이 못할때 유용 insert(인덱스번호,요소) : 특정인덱스에 요소 하나를 추가 insert(0, 요소): 리스트의 맨 처음에 요소를 추가 insert(len(리스트), 요소): 리스트 끝에 요소를 추가 슬라이스로도 추가가능 : 리스트 끝에 하나..

Unit 19. Star tree ; 중첩 loop [내부링크]

Star tree output * ** *** **** ***** input 1 - ok 하지만 중첩 루프를 쓰지 않은 결과라 업데이트가 필요. input 1-1 별갯수가 j와 같게 하면 j가 1일때 별이 한개만 나올꺼라고 생각했는데, ----> 방향으로 j의 갯수만큼 별이 다 채워져버렸다. input 1-2 옆방향의 별의 갯수가 i의 갯수와 같아서 이렇게 넣었는데, 트리가 옆으로 4개나 나왔다. 옆으로 나오는 횟수를 i만큼으로 줄여야 할 것 같은데,, input 1-3 옆으로가 줄어들긴 했다. 딱 i만큼으로 줄었다. 생각이 잘못되었나보다. 횟수가 i만큼이 아니라 1만큼이어야 한다. input 1-4 Blank를 줄여야한다. input 1-5 Answer if j

Fund 3. Terminal(Linux OS), Hardware [내부링크]

Computer Hardware 반도체의 제작과정을 너무 잘 보여줘서 링크! : https://www.youtube.com/watch?v=6-tKOHICqrI&t=4s CPU(Central Processing Unit, 중앙처리장치 : 반도체인 실리콘 웨이퍼 위에 집적회로(Integrated Circuits, IC)를 포토리소그래피(photolithography) 공정을 통해 회로를 인쇄해 만듬 기계어 : CPU칩이 처리할 수 있는 명령어 Compile : 우리가 쓰는 프로그래밍 언어(C, C++, Python)를 기계어로 바꿔주는 것. 제조사 : 삼성(Exynos등), 애플(A,M시리즈등), 퀄컴 등.. 구분 : 32bit, 64bit : CPU가 한번에 읽고 쓸 수 있는 데이터의 크기. 프로세스 할당..

11/24 블로그의 시작 [내부링크]

나는 개발자가 되어야했다. 중국에 있으며 내가 본 세상은 숨이 가빴다. 발에 치이는게 IT 기업들이었고, 하루가 다르게 새로운 서비스가 나왔다 들어갔다. IT 강국이라는 우리나라는 글로벌 기업으로 삼성을 외치지만 우린 정말.. 정말 삼성밖에 없어보였다. 삼성은 대단한 기업이고, 나 또한 삼성이 자랑스럽지만 우리나라는 중국이 기업에게 해주는 만큼의 서포트가 불가했다. 다행인건, 중국은 자본이 커도 기술력은 한국이 월등하다. 어떤 제품이든 그렇다. 하지만 머릿수가 부족하다. 그것도 턱없이.. 천재는 하늘이 내린다지만, 확률적으로 중국에 천재가 더 많을 듯 하지 않은가. 중국의 IT 공룡이라는 알리바바와 텐센트를 직접 써보며 이렇게는 안되는데,, 네이버 써야 되는데, 카톡 써야 되는데.. 이마저도 vpn을 켜..