【问题标题】:Training a model with List of points column使用点列表列训练模型
【发布时间】:2021-08-31 06:47:37
【问题描述】:

我想按深度对裂缝进行分类。 为此,我将以下特征存储在数据框中:

WindowsDf = pd.DataFrame(dataForWindowsDf, columns=['IsCrack', 'CheckTypeEncode', 'DepthCrack',
                                                    'WindowOfInterest'])
#dataForWindowsDf is a list which iteratively built from csv files.
#Windows data frame taking this list and build a data frame from it.

所以,我的目标列是“DepthCrack”,其他列是特征向量的一部分。 WindowOfInterest 是一列二维列表 - 点列表 - 表示已完成测试的图表(基于从表面返回的电磁波作为时间的函数):

[[0.9561600000000001, 0.10913097635410397], [0.95621,0.1100000]...]

我面临的问题是如何训练模型 - 使用一列 2d 列表(我试图按原样推送它但没有用)? 你建议用什么方法来处理这个问题?

我考虑从二维列表中提取特征 - 以获得一维特征(积分等)

【问题讨论】:

    标签: python pandas machine-learning classification


    【解决方案1】:

    您可以将这一功能一分为二,例如 WindowOfInterest 可以变成:

    WindowOfInterest_x1WindowOfInterest_x2

    例如来自您的DataFrame

    >>> import pandas as pd
    
    >>> df = pd.DataFrame({'IsCrack': [1, 1, 1, 1, 1], 
    ...                    'CheckTypeEncode': [0, 1, 0, 0, 0], 
    ...                    'DepthCrack': [0.4, 0.2, 1.4, 0.7, 0.1], 
    ...                    'WindowOfInterest': [[0.9561600000000001, 0.10913097635410397], [0.95621,0.1100000], [0.459561, 0.635410397], [0.4495621,0.32], [0.621,0.2432]]}, 
    ...                   index = [0, 1, 2, 3, 4])
    >>> df
        IsCrack CheckTypeEncode DepthCrack  WindowOfInterest
    0   1       0               0.4         [0.9561600000000001, 0.10913097635410397]
    1   1       1               0.2         [0.95621, 0.11]
    2   1       0               1.4         [0.459561, 0.635410397]
    3   1       0               0.7         [0.4495621, 0.32]
    4   1       0               0.1         [0.621, 0.2432]
    

    我们可以像这样split list

    >>> df[['WindowOfInterest_x1','WindowOfInterest_x2']] = pd.DataFrame(df['WindowOfInterest'].tolist(), index=df.index)
    >>> df
    
            IsCrack  CheckTypeEncode    DepthCrack          WindowOfInterest                           WindowOfInterest_x1  WindowOfInterest_x2
    0       1        0                  0.4                 [0.9561600000000001, 0.10913097635410397]  0.956160             0.109131
    1       1        1                  0.2                 [0.95621, 0.11]                            0.956210             0.110000
    2       1        0                  1.4                 [0.459561, 0.635410397]                    0.459561             0.635410
    3       1        0                  0.7                 [0.4495621, 0.32]                          0.449562             0.320000
    4       1        0                  0.1                 [0.621, 0.2432]                            0.621000             0.243200
    

    最后,我们可以dropWindowOfInterest 专栏:

    >>> df = df.drop(['WindowOfInterest'], axis=1)
    >>> df
        IsCrack CheckTypeEncode DepthCrack  WindowOfInterest_x1 WindowOfInterest_x2
    0   1       0               0.4         0.956160            0.109131
    1   1       1               0.2         0.956210            0.110000
    2   1       0               1.4         0.459561            0.635410
    3   1       0               0.7         0.449562            0.320000
    4   1       0               0.1         0.621000            0.243200
    

    现在您可以将WindowOfInterest_x1WindowOfInterest_x2 作为模型的特征传递。

    【讨论】:

    • 抱歉耽搁了,非常感谢! @tlentali
    猜你喜欢
    • 2020-03-31
    • 2017-08-19
    • 1970-01-01
    • 2018-09-27
    • 2017-12-28
    • 1970-01-01
    • 2020-09-14
    • 2017-06-17
    • 2020-01-21
    相关资源
    最近更新 更多