首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PolynomialFeatures速读

PolynomialFeatures速读
EN

Stack Overflow用户
提问于 2018-08-07 23:34:49
回答 1查看 319关注 0票数 0

下面是我的代码:

代码语言:javascript
复制
import numpy as np
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.pipeline import make_pipeline
X_arr = []
Y_arr = []
with open('input.txt') as fp:
    for line in fp:
        b = line.split("|")
        x,y = b
        X_arr.append(int(x))
        Y_arr.append(int(y))


X=np.array([X_arr]).T
print(X)
y=np.array(Y_arr)
print(y)
model = make_pipeline(PolynomialFeatures(degree=2),  
LinearRegression(fit_intercept = False))
model.fit(X,y)
X_predict = np.array([[3]])
print(model.predict(X_predict))

请告诉我,我有一个问题:

代码语言:javascript
复制
model = make_pipeline(PolynomialFeatures(degree=2),  

请问如何选择此值(2、3、4等)?有没有动态设置这个值的方法?

例如,我有这个测试文件:

代码语言:javascript
复制
 1  1
 2  4
 4  16
 5  75

对于前三行,模型是

代码语言:javascript
复制
y=a*x*x+b*x + c (b=c=0)

对于最后一行,模型是:

代码语言:javascript
复制
y=a*x*x*x+b*x+c (b=c=0) 
EN

回答 1

Stack Overflow用户

发布于 2018-08-08 00:18:06

这绝对不是解决问题的简单方法,但我想我明白你想要什么,也许:

代码语言:javascript
复制
import math

epsilon = 1e-2
# Do your error checking on size of array
...
# Warning: This only works for positive x, negative logarithm is not proper.
# If you really want to, do an `abs(X_arr[0])` and check the degree is even.
deg = math.log(Y_arr[0], X_arr[0])
assert deg % 1 < epsilon
for x, y in zip(X_arr[1:], Y_arr[1:]):
    if x == y == 1: continue # All x^n fits this and will cause divide by 0
    assert abs(math.log(y, x) - deg) < epsilon
...
PolynomialFeature(degree=int(deg))

这将检查度数是否为整数值,以及所有其他数据点是否符合相同的多项式。

,如果你有一堆数据点为(1,1),你就无法决定实际的学位是多少。在没有对数据进行任何假设的情况下,无法确定多项式x^n的次数。

这只是你如何实现这样一个启发式的例子,请不要在生产中使用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51730559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档