Измените объекты типа d столбца (столбцов) в кадре данных pandas на логические значения [duplicate]

У меня уже есть ответ, теперь загрузите его ниже, я надеюсь помочь тем, кто в этом нуждается.

    int i,ret,verbose = 0,output_thumbs = 0;
    char outfn [1024],thumbfn [1024];

    //Create object
    LibRaw RawProcessor;
    putenv((char *)"TZ = UTC+8");
    //
#define P1 RawProcessor.imgdata.idata
#define S RawProcessor.imgdata.sizes
#define C RawProcessor.imgdata.color
#define T RawProcessor.imgdata.thumbnail
#define P2 RawProcessor.imgdata.other
#define OUT RawProcessor.imgdata.params
    OUT.output_tiff = 0; //
    OUT.no_auto_scale=1;//
    OUT.no_auto_bright=1;//
    OUT.output_bps=16;//16bit
    OUT.output_color=0;//RAW

    //openfile
    if((ret = RawProcessor.open_file(szFile))!= LIBRAW_SUCCESS)
    {
        fprintf(stderr,"Can not open%s:%s\n",szFile,libraw_strerror(ret));
        RawProcessor.recycle();
        return FALSE;
    }


    //RAW size
    int height=S.raw_height;
    int width=S.raw_width;




    //image info
    memset(LinsnData.imgdata.make,0,64*sizeof(char));
    memset(LinsnData.imgdata.model,0,64*sizeof(char));
    memcpy(LinsnData.imgdata.make,P1.make,strlen(P1.make));
    memcpy(LinsnData.imgdata.model,P1.model,strlen(P1.model));
    LinsnData.imgdata.aperture=P2.aperture;
    LinsnData.imgdata.iso_speed=P2.iso_speed;
    LinsnData.imgdata.shutter=P2.shutter;
    char timestamp[64]= {0};
    tm* local = localtime(&P2.timestamp); //
    strftime(LinsnData.imgdata.timestamp, 64, "%Y-%m-%d %H:%M:%S", local);
    /***************************************************************************************************/
    //
    if((ret = RawProcessor.unpack())!= LIBRAW_SUCCESS)
    {
        fprintf(stderr,"Can not unpack_thumb%s:%s\n",szFile,libraw_strerror(ret));
        //if(LIBRAW_FATAL_ERROR(ret))
        goto end;
    }

    WORD *bmpData=RawProcessor.imgdata.rawdata.raw_image;

    int nWidth  = width/2;
    int nHeight = height/2;
    WORD *m_bmpDataR = new WORD[nWidth*nHeight];
    WORD *m_bmpDataG = new WORD[nWidth*nHeight]; 
    WORD *m_bmpDataB = new WORD[nWidth*nHeight];

    //
    for(int i=0;i<nHeight;i++)     
    {
        for(int j=0;j<nWidth;j++)
        {                                                                                                   
            m_bmpDataB[i*nWidth+j]  = bmpData[i*nWidth*4+nWidth*2+j*2+1];                                   
            m_bmpDataG[i*nWidth+j]  = ((bmpData[i*nWidth*4+nWidth*2+j*2]+bmpData[i*nWidth*4+j*2+1])>>1);    
            m_bmpDataR[i*nWidth+j]  = bmpData[i*nWidth*4+j*2];                                              
        }
    }
0
задан David Gonzalez 19 January 2019 в 22:49
поделиться

1 ответ

Это будет работать для ваших категориальных данных, вы можете использовать их для нескольких столбцов. Кодируя категориальные данные, вы будете использовать LableEncoder для кодирования как 0,1,2 ..., в соответствии с вашими данными, но это вызовет новую проблему. и проблема здесь заключается в том, что, поскольку в одном и том же столбце находятся разные числа, модель будет неправильно понимать данные в некотором порядке, 0 < 1 < 2. Но это совсем не так. Чтобы преодолеть эту проблему, мы используем One Hot Encoder.

from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_X_1 = LabelEncoder()
X[:,1] = labelencoder_X_1.fit_transform(X[:,1])
labelencoder_X_2 = LabelEncoder()
X[:,2] = labelencoder_X_2.fit_transform(X[:,2])
onehotencoder = OneHotEncoder(categorical_features =  [1])
X = onehotencoder.fit_transform(X).toarray()
0
ответ дан Ishaan Javali 19 January 2019 в 22:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: