Maschinelles Lernen im Handel: Theorie, Modelle, Praxis und Algo-Trading - Seite 2477

 

Für Interessierte gibt es hier ein Skript zum Ausgleich von Klassen in einem Klassifikationsproblem.

Der Abgleich basiert auf einer Neuabtastung der ursprünglichen Stichprobe unter Verwendung des Gaußschen Mischungsmodells. Ich rate dazu, weil in lokalen Datensätzen die Klassenbezeichnungen selten ausgeglichen sind.

Das spart eine Menge Zeit und Nerven.

import pandas as pd
from sklearn import mixture
import numpy as np

class GMM(object):
    def __init__(self, n_components):
        self.gmm = mixture.GaussianMixture(
                                            n_components=n_components,
                                            covariance_type='full', verbose=0,
                                            max_iter=1000,
                                            tol=1 e-4,
                                            init_params='kmeans')
        self.name_col = []
        # print("GMM_model -- create")


    def fit_data(self, data):
        self.name_col =  data.columns
        self.gmm.fit(data)
        # print("GMM_model -- fit comlite")

    def get_samples(self, n_samp):
        generated = self.gmm.sample(n_samp)
        gen = pd.DataFrame(generated[0])
        for c in range(len(self.name_col)):
            gen.rename(columns={gen.columns[c]: self.name_col[c]}, inplace=True)

        return gen

def get_balance_dataset(X,Y, gmm=30,num_samples= 200, frac=1):
        '''
        X -             features
        Y -             targets [0,1]
        gmm -           number of mixture components
        num_samples -   number of samples for each class
        num_samples -   percentage of a random number of samples from the original sampling


        '''
    name_targ = Y.columns
    X_out = pd.DataFrame()
    Y_out = pd.DataFrame()
    for index,name in enumerate(name_targ):
        prt_data = pd.concat([X, Y[name]], axis=1)
        if frac!=1:
            prt_data = prt_data[prt_data[name] == 1].drop(columns=[name]).sample(frac=frac)
        else:
            prt_data = prt_data[prt_data[name] == 1].drop(columns=[name])

        gmm_1 = GMM(n_components=gmm)
        gmm_1.fit_data(prt_data)
        sig_X = gmm_1.get_samples(num_samples)
        sig_Y = np.zeros((num_samples, len(name_targ)))
        sig_Y[:, index] = 1
        sig_Y = pd.DataFrame(sig_Y, columns=name_targ)
        X_out = pd.concat([X_out, sig_X], axis=0)
        Y_out = pd.concat([Y_out, sig_Y], axis=0)

    return X_out.to_numpy(), Y_out.to_numpy()
 
iwelimorn #:

Wenn Sie daran interessiert sind, finden Sie hier ein Skript zum Ausgleich von Klassen in einem Klassifizierungsproblem.

Der Abgleich basiert auf einer Neuabtastung der ursprünglichen Stichprobe unter Verwendung des Gaußschen Mischungsmodells. Ich empfehle, sie zu verwenden, da in lokalen Datensätzen die Klassenbezeichnungen selten ausgeglichen sind.

Das spart eine Menge Zeit und Nerven.

Gibt es keine Standard-Bibbles in Python für diese?

 
mytarmailS #:

Gibt es keine Standard-Bibliotheken in Python für diese?

Wahrscheinlich gibt es sie, aber ich bin noch nicht darauf gestoßen.

 
iwelimorn #:

Für Interessierte gibt es hier ein Skript zum Ausgleich von Klassen in einem Klassifikationsproblem.

Der Abgleich basiert auf einer Neuabtastung der ursprünglichen Stichprobe unter Verwendung des Gaußschen Mischungsmodells. Ich rate dazu, weil in lokalen Datensätzen die Klassenbezeichnungen selten ausgeglichen sind.

Das spart eine Menge Zeit und Nerven.

Ich denke, wir müssen das bei der Lösung von Klassifizierungsproblemen mit neuronalen Netzen präzisieren.
Wälder und Erhöhungen müssen nicht ausgeglichen werden.

 
iwelimorn #:

Wahrscheinlich gibt es solche Bibliotheken, aber ich bin noch nicht auf eine gestoßen.

Ich verstehe... Es ist nur so, dass R-ka tonnenweise Material für MO hat, und Python ist als Sprache für MO positioniert, und es hat nichts außer 2-3 freigeschaltete Bibliotheken.

Das ist nicht verständlich((

 
elibrarius #:

Ich denke, wir müssen das klären, wenn wir Klassifizierungsprobleme mit neuronalen Netzen lösen.
Wälder und Erhöhungen müssen nicht ausgeglichen werden.

Vielleicht.

 
mytarmailS #:

Ich verstehe... Es ist nur so, dass R-ka eine Menge Zeug für MO hat, und Python ist als Sprache für MO positioniert, und es hat nichts als 2-3 freigeschaltete Binaries.

Ich verstehe es nicht ((

Ich kenne mich mit R nicht aus, ich studiere MO als Wahlfach und stehe mit Daning-Krueger erst am Anfang meiner Verzweiflungstour.

 
mytarmailS #:

Gibt es keine Standard-Bibbles in Python für diese?

Dort wird eine Bibel benutzt, die nur eingewickelt ist.
 
iwelimorn #:

Für Interessierte gibt es hier ein Skript zum Ausgleich von Klassen in einem Klassifikationsproblem.

Der Abgleich basiert auf einer Neuabtastung der ursprünglichen Stichprobe unter Verwendung des Gaußschen Mischungsmodells. Ich empfehle, sie zu verwenden, da in lokalen Datensätzen die Klassenbezeichnungen selten ausgeglichen sind.

Das spart eine Menge Zeit und Nerven.

Meiner Meinung nach gibt es hier eher einen Standardisierungs- als einen Ausgleichseffekt. Außerdem helfen Stichproben aus Verteilungen gegen Übertraining.
 
iwelimorn #:

Der Beginn der Reise in die Schlucht der Verzweiflung

))) Alles wird gut werden!