train_test_split 具有多个功能

Posted

技术标签:

【中文标题】train_test_split 具有多个功能【英文标题】:train_test_split with multiple features 【发布时间】:2018-09-24 12:33:45 【问题描述】:

我目前正在尝试使用决策树分类器训练数据集,但我无法让 train_test_split 工作。

从下面的代码中,CS 是目标输出,EN SN JT FT PW YR LO LA 是特征输入。

通过 OHL 的所有变量都是稀疏矩阵格式,而其他变量是直接取自数据帧的数组。

def OHL(x, column): #OneHotEncoder
    le = LabelEncoder()
    enc = OneHotEncoder()
    Labeled = le.fit_transform(x[column].astype(str))
    return enc.fit_transform(Labeled.reshape(-1,1))

###------------------------------------------------------------------------

df = pd.read_csv('h1b_kaggle.csv')
df = df.drop(['Unnamed: 0','WORKSITE'],1)

###------------------------------------------------------------------------

CS = OHL(df, 'CASE_STATUS')
EN = OHL(df, 'EMPLOYER_NAME')
SN = OHL(df, 'SOC_NAME')
JT = OHL(df, 'JOB_TITLE')
FT = OHL(df, 'FULL_TIME_POSITION')
PW = np.array(df['PREVAILING_WAGE'])
YR = OHL(df, 'YEAR')
LO = np.array(df['lon'])
LA = np.array(df['lat'])

【问题讨论】:

为什么所有这些特性都放在单个变量中而不是单个数组中?这会更容易在 scikit-learn 中处理和使用 我试图将它们放入数组中,但它有 MemoryError。 【参考方案1】:

如果您查看sklearn.model_selection.train_test_split,您会发现它需要一个*arrays 参数。因此,要拆分前三个参数,您可以使用

CS_tr, CS_te, EN_tr, EN_te, SN_tr, SN_te = train_test_split(CS, EN, SN)

(当然,你可以传递更多的数组)。

请注意,当给定稀疏数组时,sklearn 的当前版本会返回稀疏数组。

【讨论】:

但是在我这样做之后,我想使用 tree.DecisionTreeClassifier 我不必将它分组到一个变量中吗? fit 函数只需要 1 个特征和 1 个目标。

以上是关于train_test_split 具有多个功能的主要内容,如果未能解决你的问题,请参考以下文章

具有一个功能的 Angular 多个事件

为啥我无法在 Hive 中使用具有多个插入子句的高级聚合功能?

d3添加多个具有功能的类

特金特。创建具有“不同”命令功能的多个按钮

如何从具有多个输出的功能分配? [复制]

在多个分组上具有不同功能的 SQL 查询