我正在使用Scikit-learn将我的火车数据转换为多项式特征,然后将其拟合到线性模型中 .
model = Pipeline([('poly', PolynomialFeatures(degree=3)),
('linear', LinearRegression(fit_intercept=False))])
model.fit(X, y)
但它会引发错误
TypeError: A sparse matrix was passed, but dense data is required
我知道我的数据是 sparse matrix
格式 . 因此,当我尝试将数据转换为 dense matrix
时,它显示 memory error
. 因为我的数据很大(50k~) . 由于这些大量数据,我无法将其转换为密集矩阵 .
我也找到Github Issues请求此功能 . 但仍未实施 .
那么请有人告诉我如何在Scikit-Learning中使用PolynomialFeatures中的稀疏数据格式而不将其转换为密集格式?
2 回答
这是即将推出的0.20版sklearn的新功能 . 请参阅Release History - V0.20 - Enhancements如果您确实想要测试它,可以按照Sklean - Advanced Installation - Install Bleeding Edge中的说明安装开发版本 .
在我们等待Sklearn的最新更新时 - 您可以在此处找到稀疏交互的实现:
https://github.com/drivendataorg/box-plots-sklearn/blob/master/src/features/SparseInteractions.py