所用思路和上一个差不多,本篇基于天池论坛的这篇文章:Keras多分类联合训练+欧式距离迁移映射 ,并做了自己的处理。线上精度0.0905。
'non_1'
的特征,直接使用如原来的全0特征表示,并对每类特征除和def normalline(data):
for i,cs in enumerate(np.sum(data,axis=1).values):
if cs!=0:
data.iloc[i,:]=data.iloc[i,:]*1.0/cs
return data
def wordsnormal():
words=pd.read_csv(r"D:\TianChi\201809ZSL\DatasetA_train_20180813\attributes_per_class.txt", header=None, sep='\t')
labels=np.array(words.iloc[:,0]).reshape(-1,1)
dentype=words.iloc[:,1:7]
dentype=normalline(dentype)
dencolor = words.iloc[:, 7:15]
dencolor=normalline(dencolor)
denhas = words.iloc[:, 15:19]
denhas = normalline(denhas)
denfor=words.iloc[:, 19:25]
denfor = normalline(denfor)
words=pd.DataFrame(np.concatenate((labels,dentype,dencolor,denhas,denfor),axis=1))
words.to_csv("../data/attributes_per_class_norm.csv",header=None,sep='\t',index=None)
可以从如下思路改进:
代码上传在Github上。