python - 使用 Python 进行多元多项式回归

标签 python scikit-learn regression

最近开始学习sklearn、numpy和pandas,做了一个多元线性回归的函数。我想知道,是否可以进行多元多项式回归?

这是我的多元多项式回归代码,它显示了这个错误:

in check_consistent_length " samples: %r" % [int(l) for l in lengths])
ValueError: Found input variables with inconsistent numbers of samples: [8, 3]

你知道问题出在哪里吗?

import numpy as np
import pandas as pd
import xlrd
from sklearn import linear_model
from sklearn.model_selection import train_test_split

def polynomial_prediction_of_future_strenght(input_data, cement, blast_fur_slug,fly_ash,
                                              water, superpl, coarse_aggr, fine_aggr, days):

    variables = prediction_accuracy(input_data)[4]
    results = prediction_accuracy(input_data)[5]

    var_train, var_test, res_train, res_test = train_test_split(variables, results, test_size = 0.3, random_state = 4)

    Poly_Regression = PolynomialFeatures(degree=2)
    poly_var_train = Poly_Regression.fit_transform(var_train)
    poly_var_test = Poly_Regression.fit_transform(var_test)

    input_values = [cement, blast_fur_slug, fly_ash, water, superpl, coarse_aggr, fine_aggr, days]

    regression = linear_model.LinearRegression()
    model = regression.fit(poly_var_train, res_train)

    predicted_strenght = regression.predict([input_values])
    predicted_strenght = round(predicted_strenght[0], 2)

    score = model.score(poly_var_test, res_test)
    score = round(score*100, 2)


    print(prediction, score)

a = polynomial_prediction_of_future_strenght(data_less_than_28days, 260.9, 100.5, 78.3, 200.6, 8.6, 864.5, 761.5, 28)

最佳答案

您可以使用 this 将特征转换为多项式sklearn 模块,然后在您的线性回归模型中使用这些功能。

from sklearn.preprocessing import PolynomialFeatures
from sklearn import linear_model

poly = PolynomialFeatures(degree=2)
poly_variables = poly.fit_transform(variables)

poly_var_train, poly_var_test, res_train, res_test = train_test_split(poly_variables, results, test_size = 0.3, random_state = 4)

regression = linear_model.LinearRegression()

model = regression.fit(poly_var_train, res_train)
score = model.score(poly_var_test, res_test)

此外,在您的代码中,您在整个数据集上训练您的模型,然后将其拆分为训练和测试。这意味着您的模型在训练时已经看到了您的测试数据。您需要先拆分,然后仅在训练数据上训练您的模型,然后在测试集上测试分数。我也包含了这些更改。 :)

关于python - 使用 Python 进行多元多项式回归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54891965/

相关文章:

python - libcurl 在curl 和curl-config 中不匹配

python - 查找 Caffe 卷积滤波器相对于输入的梯度

python - 在 scikit 中绘制 ROC 曲线仅产生 3 分

R:找不到作为参数传递的函数

python - 如何使用 python 将多元回归中的截距归零?

python - 使用 Python 库的多元多重回归

python - 如何在 Python Mockito 中模拟类属性

python - 解决 "ssl certificate verify failed"错误

python - 如何存储 TfidfVectorizer 以备将来在 scikit-learn 中使用?

python - LightGBM on Numerical+Categorical+Text Features >> TypeError : Unknown type of parameter:boosting_type, got:dict