Suite

Comment utiliser python pour définir une variable sur une valeur d'une table attributaire vectorielle pour GRASS


J'ajoute à un script python pour GRASS v.transects.py. Je souhaite définir une variable pour qu'elle soit égale à une valeur d'un champ de la table attributaire du vecteur à l'aide d'une boucle for pour parcourir chaque ligne. C'est l'un de mes premiers scripts GRASS, je suis beaucoup plus à l'aise avec arc. Pour arcpy, j'utiliserais un curseur de recherche et getValue :

vector = "river.shp" lines = arcpy.SearchCursor(vector) pour la ligne dans les lignes : attributeValue = str(line.getValue("FIELD"))

Le script existant a déjà le droit pour la boucle (pour la ligne dans le vecteur), il s'agit simplement de déterminer la dernière ligne, comment lui faire lire le champ dans la table attributaire du segment de ligne qu'il parcourt actuellement.


Vous avez deux options, une en Python pur et la seconde, plus classique, en parsant les commandes de GRASS GIS.

1) en pur Python

Si je regarde le manuel du programmeur GRASS : Python (avec la version 6.4.3), je n'ai toujours pas trouvé de moyen d'écrire des données (attributs) dans des vecteurs GRASS à partir de Python.

Mais c'est possible et plus simple avec la version 7 : GRASS 7 Programmer's Manual et PyGRASS

2) plus classique : parser les commandes de GRASS GIS

Vous pouvez utiliser Python pour exécuter les commandes vectorielles GRASS standard (db.execute,v.db,v.db.update, etc., regardez par exemple les scripts Python d'Antonio Alliegro dans Programatione et GIS : Python (en italien) , Python Scripts For GRASS GIS ou pgis avec la classe gVect()

Ils utilisent SQL (support SQL dans GRASS GIS) mais si vous utilisez le pilote dbf, en raison de ses limitations, certaines commandes commev.to.db.updatene sont pas supportés (pas de problème si vous utilisez le driver SQLite).

Comme exemple de processus avec le pilote dbf :

  1. création d'une nouvelle colonne avec la somme de deux valeurs d'attributs

  2. modifier une valeur d'attribut

Une table:

# première colonne ZN = grass.read_command("v.db.select", flags="c", map="geochimcal", col="ZN") ZN=(ZN.split("
")) ZN= ZN[0:(len(ZN)-1)] print ZN ['40', '55', '65', '158', '44', '282', '62', '83', '84 ', '97', '61', '58', '40', '54', '75', '129', '77', '87', '74', '47', '58', '73', '64', '46', '63'] # deuxième colonne PB=grass.read_command("v.db.select", flags="c", map="geochimcal", col="PB" ) PB=(PB.split("
")) PB= PB[0:(len(PB)-1)] print PB ['17', '9', '16', '40', '16 ', '166', '18', '22', '37', '69', '62', '19', '17', '23', '33', '72', '19', '19', '39', '21', '30', '8', '37', '21', '20'] #ajouter une colonne à la table : grass.read_command("v.db.addcol ",map="geochimcal",col="SOMME int") # calcul de la somme SOMME = range(len(PB)) pour i in range(len(PB)): SOMME[i]=int(ZN[i]) +int(PB[i]) imprime SOMME [57, 64, 81, 198, 60, 448, 80, 105, 121, 166, 123, 77, 57, 77, 108, 201, 96, 106, 113, 68 , 88, 81, 101, 67, 83] # remplir la nouvelle colonne pour i dans range(len(ZN)): query="UPDATE geochimcal SET SOMME=" + str (SOMME[i]) + " WHERE cat = " + str(i+1) grass.write_command("db.execute", stdin = query)

Modifier une valeur :

query="UPDATE geochimcal SET SOMME=" + str(0) + "WHERE PH =" + str(6.9) grass.write_command("db.execute", stdin = query)

C'est beaucoup plus simple avec GRASS GIS 7 et PyGRASS (attributs vectoriels) ou atelier pygrass


Pour un noyau général, il est difficile d'interpréter les poids SVM, mais pour le SVM linéaire, il existe en fait une interprétation utile :

1) Rappelons qu'en SVM linéaire, le résultat est un hyperplan qui sépare au mieux les classes. Les poids représentent cet hyperplan, en vous donnant les coordonnées d'un vecteur orthogonal à l'hyperplan - ce sont les coefficients donnés par svm.coef_. Appelons ce vecteur w.

