Skip to content
Snippets Groups Projects
LWPLSR_.py 2.15 KiB
Newer Older
Nicolas Barthes's avatar
Nicolas Barthes committed
import pandas as pd
import streamlit
from Packages import *
from Class_Mod.Miscellaneous import *

class LWPLSR:
    """
    The UMAP dimension reduction algorithm from scikit learn
    """
    def __init__(self, x_train, x_test, y_train, y_test):
        """Initiate the LWPLSR and prepare data for Julia computing."""
        self.x_train, self.y_train, self.x_test, self.y_test = x_train, x_test, y_train, y_test
        # prepare to send dataframes to julia and Jchemo
Nicolas Barthes's avatar
Nicolas Barthes committed
        jl.x_train,jl.y_train,jl.x_test,jl.y_test = self.x_train, self.y_train, self.x_test, self.y_test
        self.scores = pd.DataFrame
        self.predicted_results_on_test = pd.DataFrame

    def Jchemo_lwplsr(self):
        """Send data to Julia to compute lwplsr.

        Args:
Nicolas Barthes's avatar
Nicolas Barthes committed
            self.jl.x_train (DataFrame):
            self.jl.y_train (DataFrame):
            self.jl.x_test (DataFrame):
            self.jl.y_test (DataFrame):

        Returns:
            self.scores (DataFrame): various metrics and scores
            self.predicted_results_on_test (DataFrame):
        """
        # launch Julia Jchemo lwplsr
Nicolas Barthes's avatar
Nicolas Barthes committed
        jl.eval("""
        using Pandas
        using DataFrames
        using Jchemo
        nlvdis = 5 ; metric = :mah
        h = 1 ; k = 200 ; nlv = 15 #; scal = true
Nicolas Barthes's avatar
Nicolas Barthes committed
        mod = Jchemo.model(Jchemo.lwplsr; nlvdis, metric, h, k, nlv)
        Jchemo.fit!(mod, X_train, y_train)
        # Jchemo.pnames(mod)
        # Jchemo.pnames(mod.fm)
        # predictions on test data calculation
Nicolas Barthes's avatar
Nicolas Barthes committed
        res = Jchemo.predict(mod, X_test)
        # Jchemo.pnames(res)
Nicolas Barthes's avatar
Nicolas Barthes committed
        resjp = jl.seval("""
        Pandas.DataFrame(res.pred)
        """)
        scoresjp = jl.seval("""
        Jchemo.mse(res.pred, y_test)
        """)
        self.scores = pd.Dataframe(scoresjp)
        self.predicted_results_on_test = pd.Dataframe(resjp)

    @property
    def pred_data_(self):
        return self.predicted_results_on_test, self.predicted_results_on_test, self.predicted_results_on_test

    # @property
    # def model_(self):
    #     return self.trained

    @property
Nicolas Barthes's avatar
Nicolas Barthes committed
    def metrics_(self):
        # self.scores = pd.DataFrame(self.scores, index=['test'])
        return self.scores