AI競馬で回収率100%越えを目指して

はなむけ競馬場

python プログラム

[2日目] How I made top 0.3% on a Kaggle competition 写経

投稿日:

How I made top 0.3% on a Kaggle competitionを写経する2日目。

前回はコチラ

 

数値データをboxcox変換する


#数値データ取得
numeric_dtypes = ['int16', 'int32', 'int64', 'float16', 'float32', 'float64']
numeric = []
for i in all_features.columns:
    if all_features[i].dtype in numeric_dtypes:
        numeric.append(i)

#尖度を図って、ソート</pre>
skew_features = all_features[numeric].apply(lambda x: skew(x)).sort_values(ascending=False)

print(skew_features)

&nbsp;

#尖度が高いものの定義を0.5より大きいものとする
high_skew = skew_features[skew_features > 0.5]
skew_index = high_skew.index

print(skew_index)

skewness = pd.DattFrame({"Skew":high_skew})
<pre>#boxcox1pで+1されているから、最低値が0でも大丈夫
#boxcox_normmax(all_features[i] + 1)で、おそらくそれぞれの特徴量のラムダの最適値を計算している
for i in skew_index:
    all_features[i] = boxcox1p(all_features[i],boxcox_normmax(all_features[i] + 1))

boxcox_normmaxと検索してもあまり出てこないので、珍しいのだと思う。
特徴量のそれぞれのラムダを計算するらしい。最適化できるのだ。(https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.boxcox_normmax.html
これが効いているのだろうか。

その他は欠損値を埋めたりしているだけで、他と変わらない。

-python, プログラム

Copyright© はなむけ競馬場 , 2021 All Rights Reserved Powered by AFFINGER5.