python - 使用 Python 进行多元多项式回归
问题描述
最近我开始学习 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)
解决方案
您可以使用此 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)
此外,在您的代码中,您正在整个数据集上训练您的模型,然后将其拆分为训练和测试。这意味着您的模型在训练时已经看到了您的测试数据。您需要先拆分,然后仅在训练数据上训练您的模型,然后在测试集上测试分数。我也包含了这些更改。:)
推荐阅读
- keras - Keras 迁移学习问题
- java - 如何在 AndroidStudio 中模拟 android 模拟器启动?
- c# - ASP.NET 间歇性地获取编译器错误消息
- javascript - 向正浮点值添加负数的错误
- python-2.7 - 如何获取列表中值的键
- pytorch - 如何在 pytorch ignite 中使用 LBFGS 优化器?
- arrays - 如何在ruby reverse中对字母数字数组进行排序
- python - 选择行中的最低值和第二低值
- css - 如何在 Divi 中获取固定移动菜单以使用 CSS 和可能的 jQuery 更改滚动颜色?
- maven - 如何将每个依赖项(包括插件)复制到目录?