728x90
반응형

전체 글 103

[pythonML] 부스팅(Boosting)-LGBM(Light Gradient Boost Machine)

# LGBM 의 개요 LGBM은 일반 GBM 계열의 트리 분할 방법과 다르게 리프 중심 트리 분할 방식을 사용함. 이는 트리의 균형을 맞추지 않고 최대 손실 값을 가지는 리프 노드를 지속적으로 분할하면서 드리의 깊이가 깊어지고 비대칭적인 규칙 트리가 생성됨. 이렇게 지속적으로 분할해 생성된 규칙 트리는 학습을 반복할수록 예측 오류 손실을 최소화 할수 있음 # LGBM 의 장점 더 빠른 학습과 예측 수행 시간 더 작은 메모리 사용량 카테고리형 피처의 자동 변환과 최적의 분할 단점 : 적은 데이터 세트에 적용하면 과적합이 발생하기 쉬움 # LightGBM의 파이썬 패키지인 lightgbm에서 LGBMClassifier 임포트 from lightgbm import LGBMClassifier import pan..

pythonML 2022.07.15

[pythonML] ROC곡선과 AUC , F1스코어 - 평가

# 평가 지표 -회귀 평균 오차 -분류 정확도 오차행렬 정밀도 재현율 F1스코어 ROC AUC 4. F1 스코어 정밀도와 재현율을 결합한 지표. F1 스코어는 정밀도와 재현율이 어느 한쪽으로 치우치지 않는 수치를 나타낼 때 상대적으로 높은 값을 가짐. ex) A : 정밀도0.9 재현율0.1 B: 정밀도 0.5 재현율 0.5 이 경우 F1 스코어는 A:0.18 / B: 0.5 로 B가 더 높다. from sklearn.metrics import f1_score f1 = f1_score(y_test , pred) print('F1 스코어: {0:.4f}'.format(f1)) F1 스코어: 0.7805 def get_clf_eval(y_test , pred): confusion = confusion_matr..

pythonML 2022.07.11

[pythonML] 정밀도와 재현율 - 평가

# 평가 지표 -회귀 평균 오차 -분류 정확도 오차행렬 정밀도 재현율 F1스코어 ROC AUC 3. 정밀도와 재현율 (Precision과 Recall) 불균형한 데이터 세트에서 정확도보다 더 선호되는 평가 지표 positive 데이터 세트의 예측 성능에 초점을 맞춘 평가 지표 재현율과 정밀도 모두 TP를 높이는 데 동일한 초점임 BUT 재현율은 FN을 낮추고, 정밀도는 FP를 낮추는데 초점 가장 좋은 성능 평가는 재현율, 정밀도 모두 높은 수치를 얻는 것. 반면 둘 중 하나만 높고 하나만 낮은 결과일 경우 바람직하지 않음) 정밀도 = TP / (FP +TP ) 정밀도가 더 중요한 경우 : 실제 Negative 음성인 데이터 예측을 Positive 양성으로 잘못 판단하게 될 경우 ( ex. 스팸메일이 아닌..

pythonML 2022.07.11

[pythonML] 정확도와 오차행렬 - 평가

# 평가 지표 -회귀 평균 오차 -분류 정확도 오차행렬 정밀도 재현율 F1스코어 ROC AUC 1. 정확도(Accuracy) 정확도(Accuracy) = 예측 결과가 동일한 데이터 건수 / 전체 예측 데이터 건수 불균형한 레이블 값 분포에서는 "정확도만으로" 성능 수치를 사용해서는 안되고 여러가지 분류지표와 함께 적용해야한다. # 타이타닉 정확도 타이타닉 데이터 전처리 import pandas as pd from sklearn.preprocessing import LabelEncoder # Null 처리 함수 def fillna(df): df['Age'].fillna(df['Age'].mean(),inplace=True) df['Cabin'].fillna('N',inplace=True) df['Embar..

pythonML 2022.07.10

[python] apply lambda

lambda 란? def get(x): return x**2 get(3) 9 위의 함수는 def get(x) 와 같이 함수명, 입력 인자를 먼저 선언한 후 return But, lambda는 이러한 함수의 선언과 함수 내의 처리를 한 줄의 식으로 쉽게 변환하는 식. get = lambda x : x**2 get(3) 9 apply lambda titanic_df['Name_len']=titanic_df['Name'].apply(lambda x : len(x)) titanic_df[['Name_len','Name']] apply lambda ( if ~ else 문) lambda 식에서 if ~ else 문을 쓸 때 유의 할점 => if 절의 경우 if 식보다 반환 값을 먼저 기술해야 함 (child if x

python 2022.05.30

[오류Error] 'utf-8' codec can't decode byte 0xc1 in position 0: invalid start byte

문제 상황Python의 Pandas 라이브러리를 사용하여 CSV 파일을 불러오는 과정에서 다음과 같은 인코딩 오류가 발생했습니다.train = pd.read_csv("산림청 산림항공본부_진화헬기 투입 산불건수_20201231.csv", encoding="UTF-8")오류 원인이 오류는 파일이 UTF-8이 아닌 다른 인코딩 방식으로 저장되었을 때 발생합니다. 한국에서 많이 사용되는 인코딩 방식 중 하나인 CP949로 파일이 저장된 경우, UTF-8로 읽으려고 할 때 이런 문제가 발생할 수 있습니다. 해결 방법파일의 인코딩을 'UTF-8'에서 'cp949' 로 지정하여 파일을 올바르게 읽을 수 있습니다. 코드는 다음과 같이 수정할 수 있습니다.train = pd.read_csv("산림청 산림항공본부_진화헬기..

오류Error 2022.05.21

[python] stack & unstack

damn = pd.DataFrame({'대청':[36.477629,127.480822], '용담':[35.945119,127.524596], '보령':[36.248082,126.645782], '밀양':[35.462742,128.928952], '보현산':[36.126778,128.949904]}) damn stack : 컬럼(column) => 인덱스(index) 컬럼에 있는 댐이름들을 인덱스로 옮김 damn.stack() 0 대청 36.477629 용담 35.945119 보령 36.248082 밀양 35.462742 보현산 36.126778 1 대청 127.480822 용담 127.524596 보령 126.645782 밀양 128.928952 보현산 128.949904 dtype: float64 un..

python 2022.05.19

[pythonML] 회귀- LinearRegression

# LinearRegression 클래스 LinearRegression 클래스는 예측값과 실제값의 RSS 를 최소화해 OLS 추정 방식으로 구현한 클래스이다. class sklearn.linear_model.LinearRegression(fit_intercept=True, normalize=False, copy_X=True,n_jobs=1) -입력파라미터 fit_intercept : intercept(절편) 값을 계산할 것인지 말지를 지정함. (False이면 y축좌표가 0) normalize: True이면 회귀를 수행하기 전에 데이터 세트를 정규화 함. -속성 coef_ : fit() 메서드를 수행했을 때 회귀 계수가 배열 형태로 저장되는 속성. shape =( Target값 개수, 피처 개수) inte..

pythonML 2022.05.09
728x90
반응형