<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Inès de Rosnay</title>
        <link>https://ines2r.github.io/</link>
        <description>Recent content on Inès de Rosnay</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en-us</language>
        <lastBuildDate>Sat, 14 Feb 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://ines2r.github.io/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Mapping the French National Assembly: A Network Analysis of voting behavior (2012–2024)</title>
        <link>https://ines2r.github.io/p/networks-analysis/</link>
        <pubDate>Sat, 14 Feb 2026 00:00:00 +0000</pubDate>
        
        <guid>https://ines2r.github.io/p/networks-analysis/</guid>
        <description>&lt;img src="https://ines2r.github.io/p/networks-analysis/Cover.png" alt="Featured image of post Mapping the French National Assembly: A Network Analysis of voting behavior (2012–2024)" /&gt;&lt;style&gt;
/* 2. LE TABLEAU (Général) */
  .article-content table {
    width: 100% !important;
    display: table !important;
    border-collapse: collapse;
    margin-bottom: 2em;
  }

  /* Par défaut, on laisse les colonnes s&#39;ajuster (pour le tableau des couleurs) */
  .article-content td {
    vertical-align: top !important; 
    padding: 10px !important;
    border-bottom: 1px solid #eee;
  }

  /* 3. EXCEPTION POUR LES GRAPHES (Législatures) */
  /* Si le tableau a 3 colonnes, on force les largeurs égales pour vos graphes */
  .article-content table tr th:first-child:nth-last-child(3),
  .article-content table tr th:first-child:nth-last-child(3) ~ th,
  .article-content table tr td:first-child:nth-last-child(3),
  .article-content table tr td:first-child:nth-last-child(3) ~ td {
    width: 33.33% !important;
  }

  /* 4. GESTION INTELLIGENTE DES IMAGES */
  .article-content table img {
    height: auto !important;
    display: block;
  }

  /* Si l&#39;image est un &#34;badge&#34; de couleur (Shields.io), on la garde petite */
  .article-content table img[src*=&#34;shields.io&#34;] {
    width: 90px !important; /* Taille fixe pour vos carrés de couleur */
    display: inline-block;
  }

  /* Si c&#39;est un graphique (pas un badge), il prend toute la place de sa colonne */
  .article-content table img:not([src*=&#34;shields.io&#34;]) {
    width: 100% !important;
    max-width: none !important;
  }
&lt;/style&gt;
&lt;hr&gt;
&lt;h1 id=&#34;networks-analysis&#34;&gt;Networks Analysis
&lt;/h1&gt;&lt;p&gt;This project uses Graph Theory to analyze voting patterns in the French National Assembly. By treating MPs as nodes and shared votes as edges, we reveal the structure of political life, moving beyond simple party labels.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;1-introduction-and-political-context&#34;&gt;1. Introduction and Political Context
&lt;/h2&gt;&lt;h3 id=&#34;11-institutional-framework-the-french-national-assembly&#34;&gt;1.1 Institutional Framework: The French National Assembly
&lt;/h3&gt;&lt;p&gt;The French National Assembly is the lower chamber of the French bicameral parliament. It is composed of &lt;strong&gt;577 Members of Parliament&lt;/strong&gt; elected by a two-round single-member plurality voting system in geographically defined constituencies. Members of Parliament form &lt;strong&gt;political groups&lt;/strong&gt; organized according to their electoral and ideological affinities.&lt;/p&gt;
&lt;p&gt;For illustrative purposes, Figure 1 presents the composition of three consecutives legislatures by political group:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;14th Legislature&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;15th Legislature&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;16th Legislature&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;L14_distribution.png&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;L14_distribution.png&#34; style=&#34;height: 220px; cursor: zoom-in;&#34;&gt;&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;L15_distribution.png&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;L15_distribution.png&#34; style=&#34;height: 220px; cursor: zoom-in;&#34;&gt;&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;L16_distribution.png&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;L16_distribution.png&#34; style=&#34;height: 220px; cursor: zoom-in;&#34;&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Figure 1:&lt;/strong&gt; Distribution of the 577 Members of Parliament by political group.&lt;/p&gt;
&lt;p&gt;Each Member of Parliament (MP) in the National Assembly is affiliated with a specific political group. While these groups often correspond to a single political party, this is not always the case. A notable example is the Rassemblement National (RN) during the 15th legislature (2017–2022): although several MPs were members of this party, they did not form an official parliamentary group.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We have more than 577 MPs because of resignations and replacements during the legislature.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;12-motivations-and-research-questions&#34;&gt;1.2 Motivations and Research Questions
&lt;/h3&gt;&lt;p&gt;The objective of this project is to map the various political currents and their relative positioning by leveraging parliamentary voting data. Several questions naturally arise:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;What is the true ideological landscape beyond group labels?&lt;/li&gt;
&lt;li&gt;Does the historical left-right divide still exist?&lt;/li&gt;
&lt;li&gt;How has this structure changed between two major legislatures?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Our approach:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Treats each ballot vote as a &lt;strong&gt;dimension in a political vector space&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Uses &lt;strong&gt;cosine distance&lt;/strong&gt; as a similarity metric&lt;/li&gt;
&lt;li&gt;Applies &lt;strong&gt;spatialization&lt;/strong&gt; techniques (force-directed layout) and &lt;strong&gt;principal component analysis&lt;/strong&gt; to visualize these data.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;13-overview-of-main-political-forces-and-ideological-positioning&#34;&gt;1.3 Overview of Main Political Forces and Ideological Positioning
&lt;/h3&gt;&lt;p&gt;To facilitate the interpretation of the spatialization graphs, the table below summarizes the main political groups, their associated colors in our study, and their core principles according to their official platforms.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Color&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Party/Group&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Brief Description (Official Stance)&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Source&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;img src=&#34;https://img.shields.io/static/v1?label=&amp;message=%20&amp;color=e74c3c&#34; style=&#34;width:20px !important; height:20px !important; display:inline;&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;LFI / LFI-NUPES&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Focuses on ecological planning, wealth redistribution, and a constitutional shift to a 6th Republic.&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://lafranceinsoumise.fr&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;lafranceinsoumise.fr&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;img src=&#34;https://img.shields.io/static/v1?label=&amp;message=%20&amp;color=2ecc71&#34; style=&#34;width:20px !important; height:20px !important; display:inline;&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;ECOLO&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Advocates for environmental sustainability, social-ecology, and biodiversity protection.&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://lesecologistes.fr&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;lesecologistes.fr&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;img src=&#34;https://img.shields.io/static/v1?label=&amp;message=%20&amp;color=e84393&#34; style=&#34;width:20px !important; height:20px !important; display:inline;&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;SRC / SER / SOC&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Social-democratic model, defense of public services, and labor rights (Historical Socialist groups).&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://parti-socialiste.fr&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;parti-socialiste.fr&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;img src=&#34;https://img.shields.io/static/v1?label=&amp;message=%20&amp;color=c0392b&#34; style=&#34;width:20px !important; height:20px !important; display:inline;&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;GDR&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Defense of the working class, social justice, and opposition to liberal economic policies.&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://pcf.fr&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;pcf.fr&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;img src=&#34;https://img.shields.io/static/v1?label=&amp;message=%20&amp;color=f1c40f&#34; style=&#34;width:20px !important; height:20px !important; display:inline;&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;REN / LREM&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Supports economic competitiveness, full employment policies, and European integration.&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://parti-renaissance.fr&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;parti-renaissance.fr&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;img src=&#34;https://img.shields.io/static/v1?label=&amp;message=%20&amp;color=e67e22&#34; style=&#34;width:20px !important; height:20px !important; display:inline;&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;DEM / RRDP&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Centrist approach, institutional balance, and education (includes center-left Radicals).&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.mouvementdemocrate.fr&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;mouvementdemocrate.fr&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;img src=&#34;https://img.shields.io/static/v1?label=&amp;message=%20&amp;color=8e44ad&#34; style=&#34;width:20px !important; height:20px !important; display:inline;&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;HOR&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Focuses on long-term national stability, security, and supporting the presidential majority.&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://horizonsleparti.fr&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;horizonsleparti.fr&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;img src=&#34;https://img.shields.io/static/v1?label=&amp;message=%20&amp;color=3498db&#34; style=&#34;width:20px !important; height:20px !important; display:inline;&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;UMP / LR&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Advocates for fiscal discipline, restoration of state authority, and economic liberalism.&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://republicains.fr&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;republicains.fr&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;img src=&#34;https://img.shields.io/static/v1?label=&amp;message=%20&amp;color=2564a4&#34; style=&#34;width:20px !important; height:20px !important; display:inline;&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;RN&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Prioritizes national sovereignty, immigration control, and national priority policies.&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://rassemblementnational.fr&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;rassemblementnational.fr&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;img src=&#34;https://img.shields.io/static/v1?label=&amp;message=%20&amp;color=d35400&#34; style=&#34;width:20px !important; height:20px !important; display:inline;&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;UDI / UAI&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Liberal-humanist and pro-European project centered on a social-market economy.&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://parti-udi.fr&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;parti-udi.fr&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;img src=&#34;https://img.shields.io/static/v1?label=&amp;message=%20&amp;color=95a5a6&#34; style=&#34;width:20px !important; height:20px !important; display:inline;&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;LIOT&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;An independent group focused on territorial interests, decentralization, and local governance.&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://groupe-liot.fr&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;groupe-liot.fr&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;img src=&#34;https://img.shields.io/static/v1?label=&amp;message=%20&amp;color=bdc3c7&#34; style=&#34;width:20px !important; height:20px !important; display:inline;&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;NI&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Non-affiliated members who do not belong to any parliamentary group.&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.assemblee-nationale.fr&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;assemblee-nationale.fr&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Descriptions are synthesized from the &amp;ldquo;Manifesto&amp;rdquo; or &amp;ldquo;Our Values&amp;rdquo; sections of the parties&amp;rsquo; official websites to ensure alignment with their self-defined political identity.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;2-theoretical-framework-and-methodology&#34;&gt;2. Theoretical Framework and Methodology
&lt;/h2&gt;&lt;h3 id=&#34;21-mathematical-foundations-vector-representation-of-votes&#34;&gt;2.1 Mathematical Foundations: Vector Representation of Votes
&lt;/h3&gt;&lt;h4 id=&#34;211-the-space-of-parliamentary-votes&#34;&gt;2.1.1 The Space of Parliamentary Votes
&lt;/h4&gt;&lt;p&gt;Each Member of Parliament can be represented by a &lt;strong&gt;vote vector&lt;/strong&gt; $\mathbf{v}_i \in \mathbb{R}^n$, where $n$ is the number of ballot votes analyzed. Formally:&lt;/p&gt;
$$
\mathbf{v}_i = (v_{i,1}, v_{i,2}, \ldots, v_{i,n})
$$&lt;p&gt;Each component $v_{i,j}$ encodes the MP&amp;rsquo;s position on a specific vote $j$:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$+1$ : In favor (Vote for the motion)&lt;/li&gt;
&lt;li&gt;$-1$ : Against (Vote against the motion)&lt;/li&gt;
&lt;li&gt;$0$ : Abstention (Present but did not take a position)&lt;/li&gt;
&lt;li&gt;$\text{NaN}$ : Absence (Not present during the session)&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;212-vote-matrix-and-data-structure&#34;&gt;2.1.2 Vote Matrix and Data Structure
&lt;/h4&gt;&lt;p&gt;After collecting votes via the NosDéputés.fr API, we construct a &lt;strong&gt;vote matrix&lt;/strong&gt; $M \in \mathbb{R}^{m \times n}$:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$m$ = number of MPs&lt;/li&gt;
&lt;li&gt;$n$ = number of ballot votes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each row corresponds to an MP&amp;rsquo;s vote vector, and each column corresponds to a specific vote.&lt;/p&gt;
$$
M = \begin{pmatrix}
v_{1,1} &amp; v_{1,2} &amp; \cdots &amp; v_{1,n} \\
v_{2,1} &amp; v_{2,2} &amp; \cdots &amp; v_{2,n} \\
\vdots &amp; \vdots &amp; \ddots &amp; \vdots \\
v_{m,1} &amp; v_{m,2} &amp; \cdots &amp; v_{m,n}
\end{pmatrix}
$$&lt;h3 id=&#34;22-handling-missing-data-the-parliamentary-nan-problem&#34;&gt;2.2 Handling Missing Data: The Parliamentary NaN Problem
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Major challenge:&lt;/strong&gt; The matrix $M$ contains missing values (NaN), corresponding to parliamentary absences. They reflect a latent variable: parliamentary engagement.&lt;/p&gt;
&lt;p&gt;Two analytical frameworks are considered:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;“Presence-Only” (Pearson, Agreement Ratio):&lt;/strong&gt; Focuses strictly on ideological alignment during shared presence. It is &amp;ldquo;agnostic&amp;rdquo; to the total volume of activity, but highly volatile when participation is low.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;“Volume-Aware” (Cosine, Jaccard):&lt;/strong&gt; Integrates the level of activity into the geometry. By treating absence as a null component ($0$), it stabilizes the positions of inactive MPs by preventing them from reaching extreme similarity scores based on a single shared vote.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;23-four-similarity-metrics&#34;&gt;2.3 Four Similarity Metrics
&lt;/h3&gt;&lt;h4 id=&#34;231-cosine-similarity-chosen-approach&#34;&gt;2.3.1 Cosine Similarity (Chosen Approach)
&lt;/h4&gt;&lt;p&gt;Cosine similarity measures the &lt;strong&gt;directional alignment&lt;/strong&gt; between two vectors:&lt;/p&gt;
$$
S_{\cos}(\mathbf{A}, \mathbf{B}) = \frac{\mathbf{A} \cdot \mathbf{B}}{\|\mathbf{A}\| \cdot \|\mathbf{B}\|} = \frac{\sum_{j=1}^{n} A_j B_j}{\sqrt{\sum_{j=1}^{n} A_j^2} \sqrt{\sum_{j=1}^{n} B_j^2}}
$$&lt;p&gt;&lt;strong&gt;Implementation:&lt;/strong&gt; NaN values are imputed as $0$.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Justification:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Directional Consistency:&lt;/strong&gt; $S_{\cos}$ captures the &amp;ldquo;political trajectory.&amp;rdquo; Two MPs with identical voting ratios will point in the same direction, regardless of their total volume of votes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Geometric Interpretation:&lt;/strong&gt; The denominator acts as a normalizer, while the numerator captures agreements (positive) and disagreements (negative).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Properties:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Range: $S_{\cos} \in [-1, +1]$.&lt;/li&gt;
&lt;li&gt;Scale-invariant: Independent of the number of votes, provided the participation is sufficient to establish a stable direction.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;232-pearson-correlation&#34;&gt;2.3.2 Pearson Correlation
&lt;/h4&gt;$$
\rho(\mathbf{A}, \mathbf{B}) = \frac{\mathbb{E}[(\mathbf{A} - \bar{A})(\mathbf{B} - \bar{B})]}{\sigma_A \sigma_B}
$$&lt;p&gt;&lt;strong&gt;NaN handling:&lt;/strong&gt; Pairwise deletion.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Limitation:&lt;/strong&gt; Pearson suffers from &lt;strong&gt;high sample bias&lt;/strong&gt; in sparse datasets. If two MPs coincide on only a few votes and agree, Pearson yields a perfect correlation ($+1.0$), creating &amp;ldquo;false positive&amp;rdquo; ideological alliances and over-inflating the importance of rare voters.&lt;/p&gt;
&lt;h4 id=&#34;233-jaccard-similarity&#34;&gt;2.3.3 Jaccard Similarity
&lt;/h4&gt;$$
S_{\text{Jaccard}} = \frac{|\text{Agreements}|}{|P_A \cup P_B|}
$$&lt;p&gt;where $P_A$ and $P_B$ are the sets of votes where MPs A and B were present.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; This metric is overly sensitive to participation gaps. The &lt;strong&gt;union&lt;/strong&gt; in the denominator aggressively penalizes differences in activity levels, &amp;ldquo;diluting&amp;rdquo; the similarity toward zero even if the MPs agree on 100% of their shared presence.&lt;/p&gt;
&lt;h4 id=&#34;234-weighted-agreement-agreement-ratio&#34;&gt;2.3.4 Weighted Agreement (Agreement Ratio)
&lt;/h4&gt;$$
S_{\text{agreement}} = \frac{|\text{Agreements}|}{|P_A \cap P_B|}
$$&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; This often leads to &lt;strong&gt;geometric degeneracy&lt;/strong&gt;. Since members of the same party follow strict voting instructions, their intersection of votes often results in $S = 1.0$. In a PCA or network graph, this causes entire political groups to &lt;strong&gt;collapse into a single point&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&#34;24-synthesis-choice-of-metric&#34;&gt;2.4 Synthesis: Choice of Metric
&lt;/h3&gt;&lt;p&gt;For this study, &lt;strong&gt;we favor cosine similarity&lt;/strong&gt;. Unlike Pearson, it avoids over-inflating similarities based on tiny samples. Unlike the Agreement Ratio, it preserves the granularity of the Assembly by allowing subtle differences in participation and individual deviations to translate into distinct geometric coordinates.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;3-voting-network&#34;&gt;3. Voting Network
&lt;/h2&gt;&lt;h3 id=&#34;31-graph-construction-via-k-nn&#34;&gt;3.1 Graph Construction via k-NN
&lt;/h3&gt;&lt;p&gt;Rather than creating a complete graph (potentially 150k+ edges), we use a &lt;strong&gt;k-nearest neighbors topology&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;For each Member of Parliament $i$:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Compute $S_{\cos}(i, j)$ for all other MPs $j$&lt;/li&gt;
&lt;li&gt;Retain the $k = 5$ neighbors with the highest similarity&lt;/li&gt;
&lt;li&gt;Add a weighted edge $(i, j)$ with weight = $S_{\cos}(i, j)$&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;32-layout-algorithm-spring-model&#34;&gt;3.2 Layout Algorithm: Spring Model
&lt;/h3&gt;&lt;p&gt;To spatialize the graph in 2D, we apply the &lt;strong&gt;Fruchterman–Reingold&lt;/strong&gt; algorithm (force-directed layout). All MPs are thrown randomly onto the plot, and the algorithm iteratively adjusts their positions until the system reaches equilibrium, driven by two competing forces:&lt;/p&gt;
$$
F_{\text{rep}}(i, j) = \frac{k}{d_{ij}}
$$&lt;p&gt;
&lt;/p&gt;
$$
F_{\text{attr}}(i, j) = \text{weight}_{ij} \cdot \left(-\frac{d_{ij}^2}{k}\right)
$$&lt;p&gt;where:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$\text{weight}_{ij}$ = The Cosine Similarity between MP $i$ and MP $j$. The more they vote alike, the stronger the pull.&lt;/li&gt;
&lt;li&gt;$F_{\text{rep}}$ = repulsion (every node pushes others away to avoid clutter).&lt;/li&gt;
&lt;li&gt;$F_{\text{attr}}$ = attraction&lt;/li&gt;
&lt;li&gt;$d_{ij}$ = Euclidean distance between MP $i$ and MP $j$ on the 2D map.&lt;/li&gt;
&lt;li&gt;$k$: A balance parameter. It&amp;rsquo;s tuned for visual harmony and does not affect the relative positions.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For Linked MPs (The Top 5 Neighbors): the distance $d_{ij}$ directly reflects the Cosine Similarity. If MP A and MP B have a weight of $0.95$, the attraction force $F_{\text{attr}}$ is very strong. They will be pulled until their Euclidean distance $d_{ij}$ is very small. In this case, small distance = high similarity.&lt;/p&gt;
&lt;p&gt;For Non-Linked MPs (Everyone else): the distance $d_{ij}$ does not directly reflects their similarity. Instead, it reflects their relative position in the political ecosystem. The algorithm doesn&amp;rsquo;t see a similarity of $0.05$ between a Far-Left MP and a Far-Right MP because they aren&amp;rsquo;t in each other&amp;rsquo;s Top 5. However, because the Far-Left MP is pulled to the &amp;ldquo;Left cluster&amp;rdquo; and the Far-Right MP is pulled to the &amp;ldquo;Right cluster,&amp;rdquo; the Repulsion force ($F_{\text{rep}}$) and the chain of other connections will push them to opposite sides of the map. They end up far apart ($d_{ij}$ is large), not because the algorithm calculated their specific disagreement, but because they have no common friends to pull them together.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Visual Interpretation:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Political Clusters:&lt;/strong&gt; Groups with high voting discipline (e.g., LFI or Renaissance) naturally form dense, color-coded clouds.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pivots and Bridges:&lt;/strong&gt; MPs who frequently vote across party lines are positioned between these clusters, acting as geometric &amp;ldquo;bridges.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;14th Legislature (2012-2017)&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;15th Legislature (2017-2022)&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;16th Legislature (2022-2024)&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;L14_network_cosine.png&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;L14_network_cosine.png&#34; style=&#34;height: 250px; width: auto; cursor: zoom-in;&#34; alt=&#34;L14&#34;&gt;&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;L15_network_cosine.png&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;L15_network_cosine.png&#34; style=&#34;height: 250px; width: auto; cursor: zoom-in;&#34; alt=&#34;L15&#34;&gt;&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;L16_network_cosine.png&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;L16_network_cosine.png&#34; style=&#34;height: 250px; width: auto; cursor: zoom-in;&#34; alt=&#34;L16&#34;&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Figure 2:&lt;/strong&gt; Graph of the 14th, 15th, and 16th legislatures using cosine similarity. Nodes are colored by political group. Note the increased fragmentation in the 16th legislature.&lt;/p&gt;
&lt;h4 id=&#34;observations&#34;&gt;Observations:
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;The decline of traditional pillars: Over the last decade, the Socialist and Republican parties have effectively moved from the center to the margins of the political landscape.&lt;/li&gt;
&lt;li&gt;Structural reshuffling: New parties have emerged, forming entirely new coalitions.&lt;/li&gt;
&lt;li&gt;Transversal behavior: Several MPs act as bridges between clusters. For instance, the Horizons group appears stretched: some members overlap with Renaissance, while others remain closer to the Republicans, reflecting a split in voting proximity.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;4-principal-component-analysis-pca-reduction-and-visualization&#34;&gt;4. Principal Component Analysis (PCA): Reduction and Visualization
&lt;/h2&gt;&lt;p&gt;We saw in section 2.1 that each MP is represented by a vote vector in a high-dimensional space ($\mathbb{R}^n$ where $n$ is the number of ballot votes). To visualize this $n$-dimensional voting space, we apply Principal Component Analysis (PCA). This dimensionality reduction technique projects the voting vectors onto a 2D plane (PC1 and PC2), preserving the maximum variance. This allow us to geographically map political distances: two deputies appearing close on the plot share a high proximity in their voting records.&lt;/p&gt;
&lt;h3 id=&#34;41-theoretical-foundations-of-pca&#34;&gt;4.1 Theoretical Foundations of PCA
&lt;/h3&gt;&lt;p&gt;Formally, let $\mathbf{M} \in \mathbb{R}^{m \times n}$ be the voting matrix (with $m$ MPs and $n$ votes). We first transform it into a standardized matrix $\mathbf{X}_{\text{std}}$ where each element $x_{i,j}$ is defined as:&lt;/p&gt;
$$x_{i,j} = \frac{m_{i,j} - \mu_j}{\sigma_j}$$&lt;p&gt;Where:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;$m_{i,j}$&lt;/strong&gt;: The vote of MP $i$ for ballot $j$ (Abstention = 0).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;$\mu_j$&lt;/strong&gt;: The &lt;strong&gt;mean vote&lt;/strong&gt; for ballot $j$: $\mu_j = \frac{1}{m} \sum_{i=1}^{m} m_{i,j}$.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;$\sigma_j$&lt;/strong&gt;: The &lt;strong&gt;standard deviation&lt;/strong&gt; of ballot $j$: $\sigma_j = \sqrt{\frac{1}{m} \sum_{i=1}^{m} (m_{i,j} - \mu_j)^2}$.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Standardization Justification:&lt;/strong&gt; By centering each column and scaling to unit variance, we ensure that every vote has equal statistical weight. This prevents &amp;ldquo;landslide&amp;rdquo; votes (where almost everyone agrees) from drowning out more subtle, but politically significant, contested votes where the assembly is deeply divided.&lt;/p&gt;
&lt;h4 id=&#34;1-finding-the-principal-axes&#34;&gt;1. Finding the Principal Axes
&lt;/h4&gt;&lt;p&gt;PCA identifies the two principal axes $\mathbf{u}_1, \mathbf{u}_2$ that maximize the &lt;strong&gt;explained variance&lt;/strong&gt;. In other words, it looks for the directions along which the MPs are the most spread out:&lt;/p&gt;
$$
\mathbf{u}_k = \arg\max_{\|\mathbf{u}\|=1} \text{Var}(\mathbf{X}_{\text{std}} \mathbf{u})
$$&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;PC1 (The Primary Cleavage):&lt;/strong&gt; The axis that captures the largest share of variance. In the French National Assembly, this should represent the &lt;strong&gt;Government vs. Opposition&lt;/strong&gt; divide.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PC2 (The Secondary Nuance):&lt;/strong&gt; The axis perpendicular (orthogonal) to PC1 capturing the next largest source of variation (e.g., internal dissent or transverse issues).&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;2-geometric-projection&#34;&gt;2. Geometric Projection
&lt;/h4&gt;&lt;p&gt;Each MP&amp;rsquo;s standardized vector $\mathbf{x_i} \in \mathbb{R}^n$ is projected onto this plane to obtain their 2D coordinates $(z_{i,1}, z_{i,2})$:&lt;/p&gt;
$$
z_{i,1} = \mathbf{x_i} \cdot \mathbf{u_1}, \quad z_{i,2} = \mathbf{x}_i \cdot \mathbf{u}_2
$$&lt;hr&gt;
&lt;h3 id=&#34;42-interpretation-of-the-pca-plots&#34;&gt;4.2 Interpretation of the PCA plots
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Average behavior:&lt;/strong&gt; Because the data is centered via &lt;code&gt;StandardScaler&lt;/code&gt;, the origin of the PCA plot represents the &lt;strong&gt;mathematical average behavior&lt;/strong&gt; of the Assembly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Absenteeism:&lt;/strong&gt; Visually, the Assembly structure appears as several &amp;ldquo;branches&amp;rdquo; (each representing a political group) that radiate from a common junction. MPs with high absenteeism have vectors that lack the &amp;ldquo;magnitude&amp;rdquo; necessary to be projected far along the principal axes. Consequently, they naturally gravitate toward the convergence point of these branches.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The 2D Projection Limit:&lt;/strong&gt; While &amp;ldquo;thin&amp;rdquo; clusters might suggest high voting discipline, this is a 2D projection. A cluster that appears compact may be significantly more dispersed along the higher-order principal components. While we can identify &amp;ldquo;bridge&amp;rdquo; individuals, visual dispersion should not be used as a definitive proxy for internal party cohesion.&lt;/li&gt;
&lt;/ol&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;15th Legislature (2017-2022)&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;16th Legislature (2022-2024)&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;L15_pca_Global.png&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;L15_pca_Global.png&#34; style=&#34;width: 100%; max-height: 500px; object-fit: contain; cursor: zoom-in;&#34; alt=&#34;PCA L15&#34;&gt;&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;L16_pca_Global.png&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;L16_pca_Global.png&#34; style=&#34;width: 100%; max-height: 500px; object-fit: contain; cursor: zoom-in;&#34; alt=&#34;PCA L16&#34;&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Figure 5:&lt;/strong&gt; Principal Component Analysis for all ballot&lt;/p&gt;
&lt;p&gt;A reliable PCA could not be generated for the 14th Legislature due to extreme absenteeism and a low volume of ballot. While filtering out deputies with less than 20% participation was necessary to avoid the &amp;lsquo;Arch Effect&amp;rsquo; and data distortion, it resulted in too few data points to provide more than basic legislative insights.&lt;/p&gt;
&lt;h3 id=&#34;43-thematic-analysis&#34;&gt;4.3 Thematic Analysis
&lt;/h3&gt;&lt;p&gt;We apply a &lt;strong&gt;thematic classification&lt;/strong&gt; based on the title of each ballot vote. Themes include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ecology &amp;amp; Territories (agriculture, climate, energy, transport)&lt;/li&gt;
&lt;li&gt;Economy &amp;amp; State (taxation, customs, inflation)&lt;/li&gt;
&lt;li&gt;Sovereignty &amp;amp; International Affairs (police, justice, defense)&lt;/li&gt;
&lt;li&gt;Solidarity &amp;amp; Social Policy (pensions, social benefits, disability)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This enables &lt;strong&gt;theme-based analyses&lt;/strong&gt;.&lt;/p&gt;
&lt;h4 id=&#34;categorization-methodology&#34;&gt;Categorization Methodology
&lt;/h4&gt;&lt;p&gt;We implemented a &lt;strong&gt;deterministic keyword-matching algorithm&lt;/strong&gt;. This process filters the legislative titles provided by the NosDéputés.fr XML API to categorize each vote into one of four strategic domains.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Methodological Note:&lt;/strong&gt; &amp;gt; While a Large Language Model (LLM) would undoubtedly be more &amp;ldquo;sophisticated&amp;rdquo; at interpreting the nuanced context of legislative titles, we decided to stick to a keyword-based approach. It is simple and easily understandable.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The script scans each &lt;code&gt;titre&lt;/code&gt; (title) tag within the XML response. If a keyword is found, the &lt;code&gt;scrutin_id&lt;/code&gt; (ballot ID) is mapped to that specific theme using the following logic:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;THEMATIQUES&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;Solidarité &amp;amp; Social&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;pauvreté&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;handicap&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;retraite&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;social&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;précarité&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;apl&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;famille&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;prestations&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;rsa&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;solidarité&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;chômage&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;Écologie &amp;amp; Territoires&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;écologie&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;environnement&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;climat&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;nucléaire&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;énergie&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;biodiversité&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;eau&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;agriculture&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;agricole&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;pesticide&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;rural&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;transport&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;Économie &amp;amp; État&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;économie&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;fiscal&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;impôt&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;inflation&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;douanes&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;entreprises&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;croissance&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;Souveraineté &amp;amp; International&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;justice&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;sécurité&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;police&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;prison&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;immigration&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;étranger&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;asile&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;frontière&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;armée&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;défense&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;europe&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id=&#34;dataset-overview-distribution-of-ballots-by-theme&#34;&gt;Dataset Overview: Distribution of Ballots by Theme
&lt;/h4&gt;&lt;p&gt;The following table summarizes the volume of ballot votes analyzed for each legislature, categorized by their primary thematic focus. These themes serve as the basis for our comparative spatial analysis.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Theme&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;14th Legislature (2012-2017)&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;15th Legislature (2017-2022)&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;16th Legislature (2022-2024)&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Solidarity &amp;amp; Social&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;138&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;757&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;335&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Ecology &amp;amp; Territories&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;73&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;641&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;709&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Economy &amp;amp; State&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;72&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;157&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;68&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Sovereignty &amp;amp; International&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;26&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;396&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;519&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Total Analyzed Ballots&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;309&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;1,951&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;1,631&lt;/strong&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;There has been a notable rise in MP activity in recent years: the number of ballots grew from 1,023 during the 14th Legislature to 4,394 in the 15th and 4,029 in the 16th.&lt;/p&gt;
&lt;h4 id=&#34;pca-by-theme&#34;&gt;PCA by Theme
&lt;/h4&gt;&lt;p&gt;Beyond the global PCA, we repeat the analysis for each thematic domain. For example, for &lt;em&gt;“Solidarity &amp;amp; Social”&lt;/em&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Filter $\mathbf{M}$ to retain only ballot votes labeled “solidarity” or &amp;ldquo;social&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Reapply PCA to this submatrix&lt;/li&gt;
&lt;li&gt;Visualize: Points colored by political group&lt;/li&gt;
&lt;li&gt;Observe: &lt;strong&gt;Theme-specific cleavages&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Not all themes yield insightful visualizations; those with higher explained variance in the PCA are the most significant for analysis.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;15th Legislature (2017-2022)&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;16th Legislature (2022-2024)&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;L15_pca_Solidarité_&amp;_Social.png&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;L15_pca_Solidarité_&amp;_Social.png&#34; style=&#34;width: 100%; max-height: 500px; object-fit: contain; cursor: zoom-in;&#34; alt=&#34;PCA L15 Social&#34;&gt;&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;L16_pca_Solidarité_&amp;_Social.png&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;L16_pca_Solidarité_&amp;_Social.png&#34; style=&#34;width: 100%; max-height: 500px; object-fit: contain; cursor: zoom-in;&#34; alt=&#34;PCA L16 Social&#34;&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Figure 6:&lt;/strong&gt; Principal Component Analysis for ballot votes related to Solidarity and Social.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Main observations:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;16th Legislature - The LFI vs. LR Cleavage: The PCA identifies a clear opposition between LFI and LR. This represents the classic &amp;ldquo;Social vs. Liberal&amp;rdquo; divide regarding welfare, labor laws, and state intervention.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Regarding social issues, the RN exhibits a significant shift toward LFI&amp;rsquo;s positions, creating a shared oppositional front against the LREM-LR nexus. This alignment highlights a clear divide between interventionist model and the liberal framework favored by the presidential majority and the traditional right.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The explained variance of the first principal component (PC1) serves as a proxy for how &amp;ldquo;structured&amp;rdquo; or predictable a political cleavage is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;15th Legislature (PC1 ≈ 20%): Social issues were relatively fluid, with more heterogeneous voting patterns across the chamber.&lt;/li&gt;
&lt;li&gt;16th Legislature (PC1 &amp;gt; 40%): The doubling of the explained variance indicates a massive increase in political polarization.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;While PCA highlights political blocs, a fragmented assembly often requires transversal compromises to reach a majority. To identify the specific actors who facilitate these compromises, we use &lt;strong&gt;Betweenness Centrality&lt;/strong&gt;. This metric moves beyond simple group membership to pinpoint deputies who act as mandatory &amp;ldquo;bridges&amp;rdquo; between different ideological clusters.&lt;/p&gt;
&lt;h3 id=&#34;5-identification-of-strategic-pivots-betweenness-centrality&#34;&gt;5 Identification of Strategic Pivots (Betweenness Centrality)
&lt;/h3&gt;&lt;p&gt;Unlike simple popularity (Degree), this metric identifies deputies who act as mandatory &amp;ldquo;bridges&amp;rdquo; between different ideological clusters.&lt;/p&gt;
&lt;h4 id=&#34;51-mathematical-definition&#34;&gt;5.1. Mathematical Definition
&lt;/h4&gt;&lt;p&gt;The centrality $g(v)$ of an MP $v$ is calculated by counting how many shortest paths between all other pairs of MPs pass through $v$:&lt;/p&gt;
$$g(v) = \sum_{s \neq v \neq t} \frac{\sigma_{st}(v)}{\sigma_{st}}$$&lt;p&gt;Where:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$\sigma_{st}$ is the total number of shortest paths from MP $s$ to MP $t$.&lt;/li&gt;
&lt;li&gt;$\sigma_{st}(v)$ is the number of those paths that pass through $v$.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;52-distance-inversion-and-pathfinding&#34;&gt;5.2. Distance Inversion and Pathfinding
&lt;/h4&gt;&lt;p&gt;Since our graph edges represent &lt;strong&gt;similarity&lt;/strong&gt; (Cosine Similarity), we must transform them into &lt;strong&gt;distances&lt;/strong&gt; to find the &amp;ldquo;shortest&amp;rdquo; ideological path. We define the distance $d_{ij}$ as:&lt;/p&gt;
$$d_{ij} = \frac{1}{\text{weight}_{ij} + \epsilon}$$&lt;p&gt;This inversion ensures that a high voting similarity results in a short distance. The algorithm then identifies &amp;ldquo;pivots&amp;rdquo;: deputies who, by their transversal voting patterns, minimize the distance between antagonistic groups (e.g., bridging the gap between the Majority and the Opposition).&lt;/p&gt;
&lt;h4 id=&#34;53-political-significance&#34;&gt;5.3. Political Significance
&lt;/h4&gt;&lt;p&gt;In a parliament without an absolute majority, these MPs represent the &lt;strong&gt;connective tissue&lt;/strong&gt; of the institution. A high Betweenness score reveals a &lt;strong&gt;brokerage capacity&lt;/strong&gt;: these individuals are structurally positioned to negotiate amendments that can &amp;ldquo;swing&amp;rdquo; a vote, as they constitute the most probable pathway for a ballot to transition from one political bloc to another.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Rank&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;15th Leg. (2017-2022)&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;Group&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;16th Leg. (2022-2024)&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;Group&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Jean-Luc Warsmann&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;UDI_I&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Nathalie Bassire&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;LIOT&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Karine Lebon&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;GDR&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Emmanuelle Ménard&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;NI&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Jennifer De Temmerman&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;LT&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Jean-Carles Grelier&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;REN&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;4&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Thierry Michels&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;LREM&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Olivier Serva&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;LIOT&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;5&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Agnès Thill&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;UDI_I&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Jean-Victor Castor&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;GDR&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;6&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Lise Magnier&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;AGIR-E&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Mansour Kamardine&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;LR&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;7&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Jean-Philippe Nilor&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;GDR&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;David Habib&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;NI&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;8&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Charles de Courson&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;LT&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Charles de Courson&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;LIOT&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;9&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Brigitte Bourguignon&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;LREM&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Victor Catteau&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;RN&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Paul Christophe&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;AGIR-E&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Laurent Panifous&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;LIOT&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;In the largest groups (REN, LFI, RN), the high level of party discipline mechanically reduces the betweenness score of individual members.
Conversely, deputies from smaller or more heterogeneous groups (LIOT, NI, UDI) exhibit the highest betweenness scores. Their &amp;ldquo;intermediate&amp;rdquo; positioning and lower exposure to rigid party whips allow them to act as strategic variables.&lt;/p&gt;
&lt;h2 id=&#34;6-conclusion&#34;&gt;6. Conclusion:
&lt;/h2&gt;&lt;h3 id=&#34;61-geometric-reinterpretation-of-french-political-cleavages&#34;&gt;6.1 Geometric Reinterpretation of French Political Cleavages
&lt;/h3&gt;&lt;p&gt;Our quantitative findings provide a mathematical framework to classical qualitative political science, while highlighting new structural shifts:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;The Collapse of Linear Bipolarity&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Observation:&lt;/strong&gt; The geometric structure of the 16th legislature is multi-polar (3 to 4 distinct branches radiating from the origin).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Implication:&lt;/strong&gt; The traditional Left-Right spectrum is insufficient to describe modern dynamics. Alliances are now non-linear; for instance, the &amp;ldquo;ends&amp;rdquo; of the spectrum (LFI and RN) may occasionally converge on specific social-related votes, creating a &amp;ldquo;horseshoe&amp;rdquo; effect that a simple line cannot represent.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;The Primacy of the Institutional Cleavage&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Observation:&lt;/strong&gt; PC1 consistently reflects the &lt;strong&gt;Executive-Legislative tension&lt;/strong&gt; (Majority vs. Opposition)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Insight:&lt;/strong&gt; The &amp;ldquo;logic of the bloc&amp;rdquo; (supporting or opposing the government) remains the most powerful statistical predictor of voting behavior, often overriding personal or thematic nuances.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;62-the-strategic-function-of-pivots&#34;&gt;6.2 The Strategic Function of Pivots
&lt;/h3&gt;&lt;p&gt;Pivots (identified by high &lt;strong&gt;Betweenness Centrality&lt;/strong&gt;) act as the &amp;ldquo;connective tissue&amp;rdquo; of the Assembly. They reduce the distance between antagonistic groups. Without enough bridges, the Assembly would more likely reach a state of legislative paralysis.&lt;/p&gt;
&lt;h3 id=&#34;63-limitations-the-hidden-dimensions&#34;&gt;6.3 Limitations: The &amp;ldquo;Hidden&amp;rdquo; Dimensions
&lt;/h3&gt;&lt;p&gt;While the 2D PCA captures the most visible signals (often ~15-20% of total variance), it intentionally discards the &amp;ldquo;noise&amp;rdquo; which often contains crucial secondary information. The remaining variance (axes 3 to $n$) typically hides:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cross-cutting cleavages&lt;/strong&gt; (e.g., regional vs. national interests)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Personal rivalries&lt;/strong&gt; (e.g., intra-party factions)&lt;/li&gt;
&lt;li&gt;(&amp;hellip;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;64-reproducibility&#34;&gt;6.4 Reproducibility
&lt;/h3&gt;&lt;p&gt;This study demonstrates the &lt;strong&gt;feasibility and utility&lt;/strong&gt; of combined quantitative techniques (graphs + PCA) to uncover political structure.
The full source code is available in the GitHub repository: &lt;a class=&#34;link&#34; href=&#34;https://github.com/Ines2r/Networks-Analysis&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Networks-Analysis&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;references--data-sources&#34;&gt;References &amp;amp; Data Sources
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;NosDéputés.fr API&lt;/strong&gt; &lt;a class=&#34;link&#34; href=&#34;https://www.nosdeputes.fr/api/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.nosdeputes.fr/api/&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Provides access to parliamentary activities and metadata.&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Assemblée Nationale Open Data Portal&lt;/strong&gt; &lt;a class=&#34;link&#34; href=&#34;https://data.assemblee-nationale.fr/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://data.assemblee-nationale.fr/&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Official repository for voting records, law proposals, and legislative history.&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;appendices&#34;&gt;Appendices
&lt;/h2&gt;&lt;h3 id=&#34;appendix-a-intra-group-analysis&#34;&gt;Appendix A: Intra-Group Analysis
&lt;/h3&gt;&lt;p&gt;For each political group $P$, we compute two distinct metrics:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Cohesion Leader (Intra-Group)&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Restrict the graph to members of $P$ only&lt;/li&gt;
&lt;li&gt;Identify the node with the maximum weighted degree in this subgraph&lt;/li&gt;
&lt;li&gt;Interpretation: This MP represents the group’s median behavior. They are the most representative of the collective line, voting in perfect synchronization with the majority of their peers.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Hub Leader (Global)&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Identify the node from the group with the maximum weighted degree in the full graph&lt;/li&gt;
&lt;li&gt;Interpretation: This MP not only aligns with their own group but also shares the highest number of common votes with the rest of the Assembly. They sit at the intersection of the party line and the broader parliamentary average.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div align=&#34;center&#34;&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Group&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Cohesion Leader (Intra)&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Hub Leader (Global)&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;LREM&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Marie-Christine Verdier-Jouclas&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Marie-Christine Verdier-Jouclas&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;LR&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Bernard Deflesselles&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Bernard Deflesselles&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;SOC&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Christine Pires-Beaune&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Christine Pires-Beaune&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;LFI&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Mathilde Panot&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Mathilde Panot&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Figure 3:&lt;/strong&gt; Key Leaders for the 15th Legislature&lt;/p&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;div align=&#34;center&#34;&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Group&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Cohesion Leader (Intra)&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Hub Leader (Global)&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;REN&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Claire Guichard&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Claire Guichard&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;RN&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Victor Catteau&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Victor Catteau&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;LFI-NUPES&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Anne-Stambach-Terrenoir&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Anne-Stambach-Terrenoir&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;LR&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Jean-Jacques Gaultier&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Michel Herbillon&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Figure 4:&lt;/strong&gt; Key Leaders for the 16th Legislature&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;The leaders identified in our tables (Figures 3 &amp;amp; 4) are often not household names. While Mathilde Panot is a notable exception, most &amp;ldquo;hubs&amp;rdquo; are relatively obscure backbenchers. This discrepancy reveals a potential limitation of our mathematical model.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The &amp;ldquo;Participation Bias&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Our model relies on Cosine Similarity, which heavily weights participation frequency:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The &amp;ldquo;Workhorse&amp;rdquo; Effect: Figures like Claire Guichard or Victor Catteau are almost always in the chamber. By being present for every vote and strictly following instructions, they become the mathematical &amp;ldquo;center of mass&amp;rdquo; for their party.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The &amp;ldquo;Media Gap&amp;rdquo;: Famous leaders (e.g., Le Pen, Mélenchon) often have lower legislative footprints because they are busy with national media or strategic travel. Our metric may be mistaking constant presence for actual political power.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Methodological Limits: Is Cosine Enough?
We must remain critical of our choice of metric. While Cosine Similarity effectively handles absences, it may also be creating an optical illusion:&lt;/p&gt;
&lt;p&gt;Artificial Hubs: Is an MP a &amp;ldquo;Hub&amp;rdquo; because they lead others, or simply because they are the most &amp;ldquo;average&amp;rdquo; and frequent voter in their group?&lt;/p&gt;
&lt;p&gt;In short, our graph may be mapping legislative discipline rather than political influence. While Mathilde Panot proves that one person can be both a media leader and a legislative hub, for most parties, the &amp;ldquo;real&amp;rdquo; power likely lies outside the mathematical center of our clusters.&lt;/p&gt;
&lt;h3 id=&#34;appendix-b-architecture-and-implementation-of-data-retrieval&#34;&gt;Appendix B: Architecture and Implementation of Data Retrieval
&lt;/h3&gt;&lt;h3 id=&#34;1-data-source-and-api&#34;&gt;1 Data Source and API
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Primary source:&lt;/strong&gt; NosDéputés.fr — a freely accessible collaborative database, fed by the official data of the French National Assembly via its XML export protocols.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;API endpoints:&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://www.nosdeputes.fr/{LEGISLATURE}/scrutins/xml
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://www.nosdeputes.fr/{LEGISLATURE}/scrutin/{SCRUTIN_ID}/xml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;where &lt;code&gt;LEGISLATURE&lt;/code&gt; $\in {15, 16}$ and &lt;code&gt;SCRUTIN_ID&lt;/code&gt; is the numerical identifier of the vote.
Unfortunately, the API hasn&amp;rsquo;t the same amount of data for previous legislatures. For the 14th legislature, we found an archive on &lt;a class=&#34;link&#34; href=&#34;https://data.assemblee-nationale.fr/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Asssemblée Nationale&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;2-parallel-download-protocol&#34;&gt;2 Parallel Download Protocol
&lt;/h3&gt;&lt;p&gt;To accelerate data collection (approx 4,000 ballot votes), we use a &lt;strong&gt;ThreadPoolExecutor&lt;/strong&gt; with up to 10 concurrent workers.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Output:&lt;/strong&gt; Three CSV files generated&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;dataset_scrutins_14.csv&lt;/code&gt; (2012–2017)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dataset_scrutins_15.csv&lt;/code&gt; (2017–2022)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dataset_scrutins_16.csv&lt;/code&gt; (2022–2024)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each record: &lt;code&gt;{depute, group, position, scrutin_id}&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;3-transformation-into-a-pivot-matrix&#34;&gt;3 Transformation into a Pivot Matrix
&lt;/h3&gt;&lt;p&gt;The raw list of votes is transformed into a &lt;strong&gt;sparse matrix&lt;/strong&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;pivot_votes&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;df&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pivot_table&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;depute&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;columns&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;scrutin_id&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;values&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;vote_val&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
</description>
        </item>
        <item>
        <title>Working Notes</title>
        <link>https://ines2r.github.io/p/welcome/</link>
        <pubDate>Tue, 20 Jan 2026 00:00:00 +0000</pubDate>
        
        <guid>https://ines2r.github.io/p/welcome/</guid>
        <description>&lt;img src="https://ines2r.github.io/p/welcome/cover.jpg" alt="Featured image of post Working Notes" /&gt;&lt;style&gt;
/* 2. LE TABLEAU (Général) */
  .article-content table {
    width: 100% !important;
    display: table !important;
    border-collapse: collapse;
    margin-bottom: 2em;
  }

  /* Par défaut, on laisse les colonnes s&#39;ajuster (pour le tableau des couleurs) */
  .article-content td {
    vertical-align: top !important; 
    padding: 10px !important;
    border-bottom: 1px solid #eee;
  }

  /* 3. EXCEPTION POUR LES GRAPHES (Législatures) */
  /* Si le tableau a 3 colonnes, on force les largeurs égales pour vos graphes */
  .article-content table tr th:first-child:nth-last-child(3),
  .article-content table tr th:first-child:nth-last-child(3) ~ th,
  .article-content table tr td:first-child:nth-last-child(3),
  .article-content table tr td:first-child:nth-last-child(3) ~ td {
    width: 33.33% !important;
  }

  /* 4. GESTION INTELLIGENTE DES IMAGES */
  .article-content table img {
    height: auto !important;
    display: block;
  }

  /* Si l&#39;image est un &#34;badge&#34; de couleur (Shields.io), on la garde petite */
  .article-content table img[src*=&#34;shields.io&#34;] {
    width: 90px !important; /* Taille fixe pour vos carrés de couleur */
    display: inline-block;
  }

  /* Si c&#39;est un graphique (pas un badge), il prend toute la place de sa colonne */
  .article-content table img:not([src*=&#34;shields.io&#34;]) {
    width: 100% !important;
    max-width: none !important;
  }
&lt;/style&gt;
&lt;hr&gt;
&lt;h1 id=&#34;working-notes&#34;&gt;Working Notes
&lt;/h1&gt;&lt;p&gt;&lt;strong&gt;Exploring AI, Machine Learning, and Graphs — with Limited Resources&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This blog is a technical notebook to explore topics I’m curious about and bridge the gap between theory and practice through hands-on experiments. Everything here—code, data, and analysis—is hosted on GitHub to ensure others can inspect, reproduce, or build upon my work.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;current-interests--research-ideas&#34;&gt;Current Interests &amp;amp; Research Ideas
&lt;/h3&gt;&lt;p&gt;These are topics I am thinking about:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AI &amp;amp; Machine Learning:&lt;/strong&gt; LLM fine-tuning, data poisoning, and predictive modeling (academic challenges/real-world data).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Graph Theory &amp;amp; Network Science:&lt;/strong&gt; Analyzing political networks (parliamentary voting behavior) and modeling epidemic spreads.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quantum Computing &amp;amp; Cryptography:&lt;/strong&gt; Exploring the fundamentals of quantum information—such as running single-qubit circuits via the Felis framework and Alice &amp;amp; Bob’s cat qubit technology.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Decision Systems &amp;amp; Strategy:&lt;/strong&gt; Game theory applied to sports (tennis) or board games, and reinforcement learning.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reflections on AI &amp;amp; Sovereignty:&lt;/strong&gt; Analyzing how Large Language Models shape public opinion and impact democratic stability. I’m particularly interested in the dominance of a few tech giants and how states leverage these tools to project influence and challenge national autonomy.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;the-low-tech-constraint&#34;&gt;The &amp;ldquo;Low-Tech&amp;rdquo; Constraint
&lt;/h3&gt;&lt;p&gt;I run my experiments on a &lt;strong&gt;2017 MacBook Air (8GB RAM, Dual-Core i5)&lt;/strong&gt; without paid cloud services.
This constraint encourages me to focus on small LLMs and lightweight techniques like LoRA. For me, it’s about deep understanding and efficiency rather than massive scale.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;closing-note&#34;&gt;Closing Note
&lt;/h2&gt;&lt;p&gt;This is a space for curiosity and open-source collaboration. Everything shared here is open for you to reuse, adapt, or critique. If a project sparks your interest, feel free to dive in and share your findings.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Photo by &lt;a class=&#34;link&#34; href=&#34;https://unsplash.com/@pawel_czerwinski&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Pawel Czerwinski&lt;/a&gt; on &lt;a class=&#34;link&#34; href=&#34;https://unsplash.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Unsplash&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>Links</title>
        <link>https://ines2r.github.io/links/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://ines2r.github.io/links/</guid>
        <description>&lt;p&gt;To use this feature, add &lt;code&gt;links&lt;/code&gt; section to frontmatter.&lt;/p&gt;
&lt;p&gt;This page&amp;rsquo;s frontmatter:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;links&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;GitHub&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;GitHub is the world&amp;#39;s largest software development platform.&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;website&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;https://github.com&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;TypeScript&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;website&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;https://www.typescriptlang.org&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;ts-logo-128.jpg&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;image&lt;/code&gt; field accepts both local and external images.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Search</title>
        <link>https://ines2r.github.io/search/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://ines2r.github.io/search/</guid>
        <description></description>
        </item>
        
    </channel>
</rss>
