我正在尝试在“X0”列上执行目标编码,我希望将X0中的每个唯一值(级别)替换为目标的中位数但是交叉验证的方式。问题是最后一行
train.loc [test_index,:]。loc [boolean,“X0”] = int(j [1] .y.median())
其中我将测试折叠子集,然后再次子集到该组以替换它似乎不起作用的中位数。任何有关将此中位数替换为该数据帧的帮助都将受到高度赞赏。
from sklearn.cross_validation import KFold
kf = KFold(train.shape[0], n_folds=NFOLDS, shuffle=True, random_state=SEED)
kf
for i ,(train_index,test_index) in enumerate(kf):
train_dataset = train.iloc[train_index,:]
for j in train_dataset.groupby('X0'):
boolean = train.iloc[test_index].X0 == j[0]
print train.loc[test_index,:].loc[boolean,"X0"]
print int(j[1].y.median())
train.loc[test_index,:].loc[boolean,"X0"] = int(j[1].y.median())
我仍然只能看到内部的分类级别,而不是数值。