본문 바로가기
728x90

전체 글143

문자열다루기, 정규표현식 인코딩과 유니코드 인코딩 (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.. 2022. 12. 8.
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.. 2022. 12. 7.
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.. 2022. 12. 7.
알고리즘 선택하기 어떤 알고리즘을 사용해야 하는가. 데이터의 크기, 품질, 특성 가용 연산(계산) 시간 작업의 긴급성 데이터를 이용해 하고 싶은 것 알고리즘 유형 1. 지도 학습(Supervised learning) 지도 학습 알고리즘은 한 세트의 사례들을(examples) 기반으로 예측을 수행합니다. 예를 들어, 과거 매출 이력(historical sales)을 이용해 미래 가격을 추산할 수 있습니다. 지도 학습에는 기존에 이미 분류된 학습용 데이터(labeled training data)로 구성된 입력 변수와 원하는 출력 변수가 수반되는데요. 알고리즘을 이용해 학습용 데이터를 분석함으로써 입력 변수를 출력 변수와 매핑시키는 함수를 찾을 수 있습니다. 이렇게 추론된 함수는 학습용 데이터로부터 일반화(generalizin.. 2022. 12. 7.
오차행렬, 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) .. 2022. 12. 7.
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 했.. 2022. 12. 6.
여러가지 머신러닝 모델들 (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값의 갯수 = 컬럼갯수와 같.. 2022. 12. 6.
Day2. 데이터 전처리 10.2 null 값 처리하기 결측치(Missing Data) 결측치가 있는 데이터를 제거한다. 결측치를 어떤 값으로 대체한다 특정값 지정 : .fillna() but, 결측치가 많은 경우, 모두 같은 값으로 대체한다면 데이터의 분산이 실제보다 작아지거나 편향되어 문제가 될 수 있음. 평균, 중앙값등으로 대체 : .fillna(df.mean()) 1특정 값으로 대체했을 때와 마찬가지로 결측치가 많은 경우 데이터의 분산이 실제보다 작아지는 문제가 발생할 수 있음. 다른 데이터를 이용해 예측값으로 대체할 수 있습니다. 예를 들어 머신러닝 모델로 2020년 4월 미국의 예측값을 만들고, 이 값으로 결측치를 보완할 수 있습니다. 시계열 특성을 가진 데이터의 경우 앞뒤 데이터를 통해 결측치를 대체할 수 있습니다... 2022. 12. 5.
랜덤수 맞추기 생각의 흐름 뜯어고치기. 나는 어떻게 생각했나. 제일 처음 생각난 건 if xy: else 1. y값 랜덤 뽑는 함수 넣고 (randrange 혹은 randint인지 하기 설명 참조하기) 2. x값 input 받고 3. if문 작성하고 나니 루프가 안돌아간다. 어디서부터 루프가 돌아야하는가. input 부터였다. 루프를 언제까지 돌릴지 알지 못하고, 맞출때까지 돌려야 하기에 while True로 무한루프를 돌리고 그 안에 x값을 input 받고 if문을 넣는다. while의 끝엔 return이 없다. 어디서부터 반복을 돌려야할 지. 그리고 반복의 끝이 없다면 무한루프를 돌릴것을 기억하기. 2022. 12. 4.
프로그래머스) 점의 위치 구하기 이렇게 2층으로 나눠서 생각하는 연습하기. a가 + 일 때, 경우의수 2가지 묶고, b가 - 일 때, 경우의 수 묶고,, 이건 2차 답안. 1. dot이 [1,2] 이렇게 리스트 안의 요소가 2개이면 굳이 인덱스하여 변수를 정해주지 않아도 변수갯수만 맞으면 자기 알아서 변수에 저장한다는 사실과, 2. 2단계로 나누어 생각하기 둘을 곱해 양수면, 둘은 부호가 같다는 뜻이고, 그 중 x가 양수일때, 그렇지 않을때 둘을 곱해 음수면, 둘은 부호가 다르다는 뜻이고, 그 중 x가 음수일때, 그렇지 않을때.. 2022. 12. 4.
Day1. 데이터, 데이터베이스 데이터 1. 데이터가 중요한 이유 :우리는 데이터가 넘쳐나는 세상에 살고있다. 지금 이 시대는 데이터가 모든 의사결정에 영향을 주고 있기 때문에 데이터는 날이갈 수록 중요해지는 추세이다. 2. 데이터 분석이란 : 현실세계의 신호>측정하여 데이터로 만듬>분석하여 정보를 얻어내기 위한 과정. 3. 필요능력 : (1) 문해력 : 데이터 해석 능력 (2) 코딩 : 컴퓨터와의 커뮤니케이션 수단 데이터 사이언스 데이터 분석을 통한 미래예측을 하는 것. 문제정의 > 데이터수집 > 전처리 > 분석 > 모델링 > 결과해석 및 시각화 2022. 12. 4.
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() :.. 2022. 12. 2.
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') # 그래프를 이.. 2022. 12. 2.
프로그래머스) 배열 원소의 길이, 짝수 홀수 개수 배열 원소의 길이 내답안 다른사람 답안 빈 리스트를 만들어서 for문을 돌려서 해당하는 i를 빈리스트에 append 하는 일 따위.. 이제 하지말자. 이정도는 [ ] 빈리스트 안에다가 [ for i in 해당리스트] 해당리스트를 바로 for문 돌려서 [i for in 리스트] for 문에 앞에 i를 써서 바로 이 리스트에 i가 들어간다고 명시하자 이렇게 하면 코드가 한줄에 끝난다.. 짝수홀수개수 내답안 2차 답안 2022. 12. 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.. 2022. 12. 2.
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().. 2022. 12. 1.
기본수학, 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.. 2022. 12. 1.
게임 캐릭터 클래스 만들기 표준 입력으로 게임 캐릭터 능력치(체력, 마나, 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. 이.. 2022. 11. 30.
막강한 클래스 (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.. 2022. 11. 30.
Unit 31. 재귀호출 (recursive call) 재귀호출 함수 나 자신 안에 나를 또 호출하는 방법. 그럼 또 함수가 돌아가고 또 그 함수가 돌아가고 무한 loop. 다행히 파이썬은 1000번까지 반복이 가능해서 멈추기는 하지만, 꼭 빠져나오는 코드를 작성해줘야 함. 언제쓸까? 어떤 연산을 한 그 값으로 또 같은 연산을 해야할 때가 있다. 그 때 사용하면 된다. 어떻게쓸까? 먼저 제일 마지막에 빠져나올때의 조건문부터 작성하고, 그 뒤에 변환식을 넣어주자. n (차수) 의 변화가 어떻게 되는지를 잘 살필 것. def hello(count): if count == 0: # 종료 조건을 만듦. count가 0이면 다시 hello 함수를 호출하지 않고 끝냄 return print('Hello, world!', count) count -= 1 # count를 .. 2022. 11. 29.
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.. 2022. 11. 29.
참고) 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,.. 2022. 11. 29.
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 두개 다 채워서.. 2022. 11. 29.
참고) 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]).. 2022. 11. 29.
참고) 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 의 차이가 .. 2022. 11. 29.
참고) 최댓값, 최솟값 (함수에서 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.. 2022. 11. 29.
참고) 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 키워드와 제너레이터.. 2022. 11. 29.
AI에게 필수과목이 필요하지 않을까. 사람이 사람다워야 사람이다. 그렇다면, AI도 AI다워야 AI겠지? 내가 생각하는 AI의 제 1 강령. AI는 사람에게 이로워야 한다.. ㅠㅠ 제발 ㅠㅠ --- 사람과 AI가 가장 다른점이 무엇일까. 아니 사람이 달라하야 하는 이유는 무엇인가. 사람이 사람답다는 의미가 어떤 의미인가. 우리는 가정교육을 받는다. 물론 어려운 가정도 있겠지만, 가정에서 되지 않는 부분은 학교에서, 사회에서 받고있다. 능력을 배우기보다는 소위말하는 도덕적관념을 학습한다. 양심, 배려, 협동, 선과악, 예절, 그리고 종교와 사랑. 이런것들을 베이스로 학습시킨 후에 능력을 학습해야하지 않을까. 똑똑한 범죄자 하나를 잡으려면 한나라 전체 경찰들이 다 동원되어야 한다. 그 사실에 더 무서운 방법으로 발전하는 범죄 수법들을 우리는 매.. 2022. 11. 29.
프로그래머스) 배열의 평균값, 중복된 숫자갯수, 피자나눠먹기 내 답안 평균구하는거,, 예전에 엄청 힘들게 했던거 같은데 잘풀려서 너무 좋다.. import math를 해와서, 올림은 .ceil() 버림은 .floor() 반올림은.round() 2022. 11. 28.
프로그래머스) 머쓱이네 양꼬치 답안 잘 실행되는데,, 프로그래머스에서 안넘어간다. 여튼 머쓱이는 이렇게 양꼬치를 먹었네. 2022. 11. 28.
728x90