본문 바로가기

Python52

[Python] 오분류표 Confusion Matrix :: 분류(Classification) 모형 평가 오분류표(confusion matrix) from sklearn.metrics import confusion_matrix, classification_report, accuracy_score y_pred = y_pred = model.predict(X_test) # 분류결과표 - 정답 : 행 / 예측 : 열 confusion_matrix(y_pred, y_test) # 오분류표 classification_report(y_pred, y_test) # 분류정확도 accuracy_score(y_pred, y_test) - 분류 분석 모형의 평가 실제값 \ 예측치 True False 합계 True TP(True Positive) FN(False Negative) P False FP(False Positive) .. 2020. 9. 14.
[Python] 딕셔너리 :: Dictionary 딕셔너리 만들기 fruit = {"사과": [70, 65], "체리": 85, "복숭아": 80} fruit {'복숭아': 80, '사과': [70, 65], '체리': 85} 키 목록 # keys fruit.keys() dict_keys(['사과', '체리', '복숭아']) # 키 목록을 리스트로 list(fruit.keys()) ['사과', '체리', '복숭아'] 값 목록 # values fruit.values() dict_values([[70, 65], 85, 80]) # 값 목록을 리스트로 list(fruit.values()) [[70, 65], 85, 80] 키-값 # key-value fruit.items() dict_items([('사과', [70, 65]), ('체리', 85), ('복숭아.. 2020. 9. 12.
[Scipy.stats] 왜도(Skew) / 첨도 (Kurtosis) from scipy.stats import skew, kurtosis # 왜도 skew(data) # 첨도 kurtosis(data, fisher=True) 왜도 (Skewness) - 분포의 비대칭도. - 정규분포 = 왜도 0 - 왼쪽으로 치우침 = 왜도 > 0 - 오른쪽으로 치우침 = 왜도 0(Pearson 첨도 >3) - 아래로 뾰족함 = 첨도 < 0 (Pearson 첨도 < 3) from scipy.stats import kurtosis # 첨도 kurtosis(data, fi.. 2020. 9. 7.
[Python] 데이터프레임 txt로 저장하기 데이터프레임을 .csv파일이나 .xlsx로 저장하는 방법은 df.to_csv와 df.to_excel로 익히 알려져있다. 그렇다면 .txt 파일로 저장하고 싶을 땐 어떻게 해야할까? 처음에는 open() 내장함수로 txt파일에 wirte해야하는지 고민했는데 생각보다 간단한 방법으로 해결되었다. Pandas import pandas as pd 판다스를 임포트해주고 예시 데이터프레임을 생성하였다. DataFrame을 .txt로 저장하기 1. df.to_csv('pizza.txt') 그냥 to_csv를 한 후 파일형식을 .txt로 지정하면 된다. csv는 콤마로 구분한 것이기에 sep을 지정하지 않으면 구분자가 ,로 지정된다. 2. 구분자 변경 # 구분자 변경 df.to_csv('pizza.txt', sep =.. 2020. 9. 4.
[Python] df.copy() :: 복사본 만들기 / 얕은복사 & 깊은 복사 판다스에는 데이터프레임의 복사본을 만들어주는 pandas.DataFrame.copy가 있다. 이는 a = b와는 다른 방식의 복사이다. a = b는 원본 데이터가 변하면 똑같이 변하는 얕은 복사인 반면, pandas.DataFrame.copy는 복사 당시의 데이터프레임 상태만 복사되는 깊은 복사이다. 얕은 복사를 하면 복사본은 원본과 데이터/index를 공유하지만, 깊은 복사는 복사본이 자신만의 데이터/index를 갖게한다. 예시 데이터 import pandas as pd a = pd.DataFrame([['Kim', 23], ['Lee', 12], ['Jeong', 28]], columns = ['Name', 'Age']) a just_copy = a pandas_copy = a.copy() just_.. 2020. 6. 18.
[Python] Multiprocessing을 이용한 반복문 속도개선 from multiprocessing import Pool # 반복문을 실행할 함수 def func(i): print(i) if __name__=='__main__': st = time.time() pool = Pool(processes=5) pool.map(func, range(0, 100000)) print(time.time()-st) for문으로 수백만건의 연산을 처리하면 정말 수백만초의 시간이 소요된다. multiprocessing을 이용하여 반목문 처리 시간을 줄일 수 있다. 사용 예시 ) from multiprocessing import Pool def day_diff(i): temp = mt_rt[mt_rt['clientId']==mt_cid[i]]['date'] return (temp.va.. 2020. 6. 8.
[chardet] 파일 인코딩을 무엇으로 지정할지 모를 때 :: Encoding Error , Encoding Detector UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc0 in position 0: invalid start byte python에서 파일을 불러올 때 인코딩 설정을 제대로 해주지 않으면 파일이 불러와지지 않는다. 이때 무엇으로 인코딩할지 모를 때는 chardet 이용해 인코딩을 감지하면 된다. 설치하기 pip install chardet 탐지할 수 있는 인코딩 방식 ASCII, UTF-8, UTF-16 (2 variants), UTF-32 (4 variants) Big5, GB2312, EUC-TW, HZ-GB-2312, ISO-2022-CN (Traditional and Simplified Chinese) EUC-JP, SHIFT_JIS, CP932, IS.. 2020. 5. 6.
[Python] 정규표현식 기본 re :: regular expression 라이브러리 불러오기 import re 메타문자 [ ] 문자클래스 [ ] 사이의 문자들과 매치 - [From - To] ex) [a-zA-Z] = 알파벳 모두 [0-9] = 모든 숫자 \d 숫자 = [0-9] \D 숫자가 아닌 것 = [^0-9] \s 공백 = [ \n\t\r\f\v] \S 공백이 아닌 것 = [^ \n\t\r\f\v] \w 문자+숫자+_ = [a-zA-Z0-9_] \W 문자+숫자+_가 아닌 것 =[^a-zA-Z0-9_] \ 이스케이프 \와 함께 사용하면 일반 문자로 인식된다. . \n를 제외한 모든 문자 . = 모든 문자 [.] []안에 .을 넣을 경우 그냥 '.'으로 인식 [.] = 온점. | or ^ [] 바깥에 있을 경우 문자열의 시작과 매치 re.MULTILINE과 함께 쓰인다면 .. 2020. 4. 17.
[Python] 정규성 검정 :: 히스토그램, Q-Q Plot 1. 히스토그램 import seaborn as sns sns.distplot(train['SalePrice']) distplot으로 그래프를 그렸을 때, 종모양의 정규분포을 띄어야 정규성을 만족한다. 2. Q-Q plot import scipy.stats as stats stats.probplot(col, plot=plt) 빨간선에 가까울 수록 정규성을 만족한다. 3. 왜도 & 첨도 from scipy.stats import skew, kurtosis # 왜도 skew() # 첨도 kurtosis(data, fisher=True) 정규분포일 경우 왜도 = 0 / 첨도 = 0 왜도 0 : 오른쪽으로 길게 늘어짐 첨도 0 : 뽀족한 모양 2020. 4. 7.
[Python] 예외처리 :: try~except 코드를 작성하다보면 예기치못한 오류를 마주할 수 있다. 이때 오류에 대한 적절한 대응, 예기지 못한 상황을 피하기 위한 방안을 try ~ except를 사용할 수 있다. 1. 기본 예외처리 try: 시도 할 코드 except: 예외가 발생했을 때 2. 예외 지정하기 try: 시도 할 코드 except IndexError: print('인덱스 오류입니다.') try: 시도 할 코드 except Exception as exp: print(exp) # Error가 뭔지 나타나게 3. 예외 없이 끝났을 때 try: 시도 할 코드 except: 예외가 발생했을 때 else: 예외가 발생하지 않았을 때 실행할 코드 4. 예외 여부와 관계없이 실행되는 코드 try: 시도 할 코드 except: 예외가 발생했을 때 e.. 2020. 4. 6.