我正在为一个机器学习项目将一个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数据集,否则这将是一个微不足道的步骤。任何帮助,将不胜感激。谢谢。
这个:
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列的名称。
好吧,我得到了它:
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)