-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathProjet-1sur5-Traitement_des_Donnees.Rmd
124 lines (86 loc) · 3.34 KB
/
Projet-1sur5-Traitement_des_Donnees.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
---
title: "Projet 1/5 Traitement Des Donnees"
author: "Nicolas SALVAN - Alexandre CORRIOU"
date: "2024-05-17"
output: pdf_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
# Lecture des données
Notre jeu de données contient des informations sur des patientes atteintes d'un cancer du sein. Nous allons commencer par lire les données et les afficher pour mieux les comprendre. Ce fichier contient le code pour *pré-traiter les données*.
## Importation du dataset
```{r}
data <- read.csv("data/breast-cancer.csv", header = TRUE, sep = ",")
```
## Affichage des premières lignes
```{r}
head(data)
```
On observe qu'il y a une variable qualitative "diagnosis" qui correspond au diagnostic de la patiente. Toutes les autres variables sont quantitatives, et décrives les caractéristiques du cancer.
## Affichage des dimensions
```{r}
dim(data)
```
Notre jeu de données contient 569 observations et 32 variables.
## Affichage des types des variables
```{r}
str(data)
```
## Conversion des données qualitatives en factor
On observe que la variable "diagnosis" est de type "chr". Nous allons la convertir en facteur pour faciliter l'analyse.
```{r}
data$diagnosis <- as.factor(data$diagnosis)
str(data)
```
Tous les types de variables semblent corrects.
## Nettoyage
Certaines variables sont inutilisables, comme l'identifiant de la patiente. Nous allons les supprimer. Il nous faut également supprimer les NaNs pour éviter les erreurs dans les analyses.
```{r}
# suppression des NaNs
data <- na.omit(data)
# suppression des colonnes inutiles : identifiant de la patiente
data <- data[,-c(1)]
head(data)
```
## Exportation des données
Nous allons exporter les données nettoyées pour les utiliser dans les analyses suivantes.
```{r}
write.csv(data, "data/data_cleaned.csv", row.names = FALSE)
```
## Séparation des données
Nous allons séparer les données en deux parties : une partie pour l'apprentissage et une partie pour le test.
```{r}
split_data <- function (data, train_ratio) {
set.seed(123)
n <- nrow(data)
p <- ncol(data)-1
test.ratio <- 1 - train_ratio
n.test <- round(n*test.ratio)
train_index <- sample(1:nrow(data), n.test)
train_data <- data[-train_index,]
test_data <- data[train_index,]
return(list(train_data = train_data, test_data = test_data))
}
```
```{r}
data_split <- split_data(data, 0.8) # 1/5 des données pour le test
train_data <- data_split$train_data
test_data <- data_split$test_data
```
## Exportation des données d'apprentissage et de test
```{r}
write.csv(train_data, "data/train_data.csv", row.names = FALSE)
write.csv(test_data, "data/test_data.csv", row.names = FALSE)
```
Il faut noter qu'il faudra convertir la colonne "diagnosis" en facteur dans les données d'apprentissage et de test, mais aussi dans les données cleaned.
## Données d'entrainement équilibrées
```{r}
train_data_balanced <- rbind(train_data[train_data$diagnosis == "M",], train_data[train_data$diagnosis == "B",][1:179,])
table(train_data_balanced$diagnosis)
```
Nous avons maintenant des données d'entrainement équilibrées.
## Exportation des données d'apprentissage équilibrées
```{r}
write.csv(train_data_balanced, "data/train_data_balanced.csv", row.names = FALSE)
```