Skip to content
Snippets Groups Projects
Commit dec8dbc7 authored by FERRAT Samy's avatar FERRAT Samy
Browse files

dépot du projet

parents
No related branches found
No related tags found
No related merge requests found
__pycache__/
*.pyc
*.pdf
.DS_store
\ No newline at end of file
# TO DO
\ No newline at end of file
Stack trace:
Frame Function Args
000005FA980 00180064365 (00180289382, 00180266FBE, 0000000005E, 000005FAE60)
000005FAEB0 001800499D2 (001800CC7D7, 000005FFAE0, 00180325DE0, 00100001000)
000005FBEC0 00180049A11 (00000000000, 0000000005A, 0000000005E, 00080228200)
000005FBF50 001800D680C (00180266B72, 00180347408, 00180369680, 000005FBFCC)
000005FBFD0 00180141279 (00180228200, 000005FC080, 0018010DF7F, 00180228210)
000005FC060 00180049E5D (00180040000, 000005FDDE0, 00000000000, 00000000000)
000005FC0F0 0018004B55F (0007FFE0384, 00000000000, 00000000000, 00000000000)
000005FF328 001800D7DE8 (00000000000, 00000000000, 00000000000, 00000000000)
000005FF5E0 7FFF45FA9A1D (00180040000, 00000000001, 00000000000, 000005FF528)
000005FF5E0 7FFF45FFC1E7 (7FFF45FCDB00, 00000785301, 7FFF00000001, 00000000001)
000005FF5E0 7FFF45FFBF7A (000007853B0, 000005FF5E0, 00000785D20, 00000070000)
000005FF5E0 7FFF45FFC000 (00000000010, 00000000000, 7FFF460C1AA0, 000005FF678)
00000000000 7FFF46063C2A (00000000000, 00000000000, 00000000001, 00000000000)
00000000000 7FFF46004CDB (7FFF45F90000, 00000000000, 0000021E000, 00000000000)
00000000000 7FFF46004B63 (00000000000, 00000000000, 00000000000, 00000000000)
00000000000 7FFF46004B0E (00000000000, 00000000000, 00000000000, 00000000000)
End of stack trace
<<<<<<< HEAD
TEST_RATIO = 0.3
SEED = 13
=======
TEST_RATIO = 0.2
SEED = 5
SIZE_TRAIN=[20, 50, 100, 250, 450, 648]
>>>>>>> 324e24a (dépot du projet)
This diff is collapsed.
Price: The price of the house.
Area: The total area of the house in square feet.
Bedrooms: The number of bedrooms in the house.
Bathrooms: The number of bathrooms in the house.
Stories: The number of stories in the house.
Mainroad: Whether the house is connected to the main road (Yes/No).
Guestroom: Whether the house has a guest room (Yes/No).
Basement: Whether the house has a basement (Yes/No).
Hot water heating: Whether the house has a hot water heating system (Yes/No).
Airconditioning: Whether the house has an air conditioning system (Yes/No).
Parking: The number of parking spaces available within the house.
Prefarea: Whether the house is located in a preferred area (Yes/No).
Furnishing status: The furnishing status of the house (Fully Furnished, Semi-Furnished, Unfurnished).
House Age: the house age
\ No newline at end of file
This diff is collapsed.
<<<<<<< HEAD
fakelibrary==1.0.1
=======
pandas>=1.5.3
numpy>=1.24.3
matplotlib>=3.7.1
seaborn>=0.12.2
scikit-learn>=1.2.2
>>>>>>> 324e24a (dépot du projet)
import pandas as pd
def load_data(filename: str) -> pd.DataFrame:
"""_summary_
Args:
filename (str): _description_
Returns:
pd.DataFrame: _description_
"""
<<<<<<< HEAD
pass
=======
data=pd.read_csv(filename)
return data
>>>>>>> 324e24a (dépot du projet)
import pandas as pd
def rename_data(data : pd.DataFrame) -> pd.DataFrame :
"""_summary_
Args:
data : Notre jeu de données brutes
Returns:
pd.DataFrame: Notre jeu de données avec un format de colonnes correctes
"""
data.columns=data.columns.str.lower()
data.columns=data.columns.str.replace(' ','_')
return data
def cat_to_quant(data: pd.DataFrame) -> pd.DataFrame:
"""_summary_
Args:
data : Notre jeu de données contenant des variables catégorielles
Returns:
pd.DataFrame: Notre jeu de données avec les variables catégorielles transformées en variables quantitatives
"""
data=data.replace({'yes': 1, 'no': 0})
return data
def delete_feature(data: pd.DataFrame, feature: str) -> pd.DataFrame:
"""
Supprime une colonne spécifiée du DataFrame
Args:
data (pd.DataFrame): Le jeu de données à partir duquel la colonne doit être supprimée.
feature (str): Le nom de la colonne à supprimer.
Returns:
pd.DataFrame: Un DataFrame avec la colonne spécifiée supprimée.
"""
if feature in data.columns:
data = data.drop(columns=[feature])
return data
def impute_mean(data)-> pd.DataFrame:
"""
Remplace les valeurs manquantes dans les colonnes numériques d'un DataFrame par la moyenne de chaque colonne.
Args:
dataframe (pd.DataFrame): Le DataFrame sur lequel effectuer l'imputation.
Returns:
pd.DataFrame: Un DataFrame avec les valeurs manquantes dans les colonnes numériques remplacées par les moyennes.
"""
cols = data.columns
# Calcule de la moyenne pour chaque colonne
means = data[cols].mean()
# Remplacer les valeurs manquantes par les moyennes dans les colonnes
data[cols] = data[cols].fillna(means)
#on transforme toutes les données du jeu de données en entier car des variables binaires se retrouvent non binaire
data=data.astype('int64')
return data
def encode_and_bind(df: pd.DataFrame, column_name: str) -> pd.DataFrame:
"""
Convertit une colonne catégorielle en minuscules, applique un encodage one-hot,
ajoute les colonnes encodées au DataFrame original, exclut une des colonnes encodées pour éviter la multicollinéarité,
et supprime la colonne catégorielle originale.
Args:
df (pd.DataFrame): DataFrame contenant la colonne à transformer.
column_name (str): Nom de la colonne catégorielle à encoder.
Returns:
pd.DataFrame: DataFrame avec la colonne originale remplacée par ses encodages one-hot.
"""
if column_name not in df.columns:
raise ValueError(f"{column_name} does not exist in the DataFrame.")
df[column_name] = df[column_name].str.lower()
cat_to_quant = pd.get_dummies(df[column_name])
df = pd.concat([df, cat_to_quant.iloc[:, :-1]], axis=1)
df.drop(columns=[column_name], inplace=True)
return df
\ No newline at end of file
import numpy as np
import pandas as pd
def split_data(data, test_ratio, random_seed, target_column):
"""
Divise un DataFrame étiqueté en ensembles d'entraînement et de test. Les données sont également mélangées
manuellement.
Args:
df (pd.DataFrame): Le DataFrame à diviser.
test_ratio (float): La proportion des données à utiliser pour le test set, entre 0 et 1.
random_seed (int): La graine pour la randomisation, assure la reproductibilité des résultats.
target_column (str): Le nom de la colonne cible dans le DataFrame.
Returns:
tuple: Contenant X_train, y_train, X_test, y_test, où "X" sont les variables explicatives
et "y" est la variable à prédire.
"""
# S'ssurer que target_column est présent dans DataFrame
if target_column not in data.columns:
raise ValueError(f"{target_column} does not exist in the DataFrame.")
# Mélanger les données
np.random.seed(random_seed)
shuffled_indices = np.random.permutation(len(data))
test_set_size = int(len(data) * test_ratio)
test_indices = shuffled_indices[:test_set_size]
train_indices = shuffled_indices[test_set_size:]
# Créer les datasets de test et d'entraînement
train_df = data.iloc[train_indices]
test_df = data.iloc[test_indices]
X_train = train_df.drop(columns=[target_column])
y_train = train_df[target_column]
X_test = test_df.drop(columns=[target_column])
y_test = test_df[target_column]
return X_train, y_train, X_test, y_test
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment