Corrections de liens morts
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
title: "Capture d'écran de https://www.a.team//mission/the-great-betrayal"
|
title: "Capture d'écran de https://www.a.team/mission/the-great-betrayal"
|
||||||
description: "Capture effectuée le 7 février 2023 à 01:00"
|
description: "Capture effectuée le 7 février 2023 à 01:00"
|
||||||
attribution: "Richard Dern"
|
attribution: "Richard Dern"
|
||||||
file: "images/screenshot.png"
|
file: "images/screenshot.png"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
links:
|
links:
|
||||||
- name: Page d'origine
|
- name: Page d'origine
|
||||||
url: https://www.a.team//mission/the-great-betrayal
|
url: https://www.a.team/mission/the-great-betrayal
|
||||||
lang: en
|
lang: en
|
||||||
title: "The Great Betrayal: After Callous Layoffs, Workers Are Done With the
|
title: "The Great Betrayal: After Callous Layoffs, Workers Are Done With the
|
||||||
Full-Time Work Model"
|
Full-Time Work Model"
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ Alors, quitte à claquer autant d'argent, autant le faire pour une station pré-
|
|||||||
|
|
||||||
## La station
|
## La station
|
||||||
|
|
||||||
J'ai choisi la [Bresser MeteoChamp HD Wifi 7-en-1](https://www.bresser.de/fr/Temps/BRESSER-Station-meteo-7-en-1-Wifi-HD-professionnelle-avec-differents-modes-d-affichage.html).
|
J'ai choisi la [Bresser MeteoChamp HD Wifi 7-en-1](https://www.bresser.fr/p/bresser-station-meteo-connectee-7-en-1-wifi-hd-professionnelle-avec-differents-modes-d-affichage-7003510).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ Cela évite de « voir le futur » lors de la préparation des données, ce qui
|
|||||||
|
|
||||||
## Modèles à introduire dans les chapitres suivants
|
## Modèles à introduire dans les chapitres suivants
|
||||||
|
|
||||||
- Modèles linéaires avec régularisation ([_Ridge_](https://en.wikipedia.org/wiki/Ridge_regression)/[_Lasso_](<https://en.wikipedia.org/wiki/Lasso_(statistics)>)) pour températures/vents : même formule que la régression linéaire classique, mais avec un terme supplémentaire qui limite l’ampleur des coefficients pour réduire le sur‑apprentissage (_Ridge_ pénalise surtout les coefficients trop grands, _Lasso_ peut en forcer certains à zéro).
|
- Modèles linéaires avec régularisation ([_Ridge_](https://en.wikipedia.org/wiki/Ridge_regression) / [_Lasso_](<https://en.wikipedia.org/wiki/Lasso_(statistics)>)) pour températures/vents : même formule que la régression linéaire classique, mais avec un terme supplémentaire qui limite l’ampleur des coefficients pour réduire le sur‑apprentissage (_Ridge_ pénalise surtout les coefficients trop grands, _Lasso_ peut en forcer certains à zéro).
|
||||||
- [Régression logistique](https://fr.wikipedia.org/wiki/R%C3%A9gression_logistique) pour la pluie : produit une probabilité de pluie plutôt qu’un oui/non brut, ce qui permet ensuite de choisir un seuil de décision adapté à l’usage (plutôt prudent ou plutôt conservateur).
|
- [Régression logistique](https://fr.wikipedia.org/wiki/R%C3%A9gression_logistique) pour la pluie : produit une probabilité de pluie plutôt qu’un oui/non brut, ce qui permet ensuite de choisir un seuil de décision adapté à l’usage (plutôt prudent ou plutôt conservateur).
|
||||||
- Si besoin de courbes plus flexibles : arbres peu profonds, [_random forest_](https://fr.wikipedia.org/wiki/For%C3%AAt_al%C3%A9atoire) ou [_gradient boosting_](https://fr.wikipedia.org/wiki/Gradient_boosting) légers pour capturer des relations non linéaires sans rendre le modèle complètement opaque .
|
- Si besoin de courbes plus flexibles : arbres peu profonds, [_random forest_](https://fr.wikipedia.org/wiki/For%C3%AAt_al%C3%A9atoire) ou [_gradient boosting_](https://fr.wikipedia.org/wiki/Gradient_boosting) légers pour capturer des relations non linéaires sans rendre le modèle complètement opaque .
|
||||||
- Évaluation multi-horizons avec _time-series split_, courbes d’erreur en fonction de l’horizon pour voir à partir de quand le modèle décroche.
|
- Évaluation multi-horizons avec _time-series split_, courbes d’erreur en fonction de l’horizon pour voir à partir de quand le modèle décroche.
|
||||||
|
|||||||
@@ -326,6 +326,34 @@ function mergeOccurrences(entries, occurrences) {
|
|||||||
return merged;
|
return merged;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Liste les URLs réellement présentes dans le contenu pour supprimer les entrées obsolètes.
|
||||||
|
function buildActiveUrlSet(occurrences) {
|
||||||
|
const active = new Set();
|
||||||
|
for (const url of occurrences.keys()) {
|
||||||
|
active.add(url);
|
||||||
|
}
|
||||||
|
return active;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Conserve uniquement les liens du rapport encore utilisés dans le contenu.
|
||||||
|
function filterReportLinks(links, activeUrls) {
|
||||||
|
if (!Array.isArray(links) || activeUrls.size === 0) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
const filtered = [];
|
||||||
|
for (const link of links) {
|
||||||
|
if (!link?.url || !activeUrls.has(link.url)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
filtered.push({
|
||||||
|
...link,
|
||||||
|
locations: Array.isArray(link.locations) ? dedupeAndSortLocations(link.locations) : [],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return filtered;
|
||||||
|
}
|
||||||
|
|
||||||
function recordOccurrence(map, filePath, line, url) {
|
function recordOccurrence(map, filePath, line, url) {
|
||||||
if (!map.has(url)) {
|
if (!map.has(url)) {
|
||||||
map.set(url, []);
|
map.set(url, []);
|
||||||
@@ -720,6 +748,7 @@ async function main() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const activeUrls = buildActiveUrlSet(occurrences);
|
||||||
const state = loadState();
|
const state = loadState();
|
||||||
const mergedEntries = mergeOccurrences(state.entries, occurrences);
|
const mergedEntries = mergeOccurrences(state.entries, occurrences);
|
||||||
const entriesArray = Object.values(mergedEntries);
|
const entriesArray = Object.values(mergedEntries);
|
||||||
@@ -727,7 +756,7 @@ async function main() {
|
|||||||
|
|
||||||
const snapshotMeta = {
|
const snapshotMeta = {
|
||||||
generatedAt: state.generatedAt || null,
|
generatedAt: state.generatedAt || null,
|
||||||
links: Array.isArray(state.links) ? state.links : [],
|
links: filterReportLinks(state.links, activeUrls),
|
||||||
};
|
};
|
||||||
|
|
||||||
await checkEntries(pending, mergedEntries, snapshotMeta);
|
await checkEntries(pending, mergedEntries, snapshotMeta);
|
||||||
@@ -735,7 +764,7 @@ async function main() {
|
|||||||
const deadLinks = buildDeadLinks(mergedEntries);
|
const deadLinks = buildDeadLinks(mergedEntries);
|
||||||
const nextState = {
|
const nextState = {
|
||||||
generatedAt: new Date().toISOString(),
|
generatedAt: new Date().toISOString(),
|
||||||
links: deadLinks,
|
links: filterReportLinks(deadLinks, activeUrls),
|
||||||
entries: mergedEntries,
|
entries: mergedEntries,
|
||||||
};
|
};
|
||||||
saveState(nextState);
|
saveState(nextState);
|
||||||
|
|||||||
Reference in New Issue
Block a user