스파르타코딩 데이터분석 4주 차 개발일지를 쓰겠다.
이번 주차는 예측하는 법을 다뤘는데 내가 예측 대회에 몇 번 참여하면서 배우고 알게 된 부분들이 많이 나왔다.
새로운 배움도 있었고, 대회에서 써왔던게 다시 한번 나오니까 신기했다.
- scikit learn 패키지를 사용한 선형 회귀분석
from sklearn.linear_model import LinearRegression
lr = LinearRegression() #내재되어있는 함수를 쓰기위한 준비 과정
lr.fit(X,y)
scikit - learn을 쓸 때 마다 정확히 이 패키지가 뭘 의미하는지 몰랐다.
그래서 수업을 주의깊게 들었다.
다행히 자세히 알려주셔서 이해가 됐고 y = w1x1 + w2x2 + w3x3 + b 이런 식으로 알려지지 않은 공식을 추측하여 데이터를 예측할 때 사용한다고 한다.
이때 w1, w2, w3는 가중치 값이고 b는 평향의 값이다.
lr.coef_ #가중치 값 출력(w1,w2,w3)
lr.intercept_ #평향의 값(b)
LinearRegression 말고도 lasso 등 다른 걸 이용해 줘도 된다.
그리고 예측값은 predict를 이용해 구해주면 나온다.
정확히 모르고 쓰던 코드를 정확히 이해하고 보니 기억에 잘 남았다.
의미를 아니 앞으로 적절한 쓰임새에 맞게 사용할 수 있을 것 같다.
- 문자열을 datetime으로 변경하는 법 두 가지
1.
df['datetime'] = df.datetime.apply(pd.to_datetime)
df['datetime']
2.
train = pd.read_csv('~.csv', parse_dates=["datetime"])
parse_dates=["datetime"]을 해주면 데이터에서 날짜 부분을 자동으로 타입을 datetime으로 변경해준다.
원래 1번을 사용했었는데 2번 방법을 새롭게 알게 되어서 좋았다.
앞으로 좀 더 간단한 2번 방법을 더 많이 쓸 것 같다.
- 년도, 월, 일, 시간, 요일 추출
연, 월, 일, 시간을 추출하기 위해서는
df["year"] = df["datetime"].dt.year # 연만 추출
df["month"] = df["datetime"].dt.month # 월만 추출
df["day"] = df["datetime"].dt.day # 일만 추출
df["hour"] = df["datetime"].dt.hour # 시간만 추출
.dt. 를 이용해 구해주면 된다.
요일을 추출하기 위해서는
df['dayofweek'] = df['datetime'].dt.dayofweek
대회 때 년도와 월, 일, 요일을 추출해 예측에 도움이 되는지 파악해보며 공부했다.
그래서 수업을 들으며 대회때 찾아보며 알게 된 이 날짜 추출 부분이 기억이 났다.
익숙하면서도 다시 배울 수 있어서 좋았다.
- 평가지표
rmsle
np.log1p(+1을 한 후 로그)를 사용하고, 실제값과 예측값의 차이(오차)의 제곱을 구해 평균을 구한 후 루트를 씌어준다.
rmse
rmsle에서 로그를 빼준 것이다.
mse
rmse에서 루트를 빼준 것이다.
이번 수업에서 rmsle는 처음 알았다.
rmse, mse와 연관성이 있었고 로그와 루트 차이로 구분되며 셋의 특징을 정확히 배웠다.
rmsle도 중요해 보여서 앞으로는 rmsle도 이용해야겠다.
- standardscaler
from sklearn.preprocessing import StandardScaler # 평균은 0, 표준편차는 1
scaler = StandardScaler()
scaled = scaler.fit_transform(train[' ~ '])
StandardScaler은 평균을 0으로 표준편차를 1로 만들어준다.
StandardScaler은 데이터 범위가 엄청 늘어났을 때(클 때) 쓰면 유용하다. 그리고 데이터 수 자체가 너무 많아졌을 때 쓰면 학습의 속도가 빨라지는데 도움이 된다.
데이터가 너무 많거나 범위가 커서 warning이 나오거나 학습 속도가 느리거나 최적화가 안 되는 경우가 있다. 그럴 때 StandardScaler을 써주면 warning이 제거되는 등의 도움이 된다.
이번 주 수업은 실전에 많이 도움이 되는 내용들로 구성되어 있었다.
특히 예측 대회에 참여할 때 많은 도움이 될 거 같다.
조만간 대회에 실력을 기르기 위해 또 참여해봐야겠다.
더 심도 있게 배우고 싶은데 이제 수업이 한 주밖에 안 남아서 아쉽다.
남은 한 주도 최선을 다해 수업을 들으며 이해해야겠다.
'데이터분석 개발일지(스파르타코딩)' 카테고리의 다른 글
| 데이터분석_개발일지5 (0) | 2023.02.01 |
|---|---|
| 데이터분석_개발일지3 (0) | 2022.11.18 |
| 스파르타코딩 데이터분석 개발일지2 (0) | 2022.08.22 |
| 데이터분석 개발일지1.2 (0) | 2022.08.09 |
| 데이터분석 개발일지1 (0) | 2022.08.09 |