This notebook performs the same task as DistanceComputtion.ipynb but for the topics, ie it computes the distance matrix for each votation subjects based on the topic modelling results.


In [2]:
import pandas as pd
import glob
import os
import numpy as np
import matplotlib.pyplot as plt
import sklearn
import sklearn.ensemble
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score, train_test_split, cross_val_predict, learning_curve
import sklearn.metrics

%matplotlib inline
%load_ext autoreload
%autoreload 2

# There's a lot of columns in the DF. 
# Therefore, we add this option so that we can see more columns
pd.options.display.max_columns = 100

In [38]:
path = '../datas/treated_data/Vote/'
voting_no_topics_df = pd.read_csv(path+'legiid_47-50.csv')
voting_no_topics_df = voting_no_topics_df.drop_duplicates(['BillTitle'], keep = 'last')
print(len(voting_no_topics_df))
voting_no_topics_df.head(3)


3415
Out[38]:
Unnamed: 0 VoteEnd BillTitle BusinessTitle Subject MeaningNo MeaningYes BusinessShortNumber ID IdLegislativePeriod IdSession
6 2615 2009-09-07 Arrêté fédéral concernant la contribution de l... Réduction des disparités économiques et social... Entrer en matière Proposition de la minorité Stamm (ne pas entre... Proposition de la majorité (entrer en matière) 9.0550 6398 48 4811
7 2616 2009-09-07 Renforcement du Traité sur la non-prolifératio... Renforcement du Traité sur la non-prolifératio... NaN Rejeter la motion Adopter la motion 7.3676 6400 48 4811
8 2617 2009-09-07 Une zone exempte d'armes nucléaires au coeur d... Une zone exempte d'armes nucléaires au coeur d... NaN Rejeter la motion Adopter la motion 7.3802 6401 48 4811

In [22]:
voting_no_topics_df.shape


Out[22]:
(8573, 11)

In [4]:
path = '../../datas/nlp_results/'
voting_df = pd.read_csv(path+'voting_with_topics.csv')

print('Entries in the DataFrame',voting_df.shape)

#Dropping the useless column
voting_df = voting_df.drop('Unnamed: 0',1)

#Putting numerical values into the columns that should have numerical values
#print(voting_df.columns.values)

num_cols = ['Decision', ' armée', ' asile / immigration', ' assurances', ' budget', ' dunno', ' entreprise/ finance',
           ' environnement', ' famille / enfants', ' imposition', ' politique internationale', ' retraite  ']
voting_df[num_cols] = voting_df[num_cols].apply(pd.to_numeric)

#Inserting the full name at the second position
voting_df.insert(2,'Name', voting_df['FirstName'] + ' ' + voting_df['LastName'])

voting_df.head(5)


Entries in the DataFrame (1713854, 39)
Out[4]:
BillTitle BusinessNumber Name BusinessShortNumber BusinessTitle Canton CantonID CantonName Decision DecisionText FirstName ID IdLegislativePeriod IdSession IdVote Language LastName MeaningNo MeaningYes ParlGroupCode ParlGroupColour ParlGroupName ParlGroupNameAbbreviation PersonNumber RegistrationNumber Subject VoteEnd text armée asile / immigration assurances budget dunno entreprise/ finance environnement famille / enfants imposition politique internationale retraite
0 Arrêté fédéral concernant la contribution de l... 20090055 Chiara Simoneschi-Cortesi 9.055 Réduction des disparités économiques et social... TI 21 Tessin 7 Die Präsidentin/der Präsident stimmt nicht Chiara 1183799 48 4811 6392 FR Simoneschi-Cortesi Proposition de la minorité Stamm (ne pas entre... Proposition de la majorité (entrer en matière) CEg #FFFFA500 Groupe conservateur-catholique Groupe K 511 2652 Entrer en matière 2009-09-07T15:44:26.69 Arrêté fédéral concernant la contribution de l... 0.006995 0.930066 0.006993 0.006993 0.006993 0.006994 0.006993 0.006993 0.006993 0.006993 0.006993
1 Arrêté fédéral concernant la contribution de l... 20090055 Pascale Bruderer Wyss 9.055 Réduction des disparités économiques et social... AG 1 Aargau 5 Hat nicht teilgenommen Pascale 1183800 48 4811 6392 FR Bruderer Wyss Proposition de la minorité Stamm (ne pas entre... Proposition de la majorité (entrer en matière) S #FFFF0000 Groupe socialiste Groupe S 823 2652 Entrer en matière 2009-09-07T15:44:26.69 Arrêté fédéral concernant la contribution de l... 0.006995 0.930066 0.006993 0.006993 0.006993 0.006994 0.006993 0.006993 0.006993 0.006993 0.006993
2 Arrêté fédéral concernant la contribution de l... 20090055 Guy Parmelin 9.055 Réduction des disparités économiques et social... VD 23 Waadt 5 Hat nicht teilgenommen Guy 1183801 48 4811 6392 FR Parmelin Proposition de la minorité Stamm (ne pas entre... Proposition de la majorité (entrer en matière) V #FF006400 Groupe des Paysans, Artisans et Bourgeois Groupe B 1108 2652 Entrer en matière 2009-09-07T15:44:26.69 Arrêté fédéral concernant la contribution de l... 0.006995 0.930066 0.006993 0.006993 0.006993 0.006994 0.006993 0.006993 0.006993 0.006993 0.006993
3 Arrêté fédéral concernant la contribution de l... 20090055 Jean-René Germanier 9.055 Réduction des disparités économiques et social... VS 24 Wallis 5 Hat nicht teilgenommen Jean-René 1183802 48 4811 6392 FR Germanier Proposition de la minorité Stamm (ne pas entre... Proposition de la majorité (entrer en matière) RL #FF00BFFF Groupe radical-démocratique Groupe R 1117 2652 Entrer en matière 2009-09-07T15:44:26.69 Arrêté fédéral concernant la contribution de l... 0.006995 0.930066 0.006993 0.006993 0.006993 0.006994 0.006993 0.006993 0.006993 0.006993 0.006993
4 Arrêté fédéral concernant la contribution de l... 20090055 Edi Engelberger 9.055 Réduction des disparités économiques et social... NW 14 Nidwalden 5 Hat nicht teilgenommen Edi 1183803 48 4811 6392 FR Engelberger Proposition de la minorité Stamm (ne pas entre... Proposition de la majorité (entrer en matière) RL #FF00BFFF Groupe radical-démocratique Groupe R 318 2652 Entrer en matière 2009-09-07T15:44:26.69 Arrêté fédéral concernant la contribution de l... 0.006995 0.930066 0.006993 0.006993 0.006993 0.006994 0.006993 0.006993 0.006993 0.006993 0.006993

We first erase the duplicates and only collect the results of the topic modelling for each votation


In [81]:
voting_df_copy = voting_df.drop_duplicates(['BillTitle', 'BusinessTitle'], keep = 'last')
print(len(voting_df_copy))
for i in voting_df_copy.index:
    if str(voting_df_copy.loc[i].BillTitle) == 'nan':
            voting_df_copy.set_value(i,'BillTitle',voting_df_copy.loc[i].BusinessTitle)
            
voting_df_copy = voting_df_copy.drop_duplicates(['BillTitle'], keep = 'last')
print(len(voting_df_copy))


3470
3415

In [82]:
voting_subjects = voting_df_copy['BillTitle'].unique()
topics = [' armée', ' asile / immigration', ' assurances', ' budget', ' dunno', ' entreprise/ finance', ' environnement', ' famille / enfants', ' imposition', ' politique internationale', ' retraite  ']
print("{n} subjects voted in the parliament from 2009 to 2015".format(n=voting_subjects.shape[0]))
voting_df_copy = voting_df_copy.set_index(['BillTitle'])
voting_df_copy = voting_df_copy[topics]
voting_df_copy.head()


3415 subjects voted in the parliament from 2009 to 2015
Out[82]:
armée asile / immigration assurances budget dunno entreprise/ finance environnement famille / enfants imposition politique internationale retraite
BillTitle
Arrêté fédéral concernant la contribution de la Suisse en faveur de la Bulgarie et de la Roumanie au titre de la réduction des disparités économiques et sociales dans l'Union européenne élargie 0.006995 0.930066 0.006993 0.006993 0.006993 0.006994 0.006993 0.006993 0.006993 0.006993 0.006993
Renforcement du Traité sur la non-prolifération des armes nucléaires 0.018182 0.018185 0.018183 0.271557 0.564795 0.018183 0.018182 0.018183 0.018183 0.018183 0.018184
Une zone exempte d'armes nucléaires au coeur de l'Europe 0.015152 0.389858 0.015152 0.232520 0.256405 0.015152 0.015152 0.015152 0.015152 0.015154 0.015152
Boycott de la liste des terroristes établie par l'ONU 0.022727 0.772700 0.022731 0.022729 0.022728 0.022728 0.022728 0.022736 0.022731 0.022732 0.022731
Ratification du Protocole de l'ONU sur les armes à feu et mise en oeuvre de l'instrument Thalmann 0.012987 0.549980 0.012987 0.012987 0.333134 0.012987 0.012987 0.012987 0.012987 0.012987 0.012987

We then implement the distance function, which is simply the euclidean distance between the vectors whose entries are the percentage for each topic computed by topic modelling.


In [84]:
def distance(p1, p2):
    return np.linalg.norm(p1-p2)

We then apply it to every pairs of subjects in order to compute the distance matrix.


In [85]:
n = voting_subjects.shape[0]
distanceMatrix = np.zeros((n,n))

for i in range(n):
    if i % 10 == 0:
        print("Compute distances from subject " + str(i))
    for j in range(n):
        distanceMatrix[i][j] = distance(voting_df_copy.loc[voting_subjects[i]].values,
                                        voting_df_copy.loc[voting_subjects[j]].values)
print("Mean distance : {d}".format(d = np.mean(distanceMatrix)))


Compute distances from subject 0
Compute distances from subject 10
Compute distances from subject 20
Compute distances from subject 30
Compute distances from subject 40
Compute distances from subject 50
Compute distances from subject 60
Compute distances from subject 70
Compute distances from subject 80
Compute distances from subject 90
Compute distances from subject 100
Compute distances from subject 110
Compute distances from subject 120
Compute distances from subject 130
Compute distances from subject 140
Compute distances from subject 150
Compute distances from subject 160
Compute distances from subject 170
Compute distances from subject 180
Compute distances from subject 190
Compute distances from subject 200
Compute distances from subject 210
Compute distances from subject 220
Compute distances from subject 230
Compute distances from subject 240
Compute distances from subject 250
Compute distances from subject 260
Compute distances from subject 270
Compute distances from subject 280
Compute distances from subject 290
Compute distances from subject 300
Compute distances from subject 310
Compute distances from subject 320
Compute distances from subject 330
Compute distances from subject 340
Compute distances from subject 350
Compute distances from subject 360
Compute distances from subject 370
Compute distances from subject 380
Compute distances from subject 390
Compute distances from subject 400
Compute distances from subject 410
Compute distances from subject 420
Compute distances from subject 430
Compute distances from subject 440
Compute distances from subject 450
Compute distances from subject 460
Compute distances from subject 470
Compute distances from subject 480
Compute distances from subject 490
Compute distances from subject 500
Compute distances from subject 510
Compute distances from subject 520
Compute distances from subject 530
Compute distances from subject 540
Compute distances from subject 550
Compute distances from subject 560
Compute distances from subject 570
Compute distances from subject 580
Compute distances from subject 590
Compute distances from subject 600
Compute distances from subject 610
Compute distances from subject 620
Compute distances from subject 630
Compute distances from subject 640
Compute distances from subject 650
Compute distances from subject 660
Compute distances from subject 670
Compute distances from subject 680
Compute distances from subject 690
Compute distances from subject 700
Compute distances from subject 710
Compute distances from subject 720
Compute distances from subject 730
Compute distances from subject 740
Compute distances from subject 750
Compute distances from subject 760
Compute distances from subject 770
Compute distances from subject 780
Compute distances from subject 790
Compute distances from subject 800
Compute distances from subject 810
Compute distances from subject 820
Compute distances from subject 830
Compute distances from subject 840
Compute distances from subject 850
Compute distances from subject 860
Compute distances from subject 870
Compute distances from subject 880
Compute distances from subject 890
Compute distances from subject 900
Compute distances from subject 910
Compute distances from subject 920
Compute distances from subject 930
Compute distances from subject 940
Compute distances from subject 950
Compute distances from subject 960
Compute distances from subject 970
Compute distances from subject 980
Compute distances from subject 990
Compute distances from subject 1000
Compute distances from subject 1010
Compute distances from subject 1020
Compute distances from subject 1030
Compute distances from subject 1040
Compute distances from subject 1050
Compute distances from subject 1060
Compute distances from subject 1070
Compute distances from subject 1080
Compute distances from subject 1090
Compute distances from subject 1100
Compute distances from subject 1110
Compute distances from subject 1120
Compute distances from subject 1130
Compute distances from subject 1140
Compute distances from subject 1150
Compute distances from subject 1160
Compute distances from subject 1170
Compute distances from subject 1180
Compute distances from subject 1190
Compute distances from subject 1200
Compute distances from subject 1210
Compute distances from subject 1220
Compute distances from subject 1230
Compute distances from subject 1240
Compute distances from subject 1250
Compute distances from subject 1260
Compute distances from subject 1270
Compute distances from subject 1280
Compute distances from subject 1290
Compute distances from subject 1300
Compute distances from subject 1310
Compute distances from subject 1320
Compute distances from subject 1330
Compute distances from subject 1340
Compute distances from subject 1350
Compute distances from subject 1360
Compute distances from subject 1370
Compute distances from subject 1380
Compute distances from subject 1390
Compute distances from subject 1400
Compute distances from subject 1410
Compute distances from subject 1420
Compute distances from subject 1430
Compute distances from subject 1440
Compute distances from subject 1450
Compute distances from subject 1460
Compute distances from subject 1470
Compute distances from subject 1480
Compute distances from subject 1490
Compute distances from subject 1500
Compute distances from subject 1510
Compute distances from subject 1520
Compute distances from subject 1530
Compute distances from subject 1540
Compute distances from subject 1550
Compute distances from subject 1560
Compute distances from subject 1570
Compute distances from subject 1580
Compute distances from subject 1590
Compute distances from subject 1600
Compute distances from subject 1610
Compute distances from subject 1620
Compute distances from subject 1630
Compute distances from subject 1640
Compute distances from subject 1650
Compute distances from subject 1660
Compute distances from subject 1670
Compute distances from subject 1680
Compute distances from subject 1690
Compute distances from subject 1700
Compute distances from subject 1710
Compute distances from subject 1720
Compute distances from subject 1730
Compute distances from subject 1740
Compute distances from subject 1750
Compute distances from subject 1760
Compute distances from subject 1770
Compute distances from subject 1780
Compute distances from subject 1790
Compute distances from subject 1800
Compute distances from subject 1810
Compute distances from subject 1820
Compute distances from subject 1830
Compute distances from subject 1840
Compute distances from subject 1850
Compute distances from subject 1860
Compute distances from subject 1870
Compute distances from subject 1880
Compute distances from subject 1890
Compute distances from subject 1900
Compute distances from subject 1910
Compute distances from subject 1920
Compute distances from subject 1930
Compute distances from subject 1940
Compute distances from subject 1950
Compute distances from subject 1960
Compute distances from subject 1970
Compute distances from subject 1980
Compute distances from subject 1990
Compute distances from subject 2000
Compute distances from subject 2010
Compute distances from subject 2020
Compute distances from subject 2030
Compute distances from subject 2040
Compute distances from subject 2050
Compute distances from subject 2060
Compute distances from subject 2070
Compute distances from subject 2080
Compute distances from subject 2090
Compute distances from subject 2100
Compute distances from subject 2110
Compute distances from subject 2120
Compute distances from subject 2130
Compute distances from subject 2140
Compute distances from subject 2150
Compute distances from subject 2160
Compute distances from subject 2170
Compute distances from subject 2180
Compute distances from subject 2190
Compute distances from subject 2200
Compute distances from subject 2210
Compute distances from subject 2220
Compute distances from subject 2230
Compute distances from subject 2240
Compute distances from subject 2250
Compute distances from subject 2260
Compute distances from subject 2270
Compute distances from subject 2280
Compute distances from subject 2290
Compute distances from subject 2300
Compute distances from subject 2310
Compute distances from subject 2320
Compute distances from subject 2330
Compute distances from subject 2340
Compute distances from subject 2350
Compute distances from subject 2360
Compute distances from subject 2370
Compute distances from subject 2380
Compute distances from subject 2390
Compute distances from subject 2400
Compute distances from subject 2410
Compute distances from subject 2420
Compute distances from subject 2430
Compute distances from subject 2440
Compute distances from subject 2450
Compute distances from subject 2460
Compute distances from subject 2470
Compute distances from subject 2480
Compute distances from subject 2490
Compute distances from subject 2500
Compute distances from subject 2510
Compute distances from subject 2520
Compute distances from subject 2530
Compute distances from subject 2540
Compute distances from subject 2550
Compute distances from subject 2560
Compute distances from subject 2570
Compute distances from subject 2580
Compute distances from subject 2590
Compute distances from subject 2600
Compute distances from subject 2610
Compute distances from subject 2620
Compute distances from subject 2630
Compute distances from subject 2640
Compute distances from subject 2650
Compute distances from subject 2660
Compute distances from subject 2670
Compute distances from subject 2680
Compute distances from subject 2690
Compute distances from subject 2700
Compute distances from subject 2710
Compute distances from subject 2720
Compute distances from subject 2730
Compute distances from subject 2740
Compute distances from subject 2750
Compute distances from subject 2760
Compute distances from subject 2770
Compute distances from subject 2780
Compute distances from subject 2790
Compute distances from subject 2800
Compute distances from subject 2810
Compute distances from subject 2820
Compute distances from subject 2830
Compute distances from subject 2840
Compute distances from subject 2850
Compute distances from subject 2860
Compute distances from subject 2870
Compute distances from subject 2880
Compute distances from subject 2890
Compute distances from subject 2900
Compute distances from subject 2910
Compute distances from subject 2920
Compute distances from subject 2930
Compute distances from subject 2940
Compute distances from subject 2950
Compute distances from subject 2960
Compute distances from subject 2970
Compute distances from subject 2980
Compute distances from subject 2990
Compute distances from subject 3000
Compute distances from subject 3010
Compute distances from subject 3020
Compute distances from subject 3030
Compute distances from subject 3040
Compute distances from subject 3050
Compute distances from subject 3060
Compute distances from subject 3070
Compute distances from subject 3080
Compute distances from subject 3090
Compute distances from subject 3100
Compute distances from subject 3110
Compute distances from subject 3120
Compute distances from subject 3130
Compute distances from subject 3140
Compute distances from subject 3150
Compute distances from subject 3160
Compute distances from subject 3170
Compute distances from subject 3180
Compute distances from subject 3190
Compute distances from subject 3200
Compute distances from subject 3210
Compute distances from subject 3220
Compute distances from subject 3230
Compute distances from subject 3240
Compute distances from subject 3250
Compute distances from subject 3260
Compute distances from subject 3270
Compute distances from subject 3280
Compute distances from subject 3290
Compute distances from subject 3300
Compute distances from subject 3310
Compute distances from subject 3320
Compute distances from subject 3330
Compute distances from subject 3340
Compute distances from subject 3350
Compute distances from subject 3360
Compute distances from subject 3370
Compute distances from subject 3380
Compute distances from subject 3390
Compute distances from subject 3400
Compute distances from subject 3410
Mean distance : 0.8547101104810126

We save the matrix. We observe as expected that the diagonal of the distance matrix contains only 0 as the distance between some subject and itself is 0.


In [86]:
import pandas as pd 
df = pd.DataFrame(distanceMatrix, index = voting_subjects, columns = voting_subjects)
df.to_csv("distanceMatrixSubjects.csv")
df.head()


Out[86]:
Arrêté fédéral concernant la contribution de la Suisse en faveur de la Bulgarie et de la Roumanie au titre de la réduction des disparités économiques et sociales dans l'Union européenne élargie Renforcement du Traité sur la non-prolifération des armes nucléaires Une zone exempte d'armes nucléaires au coeur de l'Europe Boycott de la liste des terroristes établie par l'ONU Ratification du Protocole de l'ONU sur les armes à feu et mise en oeuvre de l'instrument Thalmann Accompagner la construction du nouvel Etat du Kosovo Renonciation à des projets d'aide au développement menés par l'Etat Meilleure protection juridique pour les défenseurs de l'environnement La Suisse doit oeuvrer pour préserver l'unité de la Macédoine Promouvoir l'Observatoire du Conseil de l'Europe pour le respect des droits de l'homme en Palestine et en Israël Eclaircissements relatifs au Traité sur la non-prolifération des armes nucléaires Vérité des coûts au DFAE Halte au versement des contributions à la Bulgarie Contribution de la Suisse à la scolarisation d'un million d'enfants africains Prévention des génocides. Combattre les génocides culturels Loi fédérale sur l'examen et le contrôle de la sécurité technique (Loi sur le contrôle de la sécurité, LCS) Loi fédérale sur les installations de transport par conduites de combustibles ou carburants liquides ou gazeux (Loi sur les installations de transport par conduites, LITC) Arrêté fédéral concernant le crédit-cadre de la Confédération pour la réalisation de la 1ère étape de la 3e correction du Rhône (R3) pour la période de 2009 à 2014 Interdiction dès 2012 des ampoules inefficaces Remplacement des ampoules à filament par des ampoules économiques Révision partielle de la LTC. Requête de la Comcom, de la Comco et du Surveillant des prix Mesures visant à réguler la population des oiseaux piscivores et à indemniser les dégâts causés à la pêche professionnelle Politique énergétique extérieure de la Suisse Paysage ferroviaire suisse. Consolidation par les CFF Certificat énergétique cantonal des bâtiments Promouvoir l'efficacité énergétique dans le secteur du bâtiment en accordant des avantages en termes d'utilisation des sols pour la construction Extension de la taxe sur le CO2 aux émissions grises Les redevances de la SSR doivent être baissées de 20 pour cent Programmes de réduction des émissions de CO2 Faciliter l'engagement politique Transports publics en comparaison internationale Lutte contre les risques naturels Déchets. Des alternatives à l'incinération Manifestations aériennes en Suisse. Décréter un moratoire pour préserver le climat CO2 et gouvernement d'entreprise Loi fédérale sur l'assurance-maladie (LAMal) (Mesures pour endiguer l'évolution des coûts) Opération NAVFOR Atalanta. Service d'appui à l'étranger et révision de la LAAM Loi fédérale sur l'encouragement de la culture (Loi sur l'encouragement de la culture, LEC) Sécurité sociale pour les professions avec changements de place fréquents ou engagements de durée limitée Loi fédérale sur les allégements fiscaux en faveur des familles avec enfants Allègements fiscaux en faveur des familles qui gardent elles-mêmes leurs enfants Passer au système de l'imposition individuelle Loi fédérale sur des mesures de stabilisation conjoncturelle temporaire dans les domaines du marché du travail, des technologies de l'information et de la communication et du pouvoir d'achat Employés des services douaniers à la retraite vivant dans la Principauté du Liechtenstein. Imposition en fonction du domicile Traité douanier entre la Suisse et le Liechtenstein. Domicile légal des parents des employés des services douaniers Mesures incitatives pour la construction d'installations photovoltaïques Pas d'indemnités de départ pour le personnel de la Confédération Lutte contre la corruption. Interdire le pantouflage Pas de deniers publics pour les prix décernés par la Confédération Résoudre les problèmes de financement des projets FTP dans le cadre de la troisième phase des mesures de stabilisation conjoncturelle ... Promotion des exportations et du commerce des PME avec la Chine La croissance économique ne doit pas être un facteur pénalisant. Mettre au jour la progression à froid réelle Imposition d'après la dépense. Harmoniser les règles, renforcer les contrôles Prévoyance vieillesse 2020. Réforme Arrêté fédéral portant approbation de l’échange de notes entre la Suisse et l’UE concernant la reprise du règlement (UE) no 1077/2011 portant création d’une agence européenne pour la gestion opérationnelle des systèmes d’information à grande échelle (Développement de l’acquis de Schengen et de l’acquis «Dublin/Eurodac») (du 06.07.2016) Arrêté fédéral portant approbation de la convention des Nations Unies sur la transparence dans l’arbitrage entre investisseurs et Etats fondé sur des traités (Convention des Nations Unies sur la transparence) Arrêté fédéral concernant la représentation équitable des régions linguistiques au Conseil fédéral avec neuf membres Modifier l'article 32 alinéa 1 de l'ordonnance relative à l'admission, au séjour et à l'exercice d'une activité lucrative Punir plus sévèrement les agressions dont sont victimes les fonctionnaires et les autorités Défense du fédéralisme. Juridiction constitutionnelle limitée en faveur des cantons Autorité de protection de l'enfant et de l'adulte. Améliorer l'exécution Renégocier et adapter l'accord sur la libre circulation Appliquer le principe de causalité aux frais de recouvrement. Préciser l'article 106 CO Pour une étude sur les effets du nouveau droit du nom Pour une interdiction efficace du financement du terrorisme en Suisse Interdiction de se dissimuler le visage Franc fort. Publier les procès-verbaux de la BNS Loi fédérale sur la réforme de la prévoyance vieillesse 2020 Arrêté fédéral sur le financement additionnel de l’AVS par le biais d’un relèvement de la taxe sur la valeur ajoutée Arrêté fédéral sur la garantie de l’équilibre financier de l’AVS Dépolitiser les paramètres techniques de la LPP Aide sociale matérielle. Respecter la Constitution Lutte coordonnée contre la prolifération des punaises de lit en Suisse Commission fédérale pour les questions liées au vieillissement et aux relations entre les générations Test de paternité sans le consentement de la mère Eviter les conflits d'intérêts pour les experts médicaux Pour une assurance d'indemnités journalières efficace en cas de maladie Prévention et pilotage des prestations dans l'assurance-maladie Adaptation du financement de la formation médicale spécialisée et des professions médicales universitaires Instituer un médiateur dans le domaine du deuxième pilier Systèmes d'incitation. Encourager les gens à consommer des fruits et des légumes Renforcer les compétences de la Commission fédérale contre le racisme Uniformisation des paquets de cigarettes LAMal. Reconnaissance des prestations des pédicures-podologues diplômés pour les soins prodigués sur prescription médicale La prévention de la violence domestique. Une mission de santé publique Lutte contre l'islamophobie et l'antisémitisme par des mesures actives de prévention en complément des sanctions pour xénophobie ou racisme Congé parental Sortir les médecins-conseils du dilemme Loi fédérale concernant des mesures en matière de lutte contre le travail au noir Enregistrement de la durée du travail. Compléter immédiatement l'ordonnance 1 relative à la loi sur le travail Améliorer le taux de réussite aux examens de fin d'apprentissage Lutte contre les prix élevés en Suisse. Présenter une version élaguée de la révision de la loi sur les cartels Droit international par la Suisse. Appliquer les règles adoptées pour la Crimée annexée aux territoires occupés de Palestine Simplifier la répartition et le contrôle des aides financières destinées aux associations de consommateurs Analyser l'efficacité des mesures prises pour renforcer la sécurité de l'approvisionnement Préciser les bases légales qui régissent l'allocation d'aides financières aux associations de consommateurs Ne pas défavoriser les étables à stabulation entravée Dettes envers l'assurance-chômage. Que les chefs des entreprises en faillite passent à la caisse Dépistage du cancer Arrêté fédéral relatif à l’initiative populaire «Réparation de l’injustice faite aux enfants placés de force et aux victimes de mesures de coercition prises à des fins d’assistance (initiative sur la réparation)»
Arrêté fédéral concernant la contribution de la Suisse en faveur de la Bulgarie et de la Roumanie au titre de la réduction des disparités économiques et sociales dans l'Union européenne élargie 0.000000 1.101664 0.636730 0.165047 0.501155 0.117361 1.042010 1.088768 0.403387 0.062863 1.084145 0.880115 0.557675 1.094996 0.244502 1.220921 1.251844 1.188197 1.065885 1.220935 1.105868 1.172565 0.403402 1.073658 1.136010 0.910715 1.072574 1.136001 0.244488 0.165028 0.909924 0.743737 1.041999 1.065907 1.135995 1.129739 0.390801 1.259505 1.110287 1.281431 1.243285 1.136004 1.309310 0.981140 1.026340 1.220933 1.042006 1.086773 1.136004 1.259502 ... 0.552391 1.220931 1.188193 1.136003 0.806474 0.309872 1.090482 1.167950 1.220927 1.188196 1.188200 0.165039 1.220928 0.880115 0.745585 1.071230 1.021756 1.220929 1.111903 1.220924 1.136004 1.088931 0.403396 0.561389 1.042008 0.561071 1.188198 1.081984 1.243286 1.188193 1.220925 0.704765 1.077974 1.243289 0.854437 0.566264 1.042012 1.136002 0.628033 1.101137 1.136008 0.843345 0.117354 1.060109 1.097282 1.044066 1.064944 1.200885 1.042011 1.327827
Renforcement du Traité sur la non-prolifération des armes nucléaires 1.101664 0.000000 0.484605 0.961878 0.635254 1.001474 0.777685 0.671942 0.777686 1.047556 0.138791 0.552090 0.832524 0.842955 0.897646 1.001471 0.806311 0.961890 0.805933 1.001489 0.364179 0.727760 0.777676 0.650225 0.897663 0.705414 0.380771 0.277468 0.897653 0.961891 0.673609 0.656626 0.592797 0.805964 0.897641 0.886917 0.728810 1.047557 0.863157 1.073489 1.028258 0.897657 1.106217 0.590100 0.321517 0.773032 0.777680 0.832692 0.897654 1.047553 ... 0.582087 1.001485 0.961888 0.897657 0.421428 0.960083 0.837529 0.935481 1.001480 0.961888 0.961890 0.961881 1.001482 0.552090 0.760470 0.812989 0.746594 1.001483 0.864263 1.001478 0.897654 0.835507 0.777680 0.808993 0.777685 0.708023 0.961891 0.826431 1.028257 0.961886 1.001477 0.764624 0.821852 1.028261 0.849830 0.847396 0.777690 0.897653 0.854812 0.850916 0.897662 0.389596 1.001481 0.525031 0.691294 0.471200 0.437764 0.975930 0.777689 1.127814
Une zone exempte d'armes nucléaires au coeur de l'Europe 0.636730 0.484605 0.000000 0.495625 0.282416 0.534985 0.696957 0.607673 0.333240 0.581501 0.448593 0.427464 0.472007 0.770419 0.433763 0.941126 0.770887 0.898722 0.729380 0.941143 0.490476 0.680762 0.333233 0.582962 0.829315 0.483772 0.563298 0.605049 0.433769 0.495639 0.461501 0.328133 0.518043 0.729413 0.829292 0.818494 0.316832 0.990199 0.792345 1.017688 0.969684 0.829308 1.052267 0.577768 0.525018 0.733458 0.696951 0.759044 0.829305 0.990195 ... 0.253411 0.941140 0.898718 0.829308 0.380464 0.520516 0.764344 0.870772 0.941134 0.898720 0.898723 0.495628 0.941136 0.427464 0.503997 0.737171 0.663227 0.941138 0.793837 0.941132 0.829306 0.762131 0.333236 0.449090 0.696955 0.264789 0.898723 0.752170 0.969684 0.898717 0.941131 0.483887 0.746935 0.969688 0.640466 0.491376 0.696961 0.829305 0.528038 0.779122 0.829313 0.366388 0.534993 0.599530 0.628203 0.563082 0.573395 0.914193 0.696960 1.075022
Boycott de la liste des terroristes établie par l'ONU 0.165047 0.961878 0.495625 0.000000 0.383158 0.047686 0.898202 0.947079 0.238341 0.102184 0.941761 0.715068 0.430880 0.953683 0.079455 1.096444 1.129063 1.060629 0.921535 1.096461 0.966146 1.041197 0.238356 0.930515 1.003123 0.791842 0.929264 1.003115 0.079441 0.000020 0.784763 0.613049 0.898190 0.921559 1.003106 0.992498 0.269489 1.138465 0.971743 1.162247 1.120829 1.003113 1.192390 0.843463 0.895275 1.096458 0.898198 0.944784 1.003119 1.138461 ... 0.425558 1.096458 1.060618 1.003119 0.687252 0.223650 0.949049 1.036267 1.096450 1.060625 1.060629 0.000013 1.096455 0.715068 0.602580 0.927712 0.870115 1.096456 0.972376 1.096451 1.003116 0.947267 0.238349 0.427966 0.898198 0.427639 1.060630 0.939270 1.120829 1.060624 1.096450 0.565530 0.935488 1.120826 0.729102 0.444156 0.898207 1.003115 0.508854 0.960726 1.003123 0.704252 0.047692 0.913005 0.956306 0.894747 0.920446 1.072789 0.898201 1.212353
Ratification du Protocole de l'ONU sur les armes à feu et mise en oeuvre de l'instrument Thalmann 0.501155 0.635254 0.282416 0.383158 0.000000 0.413958 0.793255 0.851640 0.303756 0.452757 0.654287 0.569268 0.463327 0.859356 0.340591 1.015146 1.051434 0.975852 0.822547 1.015163 0.752565 0.955972 0.303755 0.832595 0.912135 0.752067 0.622095 0.636493 0.340591 0.383167 0.733566 0.581370 0.793239 0.822577 0.912115 0.902840 0.113838 1.060916 0.878984 1.086682 1.041746 0.912128 1.119208 0.626609 0.536454 1.015160 0.793249 0.849088 0.912127 1.060913 ... 0.059836 1.015159 0.975848 0.912128 0.310611 0.429973 0.853831 0.950418 1.015153 0.975850 0.975853 0.383159 1.015155 0.569268 0.555996 0.829462 0.764499 1.015157 0.880514 1.015151 0.912127 0.851849 0.303755 0.448405 0.793254 0.448202 0.975853 0.842949 1.041746 0.975847 1.015151 0.526962 0.838151 1.041750 0.686029 0.480261 0.793259 0.912125 0.528000 0.867167 0.912133 0.379118 0.413962 0.672787 0.862266 0.638139 0.638412 0.990422 0.793258 1.140677

5 rows × 3415 columns

We finally compute for each subject the topic which appears the most.


In [87]:
topic_df = pd.DataFrame(index = voting_subjects)
topic_df['Topic'] = voting_df_copy[topics].idxmax(axis=1)
topic_df.head()


Out[87]:
Topic
Arrêté fédéral concernant la contribution de la Suisse en faveur de la Bulgarie et de la Roumanie au titre de la réduction des disparités économiques et sociales dans l'Union européenne élargie asile / immigration
Renforcement du Traité sur la non-prolifération des armes nucléaires dunno
Une zone exempte d'armes nucléaires au coeur de l'Europe asile / immigration
Boycott de la liste des terroristes établie par l'ONU asile / immigration
Ratification du Protocole de l'ONU sur les armes à feu et mise en oeuvre de l'instrument Thalmann asile / immigration

In [88]:
topic_df.to_csv("SubjectTopicMapping.csv")