Merge pull request 'Support kNN as an imputation method' (#8) from knn into main

Reviewed-on: https://codefirst.iut.uca.fr/git/clement.freville2/miner/pulls/8
This commit is contained in:
Hugo PRADIER
2024-06-21 15:51:46 +02:00
2 changed files with 44 additions and 3 deletions

View File

@@ -1,5 +1,5 @@
import streamlit as st
from normstrategy import MVStrategy, ScalingStrategy
from normstrategy import MVStrategy, ScalingStrategy, KNNStrategy
if "data" in st.session_state:
data = st.session_state.original_data
@@ -8,13 +8,17 @@ if "data" in st.session_state:
for column, series in data.items():
col1, col2 = st.columns(2)
missing_count = series.isna().sum()
choices = MVStrategy.list_available(data, series)
choices = MVStrategy.list_available(data, column, series)
option = col1.selectbox(
f"Missing values of {column} ({missing_count})",
choices,
index=1,
key=f"mv-{column}",
)
if isinstance(option, KNNStrategy):
print(option.available_features)
option.training_features = st.multiselect("Training columns", option.training_features, default=option.available_features, key=f"cols-{column}")
option.n_neighbors = st.number_input("Number of neighbors", min_value=1, value=option.n_neighbors, key=f"neighbors-{column}")
# Always re-get the series to avoid reusing an invalidated series pointer
data = option.apply(data, column, data[column])