2) Que peut-on faire avec ce vecteur ? Sa direction nous donne la classe prédite, donc si vous prenez le produit scalaire de n'importe quel point avec le vecteur, vous pouvez dire de quel côté il se trouve : si le produit scalaire est positif, il appartient à la classe positive, s'il est négatif, il appartient à la classe négative.

3) Enfin, vous pouvez même apprendre quelque chose sur l'importance de chaque fonctionnalité. C'est ma propre interprétation alors convainquez-vous d'abord. Disons que le svm ne trouverait qu'une seule fonctionnalité utile pour séparer les données, alors l'hyperplan serait orthogonal à cet axe. Ainsi, vous pourriez dire que la taille absolue du coefficient par rapport aux autres donne une indication de l'importance de la caractéristique pour la séparation. Par exemple, si seule la première coordonnée est utilisée pour la séparation, w sera de la forme (x,0) où x est un nombre non nul et alors |x|>0.


Étape 1 : Examen des données d'entrée

1.1 Contrôle visuel et statistique des données

Dans le catalogue, sélectionnez la carte de points avec les exemples de points. Appuyez sur le bouton droit de la souris et sélectionnez Propriétés dans le menu contextuel. La boîte de dialogue Carte de points - Propriétés s'ouvre.

Double-cliquez sur la carte de points dans le catalogue. La boîte de dialogue Options d'affichage - Carte de points s'affiche. Acceptez les valeurs par défaut en cliquant sur le bouton OK. La carte des points s'ouvre. Vérifier la Distribution visuellement des points d'échantillonnage. Une autre façon de déterminer si vos points sont distribués de manière aléatoire, ou apparaissent groupés, réguliers ou appariés, etc., consiste à effectuer une analyse de modèle.

Si vous décidez qu'il y a suffisamment de points d'échantillonnage disponibles et que la distribution des points est assez bonne pour faire une interpolation de krigeage, mesure le plus court et le plus long distance entre deux points d'échantillonnage dans la carte de points.

Vous pouvez mesurer la longueur du vecteur de paire de points le plus court et le plus long à l'aide du bouton Mesurer la distance (la paire de boussoles) de la barre d'outils de la fenêtre de carte. Vous aurez besoin de cette information de distance plus tard pour définir le nombre de décalages et le espacement de décalage dans l'opération de surface de variogramme (étape 1.2), la corrélation spatiale ou l'opération de variogramme croisé (étape 2.1).

Si vous disposez de suffisamment de points d'échantillonnage pour effectuer une interpolation de krigeage correcte, divisez votre ensemble de données en deux parties. Utilisez une partie pour l'interpolation et l'autre partie pour la vérification de la carte interpolée.

