ich hänge seit gestern an einem Problem fest und bitte um Hilfe.
Es geht um folgendes Problem. Ich habe ein Dataset mit 16 Bundesländer als Features und möchte die 16 Features als alle möglichen 2er Gruppen Kombinationen haben, also alle möglichen 15x1 ,14x2,13x3, ..., 8x8. Fürs erste habe ich folgendes gebastelt.
Code: Alles auswählen
from itertools import combinations
features = ['Bayern', 'NRW', 'BB', 'BaWü','Berlin','Bremen','HH','Hessen','MV','NSN','RLP','SH','SL','SN','SNA','TH']
a=list(combinations(features,15))
print(a)
b=list(combinations(features,1))
print('')
print(b)
print('')
result = zip(a, b)
result_set = set(result)
print(result_set)
Code: Alles auswählen
[('Bayern', 'NRW', 'BB', 'BaWü', 'Berlin', 'Bremen', 'HH', 'Hessen', 'MV', 'NSN', 'RLP', 'SH', 'SL', 'SN', 'SNA'),
('Bayern', 'NRW', 'BB', 'BaWü', 'Berlin', 'Bremen', 'HH', 'Hessen', 'MV', 'NSN', 'RLP', 'SH', 'SL', 'SN', 'TH'),
('Bayern', 'NRW', 'BB', 'BaWü', 'Berlin', 'Bremen', 'HH', 'Hessen', 'MV', 'NSN', 'RLP', 'SH', 'SL', 'SNA', 'TH'),
('Bayern', 'NRW', 'BB', 'BaWü', 'Berlin', 'Bremen', 'HH', 'Hessen', 'MV', 'NSN', 'RLP', 'SH', 'SN', 'SNA', 'TH'),
('Bayern', 'NRW', 'BB', 'BaWü', 'Berlin', 'Bremen', 'HH', 'Hessen', 'MV', 'NSN', 'RLP', 'SL', 'SN', 'SNA', 'TH'),
('Bayern', 'NRW', 'BB', 'BaWü', 'Berlin', 'Bremen', 'HH', 'Hessen', 'MV', 'NSN', 'SH', 'SL', 'SN', 'SNA', 'TH'),
('Bayern', 'NRW', 'BB', 'BaWü', 'Berlin', 'Bremen', 'HH', 'Hessen', 'MV', 'RLP', 'SH', 'SL', 'SN', 'SNA', 'TH'),
('Bayern', 'NRW', 'BB', 'BaWü', 'Berlin', 'Bremen', 'HH', 'Hessen', 'NSN', 'RLP', 'SH', 'SL', 'SN', 'SNA', 'TH'),
('Bayern', 'NRW', 'BB', 'BaWü', 'Berlin', 'Bremen', 'HH', 'MV', 'NSN', 'RLP', 'SH', 'SL', 'SN', 'SNA', 'TH'),
('Bayern', 'NRW', 'BB', 'BaWü', 'Berlin', 'Bremen', 'Hessen', 'MV', 'NSN', 'RLP', 'SH', 'SL', 'SN', 'SNA', 'TH'),
('Bayern', 'NRW', 'BB', 'BaWü', 'Berlin', 'HH', 'Hessen', 'MV', 'NSN', 'RLP', 'SH', 'SL', 'SN', 'SNA', 'TH'),
('Bayern', 'NRW', 'BB', 'BaWü', 'Bremen', 'HH', 'Hessen', 'MV', 'NSN', 'RLP', 'SH', 'SL', 'SN', 'SNA', 'TH'),
('Bayern', 'NRW', 'BB', 'Berlin', 'Bremen', 'HH', 'Hessen', 'MV', 'NSN', 'RLP', 'SH', 'SL', 'SN', 'SNA', 'TH'),
('Bayern', 'NRW', 'BaWü', 'Berlin', 'Bremen', 'HH', 'Hessen', 'MV', 'NSN', 'RLP', 'SH', 'SL', 'SN', 'SNA', 'TH'),
('Bayern', 'BB', 'BaWü', 'Berlin', 'Bremen', 'HH', 'Hessen', 'MV', 'NSN', 'RLP', 'SH', 'SL', 'SN', 'SNA', 'TH'),
('NRW', 'BB', 'BaWü', 'Berlin', 'Bremen', 'HH', 'Hessen', 'MV', 'NSN', 'RLP', 'SH', 'SL', 'SN', 'SNA', 'TH')]
[('Bayern',), ('NRW',), ('BB',), ('BaWü',), ('Berlin',), ('Bremen',), ('HH',), ('Hessen',), ('MV',), ('NSN',), ('RLP',), ('SH',), ('SL',), ('SN',), ('SNA',), ('TH',)]
{(('Bayern', 'NRW', 'BB', 'BaWü', 'Berlin', 'Bremen', 'HH', 'Hessen', 'MV', 'NSN', 'RLP', 'SH', 'SN', 'SNA', 'TH'), ('BaWü',)),
(('Bayern', 'NRW', 'BB', 'BaWü', 'Berlin', 'Bremen', 'HH', 'Hessen', 'MV', 'NSN', 'RLP', 'SH', 'SL', 'SNA', 'TH'), ('BB',)),
(('Bayern', 'NRW', 'BB', 'BaWü', 'Berlin', 'Bremen', 'HH', 'Hessen', 'MV', 'NSN', 'RLP', 'SH', 'SL', 'SN', 'SNA'), ('Bayern',)),
(('Bayern', 'NRW', 'BB', 'BaWü', 'Bremen', 'HH', 'Hessen', 'MV', 'NSN', 'RLP', 'SH', 'SL', 'SN', 'SNA', 'TH'), ('SH',)),
(('NRW', 'BB', 'BaWü', 'Berlin', 'Bremen', 'HH', 'Hessen', 'MV', 'NSN', 'RLP', 'SH', 'SL', 'SN', 'SNA', 'TH'), ('TH',)),
(('Bayern', 'NRW', 'BB', 'BaWü', 'Berlin', 'Bremen', 'HH', 'Hessen', 'MV', 'NSN', 'SH', 'SL', 'SN', 'SNA', 'TH'), ('Bremen',)),
(('Bayern', 'NRW', 'BB', 'BaWü', 'Berlin', 'HH', 'Hessen', 'MV', 'NSN', 'RLP', 'SH', 'SL', 'SN', 'SNA', 'TH'), ('RLP',)),
(('Bayern', 'BB', 'BaWü', 'Berlin', 'Bremen', 'HH', 'Hessen', 'MV', 'NSN', 'RLP', 'SH', 'SL', 'SN', 'SNA', 'TH'), ('SNA',)),
(('Bayern', 'NRW', 'BB', 'BaWü', 'Berlin', 'Bremen', 'HH', 'Hessen', 'MV', 'RLP', 'SH', 'SL', 'SN', 'SNA', 'TH'), ('HH',)),
(('Bayern', 'NRW', 'BB', 'BaWü', 'Berlin', 'Bremen', 'HH', 'Hessen', 'MV', 'NSN', 'RLP', 'SH', 'SL', 'SN', 'TH'), ('NRW',)),
(('Bayern', 'NRW', 'BB', 'BaWü', 'Berlin', 'Bremen', 'Hessen', 'MV', 'NSN', 'RLP', 'SH', 'SL', 'SN', 'SNA', 'TH'), ('NSN',)),
(('Bayern', 'NRW', 'BB', 'Berlin', 'Bremen', 'HH', 'Hessen', 'MV', 'NSN', 'RLP', 'SH', 'SL', 'SN', 'SNA', 'TH'), ('SL',)),
(('Bayern', 'NRW', 'BB', 'BaWü', 'Berlin', 'Bremen', 'HH', 'Hessen', 'NSN', 'RLP', 'SH', 'SL', 'SN', 'SNA', 'TH'), ('Hessen',)),
(('Bayern', 'NRW', 'BaWü', 'Berlin', 'Bremen', 'HH', 'Hessen', 'MV', 'NSN', 'RLP', 'SH', 'SL', 'SN', 'SNA', 'TH'), ('SN',)),
(('Bayern', 'NRW', 'BB', 'BaWü', 'Berlin', 'Bremen', 'HH', 'Hessen', 'MV', 'NSN', 'RLP', 'SL', 'SN', 'SNA', 'TH'), ('Berlin',)),
(('Bayern', 'NRW', 'BB', 'BaWü', 'Berlin', 'Bremen', 'HH', 'MV', 'NSN', 'RLP', 'SH', 'SL', 'SN', 'SNA', 'TH'), ('MV',))}
('Bayern', 'NRW', 'BB', 'BaWü', 'Berlin', 'Bremen', 'HH', 'Hessen', 'MV', 'NSN', 'RLP', 'SH', 'SN', 'SNA', 'TH'), ('BaWü',))
Hier kommt ja BaWü in der Linken Liste vor. Eigentlich sollte es so sein
('Bayern', 'NRW', 'BB', 'BaWü', 'Berlin', 'Bremen', 'HH', 'Hessen', 'MV', 'NSN', 'RLP', 'SH', 'SN', 'SNA', 'TH'), ('SL',))
weil links 'SL' nicht drine ist.
Das gleiche dann mit 14x1,13x3, ... , 8x8.
Ich bin noch ein Python noob und kenne mich da nicht so richtig aus. Es gibt bestimmt effiziente Methode dies zu berechnen.
Ich bin für jede Hilfe dankbar,
Gruß
cellat