data=pd.DataFrame({'gender':['m','f','m'],'icds':[['i10'],['i20','i30'],['i40']],'med':[[1,2,4,5],[3,4,6],[5,6,7]]})对于这种类型的数据,我应该使用哪种机器学习算法?我认为med列中的数组长度不一致。每当我试图在随机森林分类器中传递它时,med列基本上就是标签。
发布于 2018-07-20 17:28:35
是的,你是对的,你应该使用的算法是RF或logistic也应该是好的。问题是“med”列中的数据长度不一致。如果不需要,您可以使用以下函数对中间列数组中的数字数据进行平均/求和:
def sum_out(x):
return np.nansum(x)np.nanmean(x):返回def (X)
Data=pd.DataFrame({‘性别’:'m','f',‘m’,'icds':['i10','i20','i30','i40'],'med':[1,2,4,5,3,4,6,5,6,7]})
data‘’med_sum‘=data’‘med’.map(Sum_out)data‘’med_avg‘=data’‘med’.map(Avg_out)
发布于 2018-07-20 20:59:33
实际上,您可以将这些药物添加为功能,如下所示:
data=pd.DataFrame({'gender':['m','f','m'],'icds':[['i10'],['i20','i30'],['i40']],'med':[['xanex','isotopin'],['cz3','hicet','t-montair'],['t-montair','xanex']]})
all_med= list(np.unique(flatten(list(data['med'].values))))
for meds in all_med:
med_list=[]
for i in xrange(len(data)):
d= data['med'][i]
if meds in d:
med_list.append(1)
else:
med_list.append(0)
data[meds]=med_list输出:
gender icds med cz3 hicet isotopin \
0 m [i10] [xanex, isotopin] 0 0 1
1 f [i20, i30] [cz3, hicet, t-montair] 1 1 0
2 m [i40] [t-montair, xanex] 0 0 0
t-montair xanex
0 0 1
1 1 0
2 1 1https://stackoverflow.com/questions/51438894
复制相似问题