地址:
获取所有组合:
import itertools
combinations=[]
for number in range(2,len(V)+1):#Combinations except 1 & 0.
combinations.append([list(a) for a in itertools.combinations(V,number)])
一个热门的编码类:
Dict={"C1":np.array([1,0,0]),"C2":np.array([0,1,0]),"C3":np.array([0,0,1])}
DF["Class"]=DF["Class"].apply(lambda x :Dict[x])
创建一个 val_class 对的字典:
Val_class_dict={}
for val in DF.Value.drop_duplicates():
x=np.sum(DF[DF["Value"]==val].Class.values,axis=0)#Summing them up if there are more than 1 value for each.
Val_class_dict[val]=x
class_vals=[]
val_strs=[]
for a in combinations:
for b in a:
zeros=np.array([0,0,0])
Str=""
for c in b:
Str+=str(c)
zeros+=Val_class_dict[c]
class_vals.append(zeros)
val_strs.append(Str)
pd.DataFrame({"Value":val_strs,"C1":np.array(class_vals)[:,0],"C2":np.array(class_vals)[:,1],"C3":np.array(class_vals)[:,2]})
对于 Ram-Memory 问题,每次创建时保存:
import csv
import itertools
with open('store.csv', mode='w') as file:
file_writer = csv.writer(file, delimiter=',')
for number in range(2,len(V)+1):
for a in [list(a) for a in itertools.combinations(V,number)]:
zeros=np.array([0,0,0])
Str=""
for b in a:
Str+=str(b)
zeros+=Val_class_dict[b]
file_writer.writerow((Str,zeros))