Ridgelinezとの共同開催第二弾!花粉予報にチャレンジ!
saru_da_mon
私のモデルで、効果のあった特徴量を紹介します。降水量のカラムに対し以下の関数を使用し特徴量生成しました。
def zero_count(df,alpha=0.005): df_count = [] n_count = 0 for i in range(len(df)): if df[i] < 0.5: n_count += 1 else: n_count = 0 df_count.append(n_count) df_count = np.tanh(np.array(df_count)*alpha) return df_count
面白いシェアありがとうございます。とても勉強になりました。
お返しと言うには、あんまり寄与が安定しない&当たり前の変換ですが、こういう風力変換しています。45度ずらしても面白いかなぁとも思います。
def wind_vecs(): level = [0, #関係ない角度 math.cos(math.radians(67.5)), #北にとって東北東など math.cos(math.radians(45)), #北にとって北東など math.cos(math.radians(22.5)), #北にとって北北東など 1, #北にとって北 ] vecs = [ [0,level[0],level[0],level[0],level[0],],#0:静穏 [1,level[3],level[1],level[0],level[0]],#1:北北東 [2,level[2],level[2],level[0],level[0]],#2:北東 [3,level[1],level[3],level[0],level[0]],#3:東北東 [4,level[0],level[4],level[0],level[0]],#4:東 [5,level[0],level[3],level[1],level[0]],#5:東南東 [6,level[0],level[2],level[2],level[0]],#6:南東 [7,level[0],level[1],level[3],level[0]],#7:南南東 [8,level[0],level[0],level[4],level[0]],#8:南 [9,level[0],level[0],level[3],level[1]],#9:南南西 [10,level[0],level[0],level[2],level[2]],#10:南西 [11,level[0],level[0],level[1],level[3]],#11:西南西 [12,level[0],level[0],level[0],level[4]],#12:西 [13,level[1],level[0],level[0],level[3]],#13:西北西 [14,level[2],level[0],level[0],level[2]],#14:北西 [15,level[3],level[0],level[0],level[1]],#15:北北西 [16,level[4],level[0],level[0],level[0]],#16:北 ] vecs = pd.DataFrame(vecs) vecs.columns = ["w_direc", "vec_n","vec_e","vec_s","vec_w",] return vecs
X = pd.merge(X, wind_vecs(), on="w_direc", how="left")#onのカラムは適当に書き換えるfor vecs in ["vec_n", "vec_e", "vec_s", "vec_w",]: X[vecs] *= X["w_speed"]
ありがとうございます。試させていただきます。風に関しては、普通に、風速と風向を使ってベクトル化していました。ベクトル化しただけで良いようには思えず、どうするべきか悩んでたところです。