728x90
반응형

전체 글 112

[pythonML] 회귀- 경사하강법

앞에서 RSS를 최소로 하는 w0,w1 (회귀 계수)를 학습을 통해서 찾는 것이 회귀의 핵심 이라고 설명하였는데 * 그렇다면 어떻게 비용함수가 최소가 되는 W 파라미터를 어떻게 구할 수 있을까? => 경사하강법을 이용한다. # 경사하강법 : '점진적으로' 반복적인 계산을 통해 W 파라미터 값을 업데이트하면서 오류 값이 최소가 되는 W 파라미터를 구하는 방식 * RSS(w0,w1) 를 미분해서 미분 함수의 최솟값을 구해야 하는데, RSS(w0,w1) 는 두 개의 W 파라미터인 w0,w1을 각각 가지고 있기 때문에 w0,w1 각 변수에 편미분을 적용해야 함 # 새로운 w를 업데이트 하는 식 새로운 w0 = (이전w0) - (w0의 편미분 결괏값) 새로운 w1 = (이전w1) - (w1의 편미분 결괏값) # ..

pythonML 2022.04.17

[pythonML] 회귀 - 단순 선형 회귀

# 단순 선형 회귀 : 독립변수 1개(X: 주택 크기), 종속변수 1개(Y: 주택 가격)인 선형 회귀 최적의 회귀 모델을 만든다 = 잔차(실제 값- 예측 값)의 합이 최소가 되는 모델을 만든다 = 최적의 회귀 계수(w0,w1)를 찾는다. # 오류의 합 (잔차의 합)을 구할때는 1. 절댓값을 취해서 더한다. 2. 오류 값의 제곱을 구해서 더한다(RSS) RSS를 최소로 하는 w0,w1 (회귀 계수)를 학습을 통해서 찾는 것이 회귀의 핵심 w로 구성된 RSS = 비용(Cost)함수 = 손실함수

pythonML 2022.04.17

[pythonML] 부스팅(Boosting)- XGBoost(eXtra Gradient Boost)

# XGBoost 의 개요 GBM에 기반하고 있지만, GBM의 단점인 느린 수행시간, 과적합 규제 등을 해결한 알고리즘 #XGBoost의 장점 1. 뛰어난 예측 성능 -> 분류/회귀에서 뛰어난 예측 성능을 발휘함 2. GBM 대비 빠른 수행 시간 -> GBM에 비해서 빠른 수행성능을 보장함 3. 과적합 규제 -> GBM의 경우 과적합 규제기능이 없음 4. 나무 가지치기 5. 자체 내장된 교차 검증 6. 결손값 자체 처리 # 사이킷런 래퍼 XGBoost의 개요 및 적용 사이킷런의 기본 Estimator를 이용해 만들어 fit()과 predict()만으로 학습과 예측이 가능 GridSearchCV,Pipeline 등 사이킷런의 유틸리티를 그대로 사용 가능 분류 : XGBClassifier / 회귀 : XGB..

pythonML 2022.04.04

[pythonML] 부스팅(Boosting) - GBM /AdaBoost

# 부스팅(Boosting) : 여러 개의 약한 학습기를 순차적으로 학습,예측 하면서 잘못 예측한 데이터에 가중치 부여를 통해 오류를 개선해 나가면서 학습하는 방식. 즉, 약한 알고리즘 => 강한 알고리즘 # 부스팅의 대표적인 구현 2가지 1. 에이다 부스트 AdaBoost (Adaptive Boosting) : 오류 데이터에 가중치를 부여하면서 부스팅을 수행하는 알고리즘. 잘못 분류된 오류데이터에 가중치를 계속하여 부여함 => 부여한 가중치들을 결합하여 예측을 수행 2. 그래디언트 부스트 (GBM-Gradiant Boost Machine) : 가중치 업데이트를 경사 하강법(Gradiant)을 이용함 - 경사하강법 : 반복 수행을 통해 오류를 최소화할 수 있도록 가중치의 업데이트 값을 도출하는 기법 분류..

pythonML 2022.04.01

[pythonML] 보팅(Voting)-soft voting/hard voting

# 보팅 : 서로 다른 알고리즘을 가진 분류기를 결합하는 것 - 하드 보팅(Hard Voting) : 예측한 결괏값들중 다수의 분류기가 결정한 예측값을 최종 보팅 결괏값으로 선정 (다수결) - 소프트 보팅(Soft Voting) =>일반적으로 소프트 보팅이 예측 성능이 좋아서 더 많이 사용 :분류기들의 레이블 값 결정 확률을 모두 더하고 이를 평균해서 이들 중 가장 높은 레이블 값을 최종 결괏값으로 선정 # 보팅 분류기(Voting Classifier) -로지스틱 회귀, KNN을 이용하여 소프트 보팅 분류기 생성 import pandas as pd from sklearn.ensemble import VotingClassifier # 보팅 앙상블 클래스 from sklearn.linear_model imp..

pythonML 2022.03.29

[python] DataFrame 생성하기/ 넘파이 ndarray, 리스트, 딕셔너리로 변환하기

1. 넘파이 ndarray, 리스트, 딕셔너리를 => DataFrame으로 변환하기 1.1 리스트 list= > dataframe으로 변환 df_list2=pd.DataFrame([[1,2,3],[11,12,13]],columns=['col1','col2','col3']) df_list2 1.2 ndarray = > dataframe으로 변환 df_array2=pd.DataFrame(np.array([[1,2,3],[11,12,13]]), columns=col_name2) df_array2 1.3 딕셔너리 = > dataframe으로 변환 # key => 문자열 칼럼명, value=> 칼럼 데이터로 매핑 dict={'col1':[1,11], 'col2': [2,22], 'col3': [3,33]} df_..

python 2022.03.24

[python] groupby절

df_last 데이터로 groupby를 해보겠다 # 지역별로 groupby 한 결과를 살펴보면 for gp, df in df_last.groupby(['지역명']): gp df # 지역별로 groupby를 한 후 분양가격의 column만 추출 for gp,sr in df_last.groupby(['지역명'])['분양가격']: gp sr # 지역별 분양가격의 평균 df_last.groupby(['지역명'])['분양가격'].mean() # 전용면적, 지역별 평당분양가격 df_last.groupby(["전용면적", "지역명"])["평당분양가격"].mean()

python 2022.03.23

[python] object 형 => numerical 형태로 변경해주는 to_numeric 함수

df_last["분양가격(㎡)"] * 3.3 이라는 식을 계산해야 하는데 df_last["분양가격(㎡)"]의 type이 object이기 때문에 오류가 발생함. int 나 float 형태가 아니기 때문에 3.3을 곱할 수 가 없는거임 그래서 int나 float으로 바꿔줘야해 to_numeric을 이용하여 숫자형식으로 변경 df_last["분양가격(㎡)"] #변경전 object타입 0 5841 1 5652 2 5882 3 5721 4 5879 ... 4330 3882 4331 NaN 4332 3898 4333 NaN 4334 3601 Name: 분양가격(㎡), Length: 4335, dtype: object df_last["분양가격"] = pd.to_numeric(df_last["분양가격(㎡)"], err..

python 2022.03.22
728x90
반응형