如何在XGBClassifier中将压缩的稀疏矩阵用作训练数据?

时间:2019-02-04 21:11:52

标签: python pandas scikit-learn scipy xgboost

我有一个具有800列的pandas DataFrame:

  1. 使用MinMaxScaler处理了20列(连续特征)
  2. 其余列(分类功能)是OneHotEncoding的输出。

结果,我的DataFrame是一个稀疏矩阵。

现在我应该应用XGBClassifier来解决多类分类问题。但是,我认为压缩此DataFrame是一个好主意。

我找到了这种方法:

from numpy import array
from scipy.sparse import csr_matrix

A = array([[1, 0, 0, 1, 0, 0], [0, 0, 2, 0, 0, 1], [0, 0, 0, 2, 0, 0]])
# convert to sparse matrix (CSR method)
B = csr_matrix(A)

但是,尚不清楚如何将其与sklearn分类器一起使用。 一般来说,压缩我的DataFrame是个好主意吗?

1 个答案:

答案 0 :(得分:0)

您可以将Pandas DataFrame与XGBoost一起使用(已通过XGBoost版本0.81测试)。

在假设df是带有列target的Pandas DataFrame中进行示例代码。

import pandas as pd
import xgboost as xgb
from sklearn.model_selection import train_test_split

// ... your code in here ...

// Train-Test Split
train, test = train_test_split(df)
y_train = train["target"]
X_train = train.drop(["target"],axis=1)
y_test = test["target"]
X_test = test.drop(["target"],axis=1)

// Train model
model = xgb.XGBClassifier()
model.fit(X_train, y_train)
preds = model.predict(X_test)

希望对您有帮助。