슬코생
[kaggle] Bike Sharing Demand 공공자전거 수요 예측 모델 #3 본문
Score RMSLE
from sklearn.metrics import make_scorer
def rmsle(predicted_values, actual_values):
# 넘파이로 배열 형태로 바꿔준다.
predicted_values = np.array(predicted_values)
actual_values = np.array(actual_values)
# 예측값과 실제 값에 1을 더하고 로그를 씌워준다.
log_predict = np.log(predicted_values + 1)
log_actual = np.log(actual_values + 1)
# 위에서 계산한 예측값에서 실제값을 빼주고 제곱을 해준다.
difference = log_predict - log_actual
# difference = (log_predict - log_actual) ** 2
difference = np.square(difference)
# 평균을 낸다.
mean_difference = difference.mean()
# 다시 루트를 씌운다.
score = np.sqrt(mean_difference)
return score
rmsle_scorer = make_scorer(rmsle)
rmsle_scorer
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
k_fold = KFold(n_splits=10, shuffle=True, random_state=0)
RandomForest
from sklearn.ensemble import RandomForestRegressor
max_depth_list = []
model = RandomForestRegressor(n_estimators=100,
n_jobs=-1,
random_state=0)
model
n_estimators 값을 높이면 시간이 오래걸리기 때문에 100으로 초기화하고 진행한다.
%time score = cross_val_score(model, X_train, y_train, cv=k_fold, scoring=rmsle_scorer)
score = score.mean()
print("Score= {0:.5f}".format(score))
0에 근접할수록 좋은 데이터!
train data
model.fit(X_train, y_train)
모델을 학습시키기 위해 피팅이 필요하다. 피쳐와 레이블을 넣어주면 알아서 학습을 해야 한다.
예측
predictions = model.predict(X_test)
print(predictions.shape)
predictions[0:10]
# 예측한 데이터를 시각화 해본다.
fig,(ax1,ax2)= plt.subplots(ncols=2)
fig.set_size_inches(12,5)
sns.distplot(y_train,ax=ax1,bins=50)
ax1.set(title="train")
sns.distplot(predictions,ax=ax2,bins=50)
ax2.set(title="test")
0에 굉장히 몰려 있음을 볼 수 있다.
submit
submission = pd.read_csv("../input/bike-sharing-demand/sampleSubmission.csv")
submission
submission["count"] = predictions
print(submission.shape)
submission.head()
submission.to_csv("Score_{0:.5f}_sampleSubmission.csv".format(score), index=False)
제출 끝!
'Data > Project' 카테고리의 다른 글
[kaggle] Bike Sharing Demand 공공자전거 수요 예측 모델 #2 (0) | 2020.01.29 |
---|---|
[kaggle] Bike Sharing Demand 공공자전거 수요 예측 모델 #1 (0) | 2020.01.29 |
[멋쟁이 사자처럼 7기] django 이용해 wordcount 해보기 (0) | 2020.01.29 |
오늘코드 '공공데이터를 활용한 python 기반의 스타벅스/이디야 분석' 박조은님 (0) | 2020.01.29 |
Comments