将 CSV 数据文件上传到 Pandas Dataframe 时如何分配标签和特征

Posted

技术标签:

【中文标题】将 CSV 数据文件上传到 Pandas Dataframe 时如何分配标签和特征【英文标题】:How to assign labels and features when uploading a CSV data file into Pandas Dataframe 【发布时间】:2019-08-14 14:56:02 【问题描述】:

我正在将 CSV 文件加载到机器学习项目的 Pandas 数据框中。我有 16 列。 “标签”或“目标”是最后一列。其余的都是变量。我需要将前 15 列定义为特征,将第 16 列定义为目标。

我发现的所有示例似乎都在已经定义了这些示例的集合上演示了机器学习。我该如何定义自己的“目标”?

import pandas as pd   
import numpy as np    
import sklearn   
from sklearn.model_selection import train_test_split
lymph = pd.read_csv("D:\\dataset_10_lymph.csv", encoding="utf-8", header = 0)

array = lymph.values
data = array[:,0:-1]
target = array[:,-1]

X_train, X_test, y_train, y_test = train_test_split(lymph.data, lymph.target, stratify=lymph.target, random_state=66)

但是当我尝试测试我的目标数组是否正确生成时,我得到了一个回溯。

AttributeError: 'DataFrame' 对象没有属性 'data'

除非他们使用练习 sklearn 数据集,否则这似乎是一个微不足道的步骤。任何帮助,将不胜感激。谢谢。

【问题讨论】:

【参考方案1】:

好吧,我得到了它的工作:

    target = lymph.columns[-1]
    X = lymph.drop(target, axis = 1)
    y = lymph.drop(X, axis = 1)
    X_train, X_test, y_train, y_test = train_test_split(X, y,test_size=0.2)

【讨论】:

【参考方案2】:

这个:

lymph = pd.read_csv("D:\\dataset_10_lymph.csv", encoding="utf-8", header = 0)

将为您提供一个带有数字列名的 DataFrame。所以后续的lymph.data 将找不到名为data 的列并给你 Traceback。

您可以像这样分配列名:

lymph.columns = [....]

列表包含 16 个字符串,如您所说,有 16 列。然后你应该在函数调用train_test_split() 中使用这些列名。但是,正如您所说,前 15 列是输入,第 16 列是标签。所以标签一很简单,但输入特征只是删除了第 16 列的 DataFrame。所以改为这样做:

train_test_split(lymph.drop("target", axis=1), lymph.target, stratify=lymph.target, random_state=66)

"target" 是第 16 列的名称。

【讨论】:

感谢您的回复@adrtam。我不确定你的建议是什么。如果我使用:print(target),它实际上会打印第 16 列值。但是当我尝试使用 train_test_split 拆分我的集合时调用它时,它并不认为它是一个对象。如何将最后一列定义为目标对象,以便我可以使用所有处理具有预定义“数据”和“目标”对象的数据集的 ML 程序? 所以当我打印目标和数据时,我去掉了“header = 0”并添加了“data = lymph.columns[0:-1], target = lymph.columns[-1]”打印相应的列标题。但是当我使用你的 train_test_split 时,我仍然得到“'DataFrame'对象没有属性'target'”。我只是觉得有 100 个使用 sklearn 数据集的示例,其中预定义了目标和数据对象。问“好吧,如果我上传自己的 CSV 文件,我该如何定义这些文件,以便我可以使用所有现有的代码”,这似乎是一个显而易见的问题。我已经搜索并尝试了许多不同的方法,但均无济于事。

以上是关于将 CSV 数据文件上传到 Pandas Dataframe 时如何分配标签和特征的主要内容,如果未能解决你的问题,请参考以下文章

将 pandas_datareader 存储到一个新的 csv 文件中[重复]

将 Google 电子表格 CSV 导入 Pandas 数据框

Pandas 基础 - 读/写 Excel 和 CSV 文件

pandas怎么读取.data数据

Pandas使用to_csv保存中文数据用Excel打开是乱码

使用分块将 CSV 文件读入 Pandas 数据帧,生成单个目标数据帧