交易中的机器学习:理论、模型、实践和算法交易 - 页 2477

 

对于那些感兴趣的人,这里有一个在分类问题中平衡类的脚本。

平衡是基于使用高斯混合模型对原始样本进行重新取样。我建议使用它,因为在本地数据集中,类别标签很少是平衡的。

节省了大量的时间和神经。

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#:

如果你有兴趣,这里有一个在分类问题中平衡类的脚本。

平衡是基于使用高斯混合模型对原始样本进行重新取样。我建议使用它,因为在本地数据集中,类别标签很少是平衡的。

节省了大量的时间和神经。

python中不是有标准的bibbles吗?

 
mytarmailS#:

在Python中难道没有任何标准库来处理这个问题吗?

可能有,但我没有遇到过。

 
iwelimorn#:

对于那些感兴趣的人,这里有一个在分类问题中 平衡类的脚本。

平衡是基于使用高斯混合模型对原始样本进行重新取样。我建议使用它,因为在本地数据集中,类别标签很少是平衡的。

节省了大量的时间和神经。

我认为, 用神经网络 解决分类问题时,我们需要明确这一点。
森林和助推器不需要平衡。

 
iwelimorn#:

可能有这样的图书馆,但我没有遇到过。

我明白了...只是R-ka有大量用于MO的东西,而python被定位为MO的语言,除了2-3个未锁定的库,它没有任何东西。

这是不可以理解的()

 
elibrarius#:

我认为我们需要澄清这一点, 用神经网络 解决分类问题时
森林和助推器不需要进行平衡。

也许。

 
mytarmailS#:

我明白了...只是R-ka有很多用于MO的东西,而python被定位为MO的语言,它除了2-3个解锁的二进制文件外,什么都没有。

我不明白 ((

我不熟悉R,我把MO作为选修课来学习,我对Doning-Krueger的绝望吞噬才刚刚开始。

 
mytarmailS#:

python中不是有标准的bibbles吗?

有一本圣经用在那里,只是包裹着
 
iwelimorn#:

对于那些感兴趣的人,这里有一个在分类问题中平衡类的脚本。

平衡是基于使用高斯混合模型对原始样本进行重新取样。我建议使用它,因为在本地数据集中,类标签很少是平衡的。

节省了大量的时间和神经。

在我看来,这里更多的是标准化而不是平衡效应。另外,从分布中取样有助于防止过度训练
 
iwelimorn#:

进入绝望之谷的旅程的开始

)))一切都会好起来的!