Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 机器学习随机森林分类器_Python_Pandas - Fatal编程技术网

Python 机器学习随机森林分类器

Python 机器学习随机森林分类器,python,pandas,Python,Pandas,对于这类数据,我应该使用哪种机器学习算法?我想到med列中数组的长度不一致。每当我尝试将其传递到随机林分类器中时,med列基本上就是标签。是的,你是对的,你应该使用的算法是RF或logistic也应该是好的。问题在于“med”列中的数据长度不一致。如果没有必要,您可以使用以下函数对med列数组中的数值数据进行平均/求和: data=pd.DataFrame({'gender':['m','f','m'],'icds':[['i10'],['i20','i30'],['i40']],'med':[

对于这类数据,我应该使用哪种机器学习算法?我想到
med
列中数组的长度不一致。每当我尝试将其传递到随机林分类器中时,
med
列基本上就是标签。

是的,你是对的,你应该使用的算法是RF或logistic也应该是好的。问题在于“med”列中的数据长度不一致。如果没有必要,您可以使用以下函数对med列数组中的数值数据进行平均/求和:

data=pd.DataFrame({'gender':['m','f','m'],'icds':[['i10'],['i20','i30'],['i40']],'med':[[1,2,4,5],[3,4,6],[5,6,7]]})
def平均输出(x): 返回np.nanmean(x)

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

数据['med_sum']=数据['med'].映射(求和)
data['med_avg']=data['med'].map(avg_out)

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

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

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

还有一件事,这是一个多标签的问题,但是如果meds列中的数据是标签,比如药物名称,我不能将它们相加,例如med列的形式是['brufen','panadol'],['xanex']。现在您可以看到列表的长度不一致,Random Forest不接受它,您能帮我在这种情况下怎么办吗?@SIDDIQI For RF您可以将标签列表拆分为多个功能:每个标签一个bool。如果没有太多不同的标签,这可能会起作用。所以基本上是通过使用Multilabelbinarizer,然后将其作为y标签传递,对吗?你所做的是,你实际上在做一个热编码,对吗?好的,但是有没有其他算法可以直接获取或处理此类数据?比如说不编码?我不这么认为,你需要根据数据构建自己的功能。此外,基于数据构建的功能将为您提供更好的预测和准确性。
  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