- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 sklearn 的 PolynomialFeatures 将数据预处理为各种程度的变换,以便比较它们的模型拟合度。下面是我的代码:
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.model_selection import train_test_split
np.random.seed(0)
# x and y are the original data
n = 100
x = np.linspace(0,10,n) + np.random.randn(n)/5
y = np.sin(x)+n/6 + np.random.randn(n)/10
# using .PolynomialFeatures and fit_transform to transform original data to degree 2
poly1 = PolynomialFeatures(degree=2)
x_D2_poly = poly1.fit_transform(x)
#check out their dimensions
x.shape
x_D2_poly.shape
但是,上述转换从 (100, 1) 的原始 x 返回了 (1, 5151) 的数组。这不是我所期望的。我无法弄清楚我的代码出了什么问题。如果有人能指出我的代码的错误或我的误解,那就太好了。我应该使用其他方法来转换原始数据吗?
谢谢。
真诚的,
[更新]因此,在我使用 x = x.reshape(-1, 1) 转换原始 x 后,Python 确实通过 poly1.fit_transform(x) 为我提供了所需的输出维度 (100, 1)。但是,当我执行 train_test_split、拟合数据并尝试获取预测值时:
x_poly1_train, x_poly1_test, y_train, y_test = train_test_split(x_poly1, y, random_state = 0)
linreg = LinearRegression().fit(x_poly1_train, y_train)
poly_predict = LinearRegression().predict(x)
Python 返回错误消息:
shapes (1,100) and (2,) not aligned: 100 (dim 1) != 2 (dim 0)
显然,我一定在某个地方又把维度问题弄错了。有人能解释一下吗?
谢谢。
最佳答案
我认为你需要像这样 reshape 你的x
x=x.reshape(-1,1)
你的 x 的形状是 (100,) 而不是 (100,1) 并且 fit_transform 需要 2 维。您获得 5151 个特征的原因是,您看到每个不同对 (100*99/2 = 4950) 一个特征,每个特征平方 (100) 一个特征,每个特征的一次幂 (100) 一个特征,和 1 的 0 次方 (1)。
对您编辑的问题的回复:您需要调用transform转换您想要预测的数据。
关于Python PolynomialFeatures 将数据转换为与原始数据不同的形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44476338/
我正在使用 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
我是一名优秀的程序员,十分优秀!