Ensuite, calculez le variance de l'ensemble de données échantillon.

  • Lorsque les données de valeur que vous souhaitez interpoler sont stockées dans une colonne de la table attributaire de la carte : ouvrez la table attributaire. Lorsque les valeurs sont stockées dans la carte de points elle-même, ouvrez la carte de points sous forme de tableau via le menu contextuel. Dans le menu Colonnes de la fenêtre du tableau, choisissez la commande Statistiques. Dans la boîte de dialogue Statistiques de colonne :
    • sélectionnez la fonction Variance, et
    • sélectionnez la variable d'entrée pour laquelle vous souhaitez calculer la variance.
    • Appuyez sur le bouton OK. Vous pouvez utiliser cette variance calculée comme indication pour le seuil lors de la modélisation du variogramme (étape 3.1).

    Lorsque la variation de la variable étudiée n'est pas la même dans toutes les directions, alors l'anisotropie est présente. En cas d'anisotropie suspectée, calculez une surface de variogramme avec l'opération Surface de variogramme.

    • Sélectionnez la carte de points dans le catalogue. Appuyez sur le bouton droit de la souris et choisissez Statistiques, Surface du variogramme dans le menu contextuel.
    • La boîte de dialogue Surface de variogramme s'ouvre. Si la carte de points est liée à une table attributaire, choisissez la colonne attributaire avec les exemples de données. Entrez l'espacement des décalages, le nombre de décalages et un nom pour la carte de sortie.
    • Cochez la case Afficher et appuyez sur OK. La carte de surface du variogramme est calculée.

    La carte de sortie peut être mieux visualisée dans une fenêtre de carte en utilisant la représentation Pseudo tandis qu'un histogramme a été calculé. Pour afficher les coordonnées et la position de l'origine dans la carte raster en sortie, vous pouvez ajouter des lignes de grille, où la distance de grille est égale à l'espacement de décalage spécifié. Il est important de reconnaître l'origine de la carte graphique/sortie.

    • Les valeurs de semi-variogramme proches de l'origine de la carte de sortie devraient être petites (bleu dans la représentation Pseudo ), car les valeurs des points à de très courtes distances les uns des autres devraient être similaires. Lorsqu'il n'y a pas d'anisotropie, les valeurs de semi-variogramme augmenteront progressivement de l'origine dans toutes les directions. Vous trouverez ainsi des formes en forme de cercle de l'origine vers l'extérieur où la couleur passe progressivement du bleu à l'origine au vert et au rouge plus loin de l'origine.
    • Vos données d'entrée sont censées être anisotrope lorsque vous trouvez une forme elliptique de faibles valeurs de semi-variogramme (bleu dans la représentation Pseudo ) dans une certaine direction passant par l'origine. Dans ce sens, les valeurs de semi-variogramme n'augmentent pas beaucoup. Cependant, dans la direction perpendiculaire, vous constatez une nette augmentation des valeurs de semi-variogramme : du bleu à l'origine au vert et au rouge plus loin de l'origine. Si l'anisotropie est présente, vous devez utiliser le krigeage anisotrope.

    Vous pouvez mesurer la direction de l'anisotropie avec le bouton Mesurer la distance de la barre d'outils de la fenêtre de carte, par ex. en suivant une 'ligne' de pixels bleus passant par l'origine du tracé. Vous aurez besoin de cet angle plus tard à l'étape 2.1 (Méthode bidirectionnelle de corrélation spatiale) et à l'étape 4.3 (Krigeage anisotrope).

    • Les valeurs de semi-variogramme dans la carte de sortie peuvent être comparées à la variance globale de vos données d'entrée (calculée à l'étape 1.1)
    • Lorsqu'aucun point n'est rencontré dans une certaine classe de distance directionnelle, la valeur de semi-variogramme de cette cellule/pixel dans la surface de sortie sera indéfinie.
    • Lorsque vous trouvez de nombreuses valeurs de surface de semi-variogramme indéfinies entre quelques valeurs de semi-variogramme assez grandes, vous devez envisager d'augmenter l'espacement de décalage. N'oubliez pas que les résultats seront plus fiables lorsque, disons, plus de 30 paires de points sont trouvées dans les classes de distance directionnelles individuelles.
    • Lorsque vous trouvez de très nombreuses valeurs de semi-variogramme non définies principalement dans les parties extérieures de la surface, vous devez envisager de réduire l'espacement du décalage.
    • Lorsque vous utilisez une carte de points d'entrée avec un très grand nombre de points, les calculs d'une grande surface peuvent prendre beaucoup de temps. Il est conseillé de commencer à utiliser l'opération avec assez peu de décalages et/ou un espacement de décalage assez faible.

    On peut effectuer une opération de Krigeage (i.e. Krigeage Universel) en tenant compte d'un dérive locale ou alors tendance qui est censé exister dans la distance limite définie autour de chaque pixel à interpoler. Très souvent, vous connaissez déjà la tendance :

    • lorsque vous avez effectué une autre technique d'interpolation comme une surface mobile ou une surface de tendance, avant de décider d'utiliser la méthode d'interpolation de krigeage, ou
    • lorsque vous connaissez le comportement naturel de la variable (par exemple, les textures du sol près d'une digue de rivière sont très souvent plus extrêmes que dans une zone de marécage).

    Si un tendance mondiale est présent dans l'ensemble d'échantillons, soustrayez la tendance des données d'entrée avec une instruction TabCalc. Effectuez un krigeage ordinaire sur l'ensemble de données sans tendance et utilisez MapCalc pour ajouter à nouveau les deux cartes de sortie. Cette méthode est une alternative au krigeage universel. Cependant, un inconvénient majeur de cette alternative est que la carte d'erreur est incorrecte.

    Si vous décidez que le la variable à l'étude est peu échantillonnée, découvrez s'il y a une autre variable mieux échantillonnée et a de nombreux points d'échantillonnage correspondants (coordonnées XY identiques).

    Ouvrez la table attributaire liée à la carte de points. Découvrez s'il y a deux colonnes avec des domaines de valeurs et les coordonnées XY correspondantes. S'il y a une deuxième variable, calculez la variance des deux variables individuellement et la corrélation entre les deux colonnes.

    Lorsque les deux variables sont fortement corrélées, vous pouvez utiliser la variable la mieux échantillonnée et la relation entre les deux variables pour aider à interpoler la variable faiblement échantillonnée avec CoKriging.

    Si la corrélation entre les deux variables est faible, il est conseillé d'utiliser une autre technique d'interpolation ou de ne pas interpoler du tout.

    • La corrélation entre les deux variables devrait avoir un sens. En d'autres termes, il devrait être basé sur des relations/lois physiques (par exemple, la température et l'humidité relative, la température et la hauteur)
    • Si la variable est mal échantillonnée et qu'il n'y a pas d'autre variable qui puisse aider à interpoler la variable faiblement échantillonnée, il n'est pas sage d'interpoler car les résultats n'ont pas beaucoup de sens. Prendre la moyenne des valeurs de l'échantillon est aussi bon qu'interpoler.
    • Si la variable est peu échantillonnée, vous pouvez envisager de retourner sur le terrain et de prendre d'autres mesures.

    Visualisez les variables catégorielles en Python à l'aide de l'analyse bivariée

    L'analyse bivariée découvre la relation entre deux variables. Ici, nous recherchons l'association et la dissociation entre les variables à un niveau de signification prédéfini.

    Catégorique et continu : pour trouver la relation entre les variables catégorielles et continues, nous pouvons utiliser Boxplots

    Les boîtes à moustaches sont un autre type de tracé univarié pour résumer graphiquement les distributions de données numériques. Créons une boîte à moustaches de carats en utilisant la fonction pd.boxplot() :

    La case centrale du boxplot représente les 50 % du milieu des observations, la barre centrale est la médiane et les barres à la fin des pointillés (moustaches) encapsulent la grande majorité des observations. Les cercles qui se trouvent au-delà de la fin des moustaches sont des points de données qui peuvent être des valeurs aberrantes.

    La boîte à moustaches ci-dessus est curieuse : nous nous attendons à ce que les diamants avec une meilleure clarté atteignent des prix plus élevés et pourtant les diamants situés à l'extrémité la plus élevée du spectre de clarté (SI = sans défaut interne) ont en fait des prix médians inférieurs à ceux des diamants de faible pureté !


    Analyse d'impact de l'utilisation des sols sur la congestion du trafic à l'aide du trafic en temps réel et des POI

    Cet article a proposé une nouvelle méthode pour décrire, comparer et classer les points de congestion du trafic à Pékin, en Chine, en utilisant les données cartographiques en ligne et a révélé en outre la relation entre la congestion du trafic et l'utilisation des terres. Les données du point d'intérêt (POI) et du trafic en temps réel ont été extraites d'une carte électronique de la zone de la quatrième rocade de Pékin. Les POI ont été quantifiés sur la base de la zone architecturale de l'utilisation du sol, les points de congestion ont été identifiés sur la base du trafic en temps réel. Ensuite, l'analyse groupée utilisant les attributs du temps de congestion a été menée pour identifier les principales zones de congestion du trafic. Le résultat d'une analyse de régression linéaire entre le temps de congestion et l'utilisation du sol a montré que l'influence de la forte proportion d'utilisation commerciale du sol sur la congestion du trafic était significative. De plus, nous avons considéré cinq types d'utilisation du sol en effectuant une analyse de régression linéaire entre le temps de congestion et le ratio de quatre types d'utilisation du sol. Les résultats ont montré qu'un ratio raisonnable de types d'utilisation des sols pouvait réduire efficacement le temps de congestion. Cette étude contribue à l'élaboration des politiques d'aménagement du territoire urbain.

    1. Introduction

    Alors que l'urbanisation de la Chine s'accélère, la dépense des terrains urbains conduit à une concentration excessive des fonctions publiques, provoquant la multiplication des embouteillages dans le trafic urbain. L'utilisation du sol affecte la direction attirée, le ratio de flux de trafic et le modèle de déplacement, qui sont les facteurs liés à la demande de trafic public. Une planification raisonnable des terrains urbains est essentielle pour assurer le fonctionnement efficace du trafic urbain. Par conséquent, comprendre la corrélation entre l'occupation du sol et les embouteillages peut aider à optimiser le trafic urbain.

    Les données de trafic sur les embouteillages impliquent des informations spatio-temporelles complexes et à grande échelle, ce qui rend difficile l'exploration des données de trafic. En outre, la source des données de trafic n'est pas facilement disponible. Des études antérieures [1–6] se sont concentrées sur le flux de trafic par des méthodes traditionnelles (modèle de demande de déplacement conventionnel en quatre étapes) sans tenir compte des informations géographiques (les coordonnées de longitude et de latitude, les catégories et les informations de localisation spécifiques). Le modèle de demande de déplacement traditionnel en quatre étapes fonctionne généralement sur les données d'enquête individuelles qui sont d'un coût élevé, d'une faible précision et d'une faible efficacité. Il est donc nécessaire pour nous de développer une méthode de jugement des points de congestion à l'aide de systèmes d'information géographique (SIG), qui constitue une alternative rapide et précise aux modèles classiques en quatre étapes.

    Dans la littérature, des modèles limités sur les embouteillages ont été proposés pour étudier la relation entre les embouteillages et l'utilisation des sols urbains. Par exemple, Wingo Lowdon a établi le modèle économique sur la façon dont le transport, l'emplacement et l'utilisation des terres urbaines ont affecté les déplacements des consommateurs de leur résidence au lieu de travail [7]. Alonso [8] a amélioré ce modèle en considérant la valeur du terrain urbain, constatant que la valeur des différentes parcelles urbaines était négativement corrélée au coût de transport vers le centre-ville. Izraeli et McCarthy [9] (1985) ont constaté que le terrain résidentiel avait un effet sur la congestion, il y avait une corrélation positive significative entre la densité de population et le temps de trajet. Handy [10] a analysé l'impact de l'utilisation des terres sur les caractéristiques des déplacements et a découvert que la fréquence des déplacements diminuait à mesure que la densité d'utilisation des terres augmentait et que la distance à parcourir augmentait à mesure que la vitesse de déplacement diminuait. Gordon et al. [11] (1989) ont analysé les données satellitaires de 82 zones métropolitaines américaines en 1980 pour extraire les informations sur les densités des différents types d'utilisation des terres (le type de résident, l'industrie et le commerce). Lorsque l'on considère le taux d'emploi à cette époque, il a été constaté que l'augmentation de la densité industrielle réduirait le temps de trajet en voiture, ainsi que les densités résidentielles et commerciales. Ewing et al. [12] (2003) ont étudié l'impact de l'utilisation du sol sur le temps de trajet et le retard des piétons en utilisant des données transversales de 83 régions statistiques métropolitaines dans les années 1990 et 2000. Les résultats ont montré que le temps de trajet au cours de ces deux années était négativement corrélé avec l'indice d'utilisation mixte des terres et était positivement corrélé avec l'accessibilité de la rue.

    Contrairement aux données d'attributs de terrains urbains qui sont complexes à analyser et à classer, les données de points d'intérêt (POI), qui sont étroitement liées aux attributs de terrains urbains et aux conseils d'urbanisme, peuvent être facilement quantifiées et analysées. Yu et Ai [13] ont discuté des caractéristiques de la distribution spatiale des données de POI urbains et ont proposé un modèle pour estimer la densité du noyau de réseau pour fournir des conseils à l'aménagement du territoire. Ma et al. [14] ont proposé un modèle de recherche visuelle des POI du transport routier pour aider à réduire les coûts de transport. Liu et al. [15] ont calculé l'attractivité des POI en fonction du nombre d'arrêts des taxis à proximité des POI.

    Aucune littérature n'a intégré les données de trafic en temps réel aux données de POI. En utilisant les données du réseau routier urbain, les données de trafic en temps réel et les données de POI, cette étude a exploré la corrélation entre la congestion du trafic et différents attributs de l'utilisation des terres urbaines et a établi l'évolution du modèle géographique de congestion du trafic urbain. Les résultats de cette étude contribueraient à l'élaboration de politiques dans la planification de l'utilisation des terres urbaines.

    2. Introduction et extraction de POI

    2.1. Présentation de POI

    Dans un Système d'Information Géographique, les POI incluent les maisons, les sites pittoresques, les magasins et la boîte aux lettres. Les données des POI contiennent les coordonnées de la longitude et de la latitude, les catégories, les informations de localisation spécifiques et l'identification de l'utilisateur (UID). Cette étude a utilisé la carte électronique des POI de Pékin car elle a enregistré une énorme quantité d'informations sur l'emplacement des villes.

    2.2. Classification et extraction des POI

    La classification par défaut des POI de Pékin est de 16 catégories en première classe et 96 catégories en deuxième classe, dont la plupart ne sont pas liées aux déplacements des résidents. Cette étude a mené une enquête détaillée pour obtenir une meilleure classification des POI de Pékin représentant bien les objectifs de déplacement des résidents. Le résultat montre que « le travail », « l'école », « les achats », « les loisirs » et le « retour à la maison » sont les principaux objectifs de voyage des résidents de Pékin, représentant environ 85 % du total des déplacements, comme indiqué dans le tableau 1. Ainsi, de nouvelles catégories de POI pour la classification, y compris l'éducation, le travail, les achats, le logement et les loisirs, ont été créées, comme le montre le tableau 2.


    Soit $u:mathbb R^n omathbb R$, $xmapsto u(x)=x^Tx$. Il existe une application linéaire $ell_x:mathbb R^n omathbb R$, appelée gradient de $u$ à $x$, telle que

    quand $z o0$. Pour calculer $ell_x$, notez que $ u(x+z)=(x+z)^T(x+z)=x^Tx+z^Tx+x^Tz+z^Tz=u(x) +2x^Tz+o(|z|), $ d'où $ ell_x(z)=2x^Tz. $ Chaque forme linéaire $ell$ sur $mathbb R^n$ a la forme $ell:zmapsto w^Tz$ pour certains $w$ dans $mathbb R^n$ donc on identifie souvent $ell $ avec $w$ (techniquement, il s'agit d'identifier le double de $mathbb R^n$ avec $mathbb R^n$). Dans le cas présent, on peut identifier le gradient $ell_x$ de $u$ à $x$ (une application linéaire de $mathbb R^n$ à $mathbb R$) avec le vecteur $2x$ (un élément de $mathbb R^n$), et en effet, on lit souvent la formule $ ( extu)(x)=2x. $


    Conclusions et travaux futurs

    Cet article propose une méthode qui prédit et détecte les cyberattaques en utilisant à la fois des algorithmes d'apprentissage automatique et les données des précédents cas de cybercriminalité. Dans le modèle, les caractéristiques des personnes susceptibles d'être attaquées et les méthodes d'attaque auxquelles elles peuvent être exposées sont prédites. Il a été observé que les méthodes d'apprentissage automatique sont assez efficaces. La méthode linéaire SVM est la plus réussie de ces méthodes. Le taux de réussite de la prédiction de l'attaquant qui effectuera une cyber-attaque dans le modèle est d'environ 60%. D'autres méthodes d'intelligence artificielle pourraient tenter d'augmenter ce ratio. Dans notre approche, il est conclu qu'il est nécessaire d'attirer l'attention sur les attaques de logiciels malveillants et d'ingénierie sociale en particulier. Il a été constaté que plus les niveaux d'éducation et de revenu de la victime sont élevés, moins la probabilité de cyberattaque est élevée. L'objectif principal de cette étude est de diriger les services répressifs dans la lutte contre la cybercriminalité et de fournir des solutions plus rapides et plus efficaces pour détecter la criminalité et les criminels. De nouveaux systèmes de formation et d'alerte peuvent être créés pour les personnes ayant des caractéristiques similaires par l'évaluation des caractéristiques des victimes d'attaques ressorties de notre étude d'analyse.

    Pour les travaux futurs, la criminalité, la criminalité, le profilage des victimes et les cyberattaques peuvent être prédits à l'aide d'algorithmes d'apprentissage en profondeur et les résultats peuvent être comparés. Sur la base des discussions avec d'autres unités autorisées disposant de bases de données sur la criminalité, des données sur la cybercriminalité d'autres provinces peuvent également être obtenues à des fins de comparaison avec cette étude. Les données d'autres provinces peuvent être comparées à des études similaires. Des systèmes intelligents de détection des victimes criminelles qui peuvent être utiles aux organismes chargés de l'application de la loi dans la lutte contre le crime et les criminels peuvent être créés pour réduire les taux de criminalité.


    Classification des méthodes DDC¶

    Les méthodes SDC peuvent être classées comme non perturbateur et perturbateur (voir HDFG12).

    • Méthodes non perturbatives réduire le détail des données en généralisant ou en supprimant certaines valeurs (c'est-à-dire en masquant) sans déformer la structure des données.
    • Méthodes perturbatrices ne supprimez pas les valeurs dans l'ensemble de données, mais perturbez (c'est-à-dire modifiez) les valeurs pour limiter le risque de divulgation en créant une incertitude autour des vraies valeurs.

    Les méthodes non perturbatives et perturbatives peuvent être utilisées pour les variables catégorielles et continues.

    Nous distinguons également entre probabiliste et déterministe Méthodes SDC.

    • Méthodes probabilistes dépendent d'un mécanisme probabiliste ou d'un mécanisme générateur de nombres aléatoires. Chaque fois qu'une méthode probabiliste est utilisée, un résultat différent est généré. Pour ces méthodes, il est souvent recommandé de définir une graine pour le générateur de nombres aléatoires si vous souhaitez produire des résultats reproductibles.
    • Méthodes déterministes suivre un certain algorithme et produire les mêmes résultats s'il est appliqué à plusieurs reprises aux mêmes données avec le même ensemble de paramètres.

    Les méthodes SDC pour les microdonnées visent à empêcher la divulgation d'identité et d'attributs. Différentes méthodes SDC sont utilisées pour chaque type de contrôle de divulgation. Des méthodes telles que le recodage et la suppression sont appliquées aux quasi-identifiants pour empêcher la divulgation d'identité, tandis que le codage supérieur d'un quasi-identifiant (par exemple, le revenu) ou la perturbation d'une variable sensible empêchent la divulgation d'attributs.

    Comme ce guide pratique est rédigé autour de l'utilisation de la sdcMicro package, nous discutons uniquement des méthodes SDC qui sont implémentées dans le sdcMicro package ou peut être facilement mis en œuvre dans R. Ce sont les méthodes les plus couramment appliquées dans la littérature et utilisées dans la plupart des agences expérimentées dans l'utilisation de ces méthodes. Le tableau 6 donne un aperçu des méthodes SDC abordées dans ce guide, leur classification, les types de données auxquels elles sont applicables et leurs noms de fonction dans le sdcMicro paquet.

    Tableau 6 Méthodes SDC et fonctions correspondantes dans sdcMicro
    Méthode Classification de la méthode SDC Type de données Fonction dans sdcMicro
    Recodage global non perturbatif, déterministe continu et catégorique globalRecode , groupVars
    Codage haut et bas non perturbatif, déterministe continu et catégorique topBotCoding
    Suppression locale non perturbatif, déterministe catégorique localSuppression, localSupp
    LANDAU perturbatif, probabiliste catégorique landau
    Micro-agrégation perturbatif, probabiliste continu microagrégation
    Ajout de bruit perturbatif, probabiliste continu ajoute du bruit
    Mélanger perturbatif, probabiliste continu mélanger
    Échange de rang perturbatif, probabiliste continu échange de rang


    Si vous utilisez la pénalité l-1 sur le vecteur de poids, il effectue une sélection automatique des caractéristiques car les poids correspondant aux attributs non pertinents sont automatiquement mis à zéro. Voir ce document. La grandeur (absolue) de chaque poids non nul peut donner une idée de l'importance de l'attribut correspondant.

    Consultez également ce document qui utilise des critères dérivés des SVM pour guider la sélection des attributs.

    Isabelle Guyon, André Elisseeff, "An Introduction to Variable and Feature Selection", JMLR, 3(Mar):1157-1182, 2003. http://jmlr.csail.mit.edu/papers/v3/guyon03a.html

    vaut la peine d'être lu, il donnera un bon aperçu des approches et des enjeux. La seule chose que j'ajouterais est que la sélection des fonctionnalités n'améliore pas nécessairement les performances prédictives et peut facilement les aggraver (car il est facile de surajuster le critère de sélection des fonctionnalités). L'un des avantages des SVM (surtout linéaires) est qu'elles fonctionnent bien avec un grand nombre de fonctionnalités (à condition de régler correctement le paramètre de régularisation), de sorte qu'elles ne sont souvent pas nécessaires si vous ne vous intéressez qu'à la prédiction.

    Si vous utilisez R, l'importance de la variable peut être calculée avec la méthode Importance dans le package rminer. Voici mon exemple de code :


    L'héritage est généralement décrit comme une relation « est-un ». Ainsi, lorsque vous dérivez un chien d'un animal, nous pouvons dire qu'un chien est un animal. Cependant, lorsque vous dérivez un chat d'un chien , à moins qu'il ne s'agisse d'une autre planète, nous ne pouvons pas correctement dire qu'un chat est un chien . De plus, nous pouvons, sans erreur, invoquer Tina.woof('ferocious') pour provoquer "Tina vient de faire un woof féroce". Puisqu'aucun chat persan que j'aie jamais vu n'a été connu pour "woofer" férocement ou non, c'est un résultat alarmant et surprenant.

    Mieux serait de dériver les types Chien et Chat d'Animal. Si vous avez d'autres animaux qui n'ont pas de noms, de races ou de genres, vous pourriez avoir une classe intermédiaire telle que Pet qui capturerait les détails supplémentaires pas déjà dans Animal . Sinon, ajoutez simplement ces attributs à Animal .

    Enfin, nous pouvons mettre la méthode speak dans la classe Animal de base. Voici une illustration simple :

    Il y a plus qui pourraient être améliorés, mais j'espère que cela aidera jusqu'à ce que d'autres se penchent sur votre question et donnent des réponses plus complètes.