【问题标题】:Machine learning random forest classifier机器学习随机森林分类器
【发布时间】:2018-07-20 20:59:32
【问题描述】:
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 列基本上就是标签。

【问题讨论】:

  • 还有一件事是多标签问题

标签: python pandas


【解决方案1】:

是的,你是对的,你应该使用的算法是 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) data['med_avg']= data['med'].map(avg_out)

【讨论】:

  • 但是如果 meds 列中的数据是标签,比如药物名称,我无法将它们相加,例如 med 列的格式为 ['brufen','panadol'],[ 'xanex']。现在在这里您可以看到列表的长度不一致并且随机森林不接受它,您能帮我在这种情况下怎么办吗?
  • @SIDDIQI 对于 RF,您可以将标签列表拆分为多个特征:每个标签一个布尔值。如果您没有太多不同的标签,这可能会起作用。
  • 所以基本上是通过使用 Multilabelbinarizer 然后将其作为 y-labels 传递来做到这一点的吗?
【解决方案2】:

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

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

【讨论】:

  • 你正在做的是你实际上是在做一个热编码吗?
  • 好的,但是有没有其他算法可以直接获取或处理此类数据?喜欢不编码吗?
  • 我不这么认为,你必须根据数据构建自己的功能。此外,您基于数据构建的功能将为您提供更好的预测和准确性。
猜你喜欢
  • 2016-12-24
  • 1970-01-01
  • 2016-10-20
  • 2019-06-23
  • 2018-02-18
  • 2015-08-18
  • 2014-08-19
  • 2020-08-08
  • 2019-10-05
相关资源
最近更新 更多