Многомерная полиномиальная регрессия с Python - PullRequest
0 голосов
/ 26 февраля 2019

Недавно я начал изучать 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)

1 Ответ

0 голосов
/ 27 февраля 2019

Вы можете преобразовать свои функции в полином, используя этот 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)

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

Кроме того, в своем коде вы тренируетесьВаша модель на всем наборе данных, а затем вы разделяете ее на поезд и тестируете.Это означает, что ваша модель уже видела ваши тестовые данные во время тренировки.Сначала вам нужно разделить, затем тренировать вашу модель только по тренировочным данным, а затем проверить результат на тестовом наборе.Я включил и эти изменения.:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...