繁体   English   中英

机器学习随机森林分类器

[英]Machine learning random forest classifier

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列基本上就是标签。

是的,您是对的,您应该使用的算法是RF或逻辑运算法也应该很好。 问题在于“ med”列中的数据长度不一致。 如果不需要,您可以使用以下函数对med列数组中的数字数据求平均/求和:

def sum_out(x):
return np.nansum(x)

def avg_out(x):返回np.nanmean(x)

data = pd.DataFrame({'gender':['m','f','m'],'icds':[['i10'],['i20','i30'],['i40' ]],'med':[[1,2,4,5],[3,4,6],[5,6,7]]})

数据['med_sum'] =数据['med']。map(sum_out)数据['med_avg'] =数据['med']。map(avg_out)

您实际上可以将这些药物添加为功能,如下所示:

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      1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM