본문 바로가기

AI/Kaggle

Store Item Demand Forecasting Challenge 2회차

반응형

38.34583 - > 14.49390 (251/461)

 

 

1. 그냥 생각없이 칼럼을 추가하는 것이 아니고 date 에 포함된 것중에 group으로 묶였을 때 값의 변화에 따라 sales에 영향을 주는 칼럼만을 추가함.

 

2. 하이퍼 파라미터를 조절함 150으로 하니까 14점대 까지 내려갔고 300까지 올렸으나 그이상에서는 미비한 차이만 존재 했음. 

3. 로그로 정규분포처럼 만들어봤는데 오히려 역효과 근데 표에서도 봤듯이 애초에 정규분포와 비슷한 형태였음. 그렇다면 데이터값을 건드리는 것이 좋은점보다 안좋은 점이 더 커지는 듯 하다.

의문) 그냥 어떤 칼럼에 의해 원하는 목표값이 달라진다면 의미있는 칼럼인가? 이걸 표로 확인하는 법이 뭐였지?

 

 

# This Python 3 environment comes with many helpful analytics libraries installed
# It is defined by the kaggle/python docker image: https://github.com/kaggle/docker-python
# For example, here's several helpful packages to load in 

import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)

# Input data files are available in the "../input/" directory.
# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory

import os
for dirname, _, filenames in os.walk('/kaggle/input'):
    for filename in filenames:
        print(os.path.join(dirname, filename))

# Any results you write to the current directory are saved as output.

 

 

train = pd.read_csv("/kaggle/input/demand-forecasting-kernels-only/train.csv")
train["date"] = train["date"].astype("datetime64")
train.dtypes
train

 

 

import seaborn as sns  #그림을 그림.
import matplotlib.pyplot as plt  #그림을 그릴 판을 만듬

_,banana = plt.subplots(1,2,figsize =(20,12))  #변수 두개가 필요한데 하나는 안써도 되므로, _이렇게 사용해도됨. 

                                                               #매개변수로 들어가는건 1,2 = 1열 2행, figuresize
sns.distplot(train["sales"],ax = banana[0])     #아까 쓴 변수(그림판)에 count에 관하여 그림을 그림.
sns.distplot(np.log1p(train["sales"]),ax = banana[1])  #로그를 사용해서 그림 ->정규분포도로 표현

 

 

train["month"] = train["date"].dt.month
train["year"] = train["date"].dt.year 
train["dayofweek"] = train["date"].dt.dayofweek

y = train["sales"]

 

 

train.groupby("month")["sales"].mean() 

 

train = train.drop(["date","sales"],1)
train.head()

 

 

test = pd.read_csv("/kaggle/input/demand-forecasting-kernels-only/test.csv")

test["date"] = test["date"].astype("datetime64")
test["month"] = test["date"].dt.month
test["year"] = test["date"].dt.year
test["dayofweek"] = test["date"].dt.dayofweek

test = test.drop(["id","date"],1)

test.head()

 

 

 

sub = pd.read_csv("/kaggle/input/demand-forecasting-kernels-only/sample_submission.csv")
sub.head()

 

 

from lightgbm import LGBMRegressor

lga = LGBMRegressor(n_estimators = 300)

lga.fit(train,y)



p = lga.predict(test)


sub["sales"] = p


sub.to_csv("imu.csv",index = False)
sub.head()

반응형