Applicazioni pratiche di machine learning/Previsione di reati: differenze tra le versioni
Nuova pagina: {{Applicazioni pratiche di machine learning}} ==Caricamento librerie== <syntaxhighlight lang="rsplus"> library(dplyr) library(ggplot2) library(caret) library(h2o) </syntaxhighlight>... |
(Nessuna differenza)
|
Versione delle 13:18, 8 ott 2020
Caricamento librerie
library(dplyr)
library(ggplot2)
library(caret)
library(h2o)
Parte 1: Dati
Il dataset crimes.csv scaricabile da qui : https://www.kaggle.com/AnalyzeBoston/crimes-in-boston contiene 317.751 records relativi a reati forniti dal Dipartimento di Polizia di Boston (BPD) con informazioni su dove e quando essi si sono verificati. Le variabili contenute nel dataset sono le seguenti :
- INCIDENT_NUMBER:Numero interno dell'incidente stabilito da BPD
- OFFENSE_CODE: Codice numerico della descrizione dell'incidente
- OFFENSE_CODE_GROUP: Categoria interna per la descrizione dell'incidente
- OFFENSE_DESCRIPTION:Descrizione primaria dell'incidente
- DISTRICT:Quartiere in cui si è verificato l'incidente
- REPORTING_AREA: Numero RA associato con il luogo in cui si è verificato l'incidente
- SHOOTING:Indica se la registrazione è avvenuta nel luogo del fatto
- OCCURRED_ON_DATE:Giorno e ora in cui l'incidente si è verificato
- YEAR: Anno dell'incidente
- MONTH: Mese dell'incidente
- DAY_OF_WEEK:Giorno della settimana
- HOUR:Ora
- UCR_PART:Uniform Crime Report che può assumere 3 valori (Part 1,Part 2, Part 3).
- Part 1 include crimini violenti e crimini contro il patrimonio. Ad esempio Aggressione aggravata , stupro forzato , omicidio e rapina mentre incendio doloso , furto con scasso , furto e furto di veicoli a motore sono classificati come reati contro il patrimonio.
- Parte 2, vengono incluse le seguenti categorie: aggressione semplice, reati di coprifuoco e vagabondaggio, appropriazione indebita, falsificazione e contraffazione, condotta disordinata, guida sotto l'influenza di droghe, reati di droga, frode, gioco d'azzardo, reati di alcol, reati contro la famiglia, prostituzione, ubriachezza in pubblico, fughe, reati sessuali, beni rubati, atti vandalici, vagabondaggio e reati legati alle armi.
- Parte 3 : Altro
- STREET:Nome della strada in cui l'incidente si è verificato
- Lat: Latitudine del luogo in cui si è verificato l'incidente
- Long: Longitudine
- Location:(Latitudine, Longitudine)
Caricamento dati:
crime <- read.csv("crime.csv")
Parte 2: Esplorazione dati
crime %>%
filter(!is.na(OFFENSE_CODE_GROUP)) %>%
group_by(OFFENSE_CODE_GROUP) %>%
summarise(n=n()) %>%
filter(n>200) %>%
mutate(OFFENSE_CODE_GROUP=reorder(OFFENSE_CODE_GROUP,n)) %>%
ggplot(aes(OFFENSE_CODE_GROUP,n))+
geom_bar(stat="identity", fill="red")+
coord_flip()+
geom_text(aes(label=n), hjust=0, size=2)+
guides(fill=FALSE)+
ylab("Numero totale") +
xlab("Crimine") +
ggtitle("Tipo di incidenti o reati a Boston")
crime %>%
group_by(STREET) %>%
summarise(n=n()) %>%
filter(n>800) %>%
mutate(STREET=reorder(STREET,n)) %>%
ggplot(aes(STREET,n, fill=STREET))+
geom_bar(stat="identity", fill="blue")+
coord_flip()+
geom_text(aes(label=n), hjust=0, size=2)+
guides(fill=FALSE)+
ylab("Numero totale") +
xlab("Strade") +
ggtitle("Strade di Boston con più crimini")
crime %>%
group_by(DISTRICT,UCR_PART) %>%
summarise(n=n()) %>%
filter(n>800) %>%
mutate(STREET=reorder(DISTRICT,n)) %>%
ggplot(aes(STREET,n, fill=UCR_PART))+
geom_bar(stat="identity")+
coord_flip()+
ylab("Numero totale") +
xlab("Quartieri") +
ggtitle("Quartieri di Boston per UCR_PART")
Parte 3: Domanda di ricerca
Si vuole predire che tipo di reato verrà compiuto, cioè se di UCR_PART 1,2 o 3 in base al luogo e al tempo indicato. Quindi UCR_PART è la variabile da predire tramite le variabili : Lat, Long, YEAR, MONTH, HOUR, DAYS_OF_WEEK
Parte 4: Modellizzazione
```{r} crime$UCR_PART <- as.character(crime$UCR_PART) crime<- crime[-which(crime$UCR_PART==""),] crime<- crime[-which(crime$UCR_PART=="Other"),] crime$UCR_PART <- as.factor(crime$UCR_PART) ```
```{r} trainIndex <- createDataPartition(crime$UCR_PART,p=0.7, list = FALSE) training <- crime[trainIndex,] testing <- crime[-trainIndex,]
```
```{r} h2o.init() ```
H2O is not running yet, starting it now...
openjdk version "11.0.8" 2020-07-14 OpenJDK Runtime Environment (build 11.0.8+10-post-Ubuntu-0ubuntu120.04) OpenJDK 64-Bit Server VM (build 11.0.8+10-post-Ubuntu-0ubuntu120.04, mixed mode, sharing)
Starting H2O JVM and connecting: ..... Connection successful!
R is connected to the H2O cluster: H2O cluster uptime: 6 seconds 187 milliseconds H2O cluster timezone: Europe/Rome H2O data parsing timezone: UTC H2O cluster version: 3.30.1.3 H2O cluster version age: 8 days H2O cluster name: H2O_started_from_R_gian_vxl021 H2O cluster total nodes: 1 H2O cluster total memory: 1.92 GB H2O cluster total cores: 2 H2O cluster allowed cores: 2 H2O cluster healthy: TRUE H2O Connection ip: localhost H2O Connection port: 54321 H2O Connection proxy: NA H2O Internal Security: FALSE H2O API Extensions: Amazon S3, XGBoost, Algos, AutoML, Core V3, TargetEncoder, Core V4 R Version: R version 3.6.3 (2020-02-29)