【问题标题】:How can I properly input features with multiple values in machine learning using models for classification?如何使用分类模型在机器学习中正确输入具有多个值的特征?
【发布时间】:2019-11-16 11:06:03
【问题描述】:

我正在读取多个 csv 文件并将它们的信息加载到 pandas 数据框中。我试图将每个文件分类为目标列中的标签0 或标签1,并且每个文件都具有具有多个值的特征。我很难找到最好的方法来构建一个可以使用sklearn的支持向量机分类模型正确处理的结构@

示例数据框: image example of the dataframe structure.

file  [1st feature] -  [2nd feature] -  [target]

0 -   [20,30,10...]  -  [0,1,2,3,4]  -   0

1 -   [10,50,20...] - [1,2,0,4,3]  -     1

2 -   [20,30,40...] - [2,4,0,1,3]  -     1

3 -   [50,10,40...] - [0,1,2,3,4]  -     1

我用来将 csv 文件读入数据框的示例代码:

    os.chdir("E:\Research Machine Learning\ComputerDebugging\option1")
    extension = 'csv'
    all_files = [i for i in glob.glob('*.{}'.format(extension))]

    #new DataFrame
    df1 = pd.DataFrame(columns=["%CPU","PID",'TimeStamp','target'])

    fields=["%CPU","PID",'TimeStamp']


    for f in all_files:
        files.append(f)
        bugs = pd.read_csv(f, header=0,usecols=fields,nrows=1800)
        bugs.sort_values(by=['TimeStamp','PID'], inplace=True)
        CPU =np.array( bugs["%CPU"])
        PID =np.array( bugs["PID"])
        df1.loc[f,'%CPU'] =  CPU
        df1.loc[f,'PID']= PID

    df1['target']=1
    print("Option 1:")
    print(df1.head(3),'\n')

我用已知目标更新数据框,因为这是我的训练集。读取标签为“0”的文件时我也会这样做。 由于每个文件都需要自己的分类,我认为这可能是最好的方法,但我认为我错了。

我在尝试编译时不断收到此错误

ValueError:使用序列设置数组元素。

我相信这与模型期望单个值但它得到一个数组这一事实有关。模型有没有办法处理具有这种结构的数据。或者有什么方法可以重组并保留信息?

【问题讨论】:

  • 能否提供用于加载数据帧的代码?
  • 是的,我将使用示例代码进行编辑。

标签: python csv dataframe machine-learning classification


【解决方案1】:

我怀疑您正在发出问题,因为您允许默认类型被推断出来。

来自pandas dataframe doc

dtype : dtype, 默认 None 数据类型 强迫。只允许使用一个 dtype。如果没有,推断

在定义 df 时尝试将 df 类型设置为 object。

#new DataFrame
    df1 = pd.DataFrame(columns=["%CPU","PID",'TimeStamp','target'], dtype=object)

【讨论】:

    猜你喜欢
    • 2015-12-17
    • 1970-01-01
    • 2018-10-28
    • 2014-12-01
    • 2019-11-07
    • 2013-03-25
    • 2021-11-11
    • 1970-01-01
    • 2019-11-21
    相关资源
    最近更新 更多