- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
如果我有中等数量的基本特征,并从中生成中等阶的多项式特征,那么要知道特征数组 preprocess_XX
的哪一列对应于哪个转换可能会有点困惑的基本特征。
我曾经用旧版本的 sklearn(可能是 0.14?)做类似下面的事情:
import numpy as np
from sympy import Symbol
from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(4)
x1 = Symbol('x1')
x2 = Symbol('x2')
x3 = Symbol('x3')
XX = np.random.rand(1000, 3) # replace with the actual data array
preprocess_symXX = poly.fit_transform([x1, x2, x3])
preprocess_XX = poly.fit_transform(XX)
print preprocess_symXX
这太棒了。它会产生像 [1, x1, x2, x3, x1**2, ... ]
这样的输出,这会让我知道 preprocess_XX
列的多项式函数实际来自。
但现在当我这样做时,它会提示 TypeError: can't convert expression to float
。引发此异常的原因是 sklearn.utils.validation
中名为 check_array()
的函数,它试图将输入转换为 poly.fit_transform()
到 dtype=float
。
关于如何查看fit_transform() 输出中的哪一列对应的基本特征的多项式,您有什么建议吗?
,现在sympy
不再似乎可以与 fit_transform
一起使用?
最佳答案
使用 poly.powers_ 获得权力。然后您可以将其转换为人类可读的内容,如下所示:
import numpy as np
from sklearn.preprocessing import PolynomialFeatures
X = np.random.rand(1000, 3)
poly = PolynomialFeatures(4)
Y = poly.fit_transform(X)
features = ['X1','X2','X3']
print(poly.powers_)
for entry in poly.powers_:
newFeature = []
for feat, coef in zip(features, entry):
if coef > 0:
newFeature.append(feat+'**'+str(coef))
if not newFeature:
print(1) # If all powers are 0
else:
print(' + '.join(newFeature))
打印(在打印 poly.powers_ 之后):
1
X1**1
X2**1
X3**1
X1**2
X1**1 + X2**1
X1**1 + X3**1
X2**2
X2**1 + X3**1
X3**2
X1**3
X1**2 + X2**1
X1**2 + X3**1
X1**1 + X2**2
X1**1 + X2**1 + X3**1
X1**1 + X3**2
X2**3
X2**2 + X3**1
X2**1 + X3**2
X3**3
X1**4
X1**3 + X2**1
X1**3 + X3**1
X1**2 + X2**2
X1**2 + X2**1 + X3**1
X1**2 + X3**2
X1**1 + X2**3
X1**1 + X2**2 + X3**1
X1**1 + X2**1 + X3**2
X1**1 + X3**3
X2**4
X2**3 + X3**1
X2**2 + X3**2
X2**1 + X3**3
X3**4
关于python - 如何查看 sklearn.preprocessing.PolynomialFeatures 的效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34869851/
我正在使用 sklearn 的 PolynomialFeatures 将数据预处理为各种程度的变换,以便比较它们的模型拟合度。下面是我的代码: from sklearn.linear_mode
import os import pandas as pd import matplotlib.pyplot as plt from sklearn.pipeline import Pipeline
在 sklearn 的多项式特征方面需要帮助。它适用于一个功能,但每当我添加多个功能时,它还会在数组中输出一些值,除了提升到度数的值之外。例如:对于这个数组, X=np.array([[230.1,3
我有以下模型,它缩放数据,然后使用多项式特征,最后将数据输入具有正则化的回归模型,如下所示: X_train, X_test, y_train, y_test = train_test_split(X
我不明白为什么 scikit 的 PolynomialFeatuers 次数的输出总是为 1。 以 Degree=2 和 [a, b] 为例,输出为 [1, a, b, a^2, b^2, ab] 我
我有一个数据集 X,其形状为 (1741, 61)。使用带有 cross_validation 的逻辑回归,每次分割得到的结果约为 62-65% (cv =5)。 我认为如果我对数据进行二次方处理,准
在一本书中,我找到了以下代码,它适合二次数据的线性回归: m = 100 X = 6 * np.random.rand(m, 1) - 3 y = 0.5 * X**2 + X + 2 + np.ra
如果我有中等数量的基本特征,并从中生成中等阶的多项式特征,那么要知道特征数组 preprocess_XX 的哪一列对应于哪个转换可能会有点困惑的基本特征。 我曾经用旧版本的 sklearn(可能是 0
我有一组参数,我手动(我希望它是手动的)使用 PolynomialFeatures 安装伪逆函数: poly_feat = PolynomialFeatures(degree=Degree_mdl)
TLDR:如何从 sklearn.preprocessing.PolynomialFeatures() 函数获取输出 numpy 数组的 header ? 假设我有以下代码... import pan
我无法在 ipython 笔记本中导入以下模块: from sklearn.preprocessing import PolynomialFeatures from sklearn.pipeline
对于 MRE: m = 100 X = 6*np.random.rand(m,1)-3 y = 0.5*X**2 + X+2 + np.random.randn(m,1) lin_reg = Line
我是一名优秀的程序员,十分优秀!