Machine learning Scikit#u learn';s多项式特征与logistic回归导致较低的分数

Machine learning Scikit#u learn';s多项式特征与logistic回归导致较低的分数,machine-learning,scikit-learn,logistic-regression,polynomials,Machine Learning,Scikit Learn,Logistic Regression,Polynomials,我有一个数据集X,它的形状是(174161)。使用逻辑回归和交叉验证,我得到了每个分割的62-65%左右(cv=5) 我认为如果我把数据二次化,精确度应该会提高。然而,我得到了相反的效果(我得到交叉验证的每一部分都是在40年代,按百分比计算),所以,我假设我在试图使数据二次化时做了一些错误的事情 这是我使用的代码 from sklearn import preprocessing X_scaled = preprocessing.scale(X) from sklearn.preprocess

我有一个数据集
X
,它的形状是(174161)。使用逻辑回归和交叉验证,我得到了每个分割的62-65%左右(cv=5)

我认为如果我把数据二次化,精确度应该会提高。然而,我得到了相反的效果(我得到交叉验证的每一部分都是在40年代,按百分比计算),所以,我假设我在试图使数据二次化时做了一些错误的事情

这是我使用的代码

from sklearn import preprocessing
X_scaled = preprocessing.scale(X)

from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(3)
poly_x =poly.fit_transform(X_scaled)
classifier = LogisticRegression(penalty ='l2', max_iter = 200)

from sklearn.cross_validation import cross_val_score
cross_val_score(classifier, poly_x, y, cv=5)

array([ 0.46418338,  0.4269341 ,  0.49425287,  0.58908046,  0.60518732])
这让我怀疑,我做错了什么

我尝试将原始数据转换为二次数据,然后使用
preprocessing.scale
来缩放数据,但结果是出现了错误

UserWarning:数据居中时遇到数字问题,可能无法解决。数据集可能包含太大的值。您可能需要预先调整功能。
警告。警告(“遇到数字问题”

所以我没有费心走这条路

另一个困扰是二次计算的速度。当使用多项式功能时,cross_val_分数大约需要几个小时才能输出分数。有什么方法可以加快速度吗?我有一个intel i5-6500 CPU,内存为16 Gig,Windows 7操作系统


谢谢。

您是否尝试过使用
MinMaxScaler
而不是
Scaler
Scaler
将输出大于或小于0的值,因此您将遇到这样的情况,即缩放值为-0.1的值和值为0.1的值将具有相同的平方值,尽管实际上并不相似一点也不。直觉上,这似乎会降低多项式拟合的分数。虽然我没有测试过这一点,但这只是我的直觉。此外,要小心多项式拟合。我建议阅读。这是一个很好的解释,可能会给你介绍一些新技术。作为旁白@MatthewDrury是一个优秀的例子老师和我建议阅读他的所有答案和博客帖子。

有一句话是“应该提高准确性”使用多项式特征。如果多项式特征使模型更接近原始数据生成过程,这是正确的。多项式特征,尤其是使每个特征相互作用和多项式,可能使模型远离数据生成过程;因此,可能会出现更差的结果

通过在scikit中使用3次多项式,X矩阵从(174161)变为(174141664),这明显比行多

41k+列需要更长的时间求解。你应该研究特征选择方法。正如Grr所说,研究降低多项式的方法。尝试L1、分组套索、RFE、贝叶斯方法。尝试SME(能够识别可能是多项式的特定特征的主题专家).绘制数据,以查看多项式中哪些特征可能相互作用或最好


我已经有一段时间没有看它了,但我记得关于层次结构良好的模型的讨论(您可以删除x1但保留x1*x2交互吗)。如果您的模型在公式不正确的层次模型中表现得最好,这可能值得研究。

您提出了一个有趣的观点。我将对其进行测试,并阅读您链接的博客。谢谢。首次尝试将MinMaxScaler与Poly fit结合使用似乎可以提高准确性。我将再测试几次,尽管这需要一些时间e时间。我似乎用MinMaxScaler获得了更高的精度,但我突然也用普通缩放获得了更高的精度。是的,我还没有进入特征选择(我最终会研究)。我只是想评估多项式功能的好处,因为我看的大多数讲座似乎显示出更少的偏见和更多的差异。有很多东西要测试你的帖子和Grr的帖子。谢谢。我似乎不明白为什么这些功能从(1741,61)到50000左右。(61)*(3)+(61选择2)--每个特征与另一个特征相乘一次。