ฉันมีวันที่ของรูปร่าง 4200,8. แถวแรกดูเหมือนนี้:
X0 X1 X2 X3 X4 X5 X6 X8
32 23 17 0 3 24 9 14
แต่ละคืนค่าเป็น categorical การเข้ารหัสอักขระนั่น corresponds ต้องการรายชื่อของ 30 ค่าของมันดูเหมือนนี้:
[ 0.06405287, -0.1176078 , -0.06206927, 0.08389127, -0.18036067,
0.35158703, -0.0928449 , -0.0974429 , -0.06705306, -0.17196381,
-0.03776502, 0.09204011, 0.47813812, 0.16258538, 0.2699648 ,
0.07496626, -0.09791522, -0.31499937, -0.24898018, 0.06126055,
0.13187763, 0.21042736, -0.1585868 , 0.08355565, -0.13935572,
0.12408883, 0.2043313 , -0.12544186, -0.09223691, 0.00720569 ]
เป้าหมายของฉันคือจะสร้างคอลัมน์สำหรับแต่ละค่าอยู่ในรายการที่ตำแหน่งของรายการเป็นที่สัมพันธ์กัน categorical การเข้ารหัส รายการด้านบ corresponds ที่ค่า 14
ในคอลัมน์ X8
ดังนั้นแทนที่จะเป็น: X8 : 14
ฉันต้อง:
X8_1 X8_2 X8_3 ... X8_29 X8_30
0.06 -0.11 -0.62 ...-0.09 0.007
ผลสุดท้ายก็จบลงเป็นของฉัน dataframe ของ 8 คอลัมน์ก็จะกลายเป็น dataframe ของ 240 ๆคอลัมน์ แน่นอนว่างแต่ละแถวด้วมีอีกตั้งของค่า. นี่เป็นวิธีที่ฉันเคยทำมัน:
ผมได้รับค่าพิเศษอยู่ในคอลัมน์สร้างพจนานุกรมของ
colname:uniqueval:indexoflist:listvalatindex
. งั้นฉันสร้างพจนานุกรมออกของแต่ละแถวด้วงของ dataframe และสำหรับแต่ละคอลัมน์และค่าในคอลัมน์ฉันไปเอารายการที่สัมพันธ์กันและ concatenate. งั้นฉัน concatenate แถวนั้นไปก่อนหน้านั่น
weights = {}
for index, x in enumerate(encoded.columns): #this is the dataset with the original encoded values
weights[x] = {}
for id, val in enumerate(encoded[x].unique()):
weights[x][val] = {}
for weightid, weightval in enumerate(model_full.get_layer(embeddings[index]).get_weights()[0][id]): #this is where I get the list of 30 values from
weights[x][val][weightid] = weightval
mappedembeddings = pd.DataFrame()
encodedindex = []
for row in encoded.iterrows(): #iterate over original dataset
encodedindex.append(row[0]) #store index for later
df0 = pd.DataFrame()
for k, v in row[1].to_dict().items(): #for each key/val in row
names = []
for z in weights[k][v].keys():
names.append(str(k)+'_'+str(z)) #naming (z is key of list value)
tempdf = pd.DataFrame([weights[k][v]]) #dataframe of list at column/value key in dictionary made from embedding layer list
tempdf.columns = names
df0 = pd.concat([df0,tempdf],axis=1)
mappedembeddings = pd.concat([mappedembeddings,df0],axis=0) #concat row to previous row
mappedembeddings.index = encodedindex
มันต้องใช้เวลานาน ฉันอยากจะ vectorize ปฏิบัติการนี้แต่ฉันไม่มั่นใจยังไงต้องดำเนินการดังนั้นฉันจะซาบซึ้งมากบางข้อมูลเชิงลึก.