91 KiB
91 KiB
In [1]:
import pandas as pd
phone = pd.read_csv("data/phone_price.csv", index_col="Id")
phone.info()
display(phone.shape)
phone.head()
Out[1]:
In [2]:
car = pd.read_csv("data/car_price.csv")
car.info()
display(car.shape)
car.head()
Out[2]:
In [3]:
house = pd.read_csv("data/house_data.csv")
house.info()
display(house.shape)
house.head()
Out[3]:
In [4]:
# Количество пустых значений признаков
display(phone.isnull().sum())
display()
# Есть ли пустые значения признаков
display(phone.isnull().any())
display()
# Процент пустых значений признаков
for i in phone.columns:
null_rate = phone[i].isnull().sum() / len(phone) * 100
if null_rate > 0:
display(f"{i} процент пустых значений: %{null_rate:.2f}")
In [5]:
# Количество пустых значений признаков
display(car.isnull().sum())
display()
# Есть ли пустые значения признаков
display(car.isnull().any())
display()
# Процент пустых значений признаков
for i in car.columns:
null_rate = car[i].isnull().sum() / len(car) * 100
if null_rate > 0:
display(f"{i} процент пустых значений: %{null_rate:.2f}")
In [6]:
# Количество пустых значений признаков
display(house.isnull().sum())
display()
# Есть ли пустые значения признаков
display(house.isnull().any())
display()
# Процент пустых значений признаков
for i in house.columns:
null_rate = house[i].isnull().sum() / len(house) * 100
if null_rate > 0:
display(f"{i} процент пустых значений: %{null_rate:.2f}")
В 1 наборе данных phone имеются пустые значения, в остальных они отсутствуют. Заполним пустые значения из 1 датасета.
In [7]:
# Замена пустых данных на моду (часто встречающееся значение)
mode_Android = phone['Android_version'].mode()
phone.fillna({'Android_version':mode_Android}, inplace=True)
Inbuilt_memory = phone['Inbuilt_memory'].mode()
phone.fillna({'Inbuilt_memory':Inbuilt_memory}, inplace=True)
fillna_df = phone.fillna(0)
dropna_df = phone.dropna()
display(dropna_df.shape)
display(fillna_df.isnull().any())
phone.tail()
Out[7]:
In [8]:
# Вывод распределения количества наблюдений по меткам (классам)
from src.utils import split_stratified_into_train_val_test
display(phone.Class.value_counts())
display()
data = phone[["Class", "Spec_score", "Rating"]].copy()
df_train, df_val, df_test, y_train, y_val, y_test = split_stratified_into_train_val_test(
data, stratify_colname="Class", frac_train=0.60, frac_val=0.20, frac_test=0.20
)
display("Обучающая выборка: ", df_train.shape)
display(df_train.Class.value_counts())
display("Контрольная выборка: ", df_val.shape)
display(df_val.Class.value_counts())
display("Тестовая выборка: ", df_test.shape)
display(df_test.Class.value_counts())
In [9]:
from imblearn.over_sampling import ADASYN
ada = ADASYN()
display("Обучающая выборка: ", df_train.shape)
display(df_train.Class.value_counts())
X_resampled, y_resampled = ada.fit_resample(df_train, df_train["Class"]) # type: ignore
df_train_adasyn = pd.DataFrame(X_resampled)
display("Обучающая выборка после oversampling: ", df_train_adasyn.shape)
display(df_train_adasyn.Class.value_counts())
df_train_adasyn
Out[9]:
In [10]:
from imblearn.under_sampling import RandomUnderSampler
import pandas as pd
# Создание экземпляра RandomUnderSampler
rus = RandomUnderSampler()
# Проверка исходной обучающей выборки
display("Обучающая выборка: ", df_train.shape)
display(df_train.Class.value_counts())
# Выполнение undersampling
X_resampled, y_resampled = rus.fit_resample(df_train.drop(columns=["Class"]), df_train["Class"]) # type: ignore
df_train_undersampled = pd.DataFrame(X_resampled)
# Добавление целевой переменной обратно в выборку
df_train_undersampled["Class"] = y_resampled
# Проверка обучающей выборки после undersampling
display("Обучающая выборка после undersampling: ", df_train_undersampled.shape)
display(df_train_undersampled.Class.value_counts())
df_train_undersampled
Out[10]:
In [11]:
# Вывод распределения количества наблюдений по меткам (классам)
from src.utils import split_stratified_into_train_val_test
display(car.LeatherInterior1.value_counts())
display()
data = car[["LeatherInterior1", "Airbags", "ProdYear"]].copy()
df_train, df_val, df_test, y_train, y_val, y_test = split_stratified_into_train_val_test(
data, stratify_colname="LeatherInterior1", frac_train=0.60, frac_val=0.20, frac_test=0.20
)
display("Обучающая выборка: ", df_train.shape)
display(df_train.LeatherInterior1.value_counts())
display("Контрольная выборка: ", df_val.shape)
display(df_val.LeatherInterior1.value_counts())
display("Тестовая выборка: ", df_test.shape)
display(df_test.LeatherInterior1.value_counts())
In [12]:
from imblearn.over_sampling import ADASYN
ada = ADASYN()
display("Обучающая выборка: ", df_train.shape)
display(df_train.LeatherInterior1.value_counts())
X_resampled, y_resampled = ada.fit_resample(df_train, df_train["LeatherInterior1"]) # type: ignore
df_train_adasyn = pd.DataFrame(X_resampled)
display("Обучающая выборка после oversampling: ", df_train_adasyn.shape)
display(df_train_adasyn.LeatherInterior1.value_counts())
df_train_adasyn
Out[12]:
In [13]:
from imblearn.under_sampling import RandomUnderSampler
import pandas as pd
# Создание экземпляра RandomUnderSampler
rus = RandomUnderSampler()
# Проверка исходной обучающей выборки
display("Обучающая выборка: ", df_train.shape)
display(df_train.LeatherInterior1.value_counts())
# Выполнение undersampling
X_resampled, y_resampled = rus.fit_resample(df_train.drop(columns=["LeatherInterior1"]), df_train["LeatherInterior1"]) # type: ignore
df_train_undersampled = pd.DataFrame(X_resampled)
# Добавление целевой переменной обратно в выборку
df_train_undersampled["LeatherInterior1"] = y_resampled
# Проверка обучающей выборки после undersampling
display("Обучающая выборка после undersampling: ", df_train_undersampled.shape)
display(df_train_undersampled.LeatherInterior1.value_counts())
df_train_undersampled
Out[13]:
In [14]:
# Вывод распределения количества наблюдений по меткам (классам)
from src.utils import split_stratified_into_train_val_test
display(house.bedrooms.value_counts())
display()
data = house[["bedrooms", "sqft_living", "sqft_lot"]].copy()
df_train, df_val, df_test, y_train, y_val, y_test = split_stratified_into_train_val_test(
data, stratify_colname="bedrooms", frac_train=0.60, frac_val=0.20, frac_test=0.20
)
display("Обучающая выборка: ", df_train.shape)
display(df_train.bedrooms.value_counts())
display("Контрольная выборка: ", df_val.shape)
display(df_val.bedrooms.value_counts())
display("Тестовая выборка: ", df_test.shape)
display(df_test.bedrooms.value_counts())
In [15]:
from imblearn.over_sampling import ADASYN
ada = ADASYN()
display("Обучающая выборка: ", df_train.shape)
display(df_train.bedrooms.value_counts())
X_resampled, y_resampled = ada.fit_resample(df_train, df_train["bedrooms"]) # type: ignore
df_train_adasyn = pd.DataFrame(X_resampled)
display("Обучающая выборка после oversampling: ", df_train_adasyn.shape)
display(df_train_adasyn.bedrooms.value_counts())
df_train_adasyn
Out[15]:
In [16]:
from imblearn.under_sampling import RandomUnderSampler
import pandas as pd
# Создание экземпляра RandomUnderSampler
rus = RandomUnderSampler()
# Проверка исходной обучающей выборки
display("Обучающая выборка: ", df_train.shape)
display(df_train.bedrooms.value_counts())
# Выполнение undersampling
X_resampled, y_resampled = rus.fit_resample(df_train.drop(columns=["bedrooms"]), df_train["bedrooms"]) # type: ignore
df_train_undersampled = pd.DataFrame(X_resampled)
# Добавление целевой переменной обратно в выборку
df_train_undersampled["bedrooms"] = y_resampled
# Проверка обучающей выборки после undersampling
display("Обучающая выборка после undersampling: ", df_train_undersampled.shape)
display(df_train_undersampled.bedrooms.value_counts())
df_train_undersampled
Out[16]: