Как написать многомерную логарифмическую регрессию с помощью Python и sklearn? - PullRequest
0 голосов
/ 01 марта 2019

Я написал код для многомерной полиномиальной регрессии, я использовал полиномиальные особенности и функцию преобразования из sklearn.Можно ли сделать многомерную логарифмическую регрессию?Есть ли у sklearn логарифмическое преобразование, как у полиномиальных функций?Как я могу написать многомерную логарифмическую регрессию в Python?

Это мой код для многомерных полиномиальных функций:

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


#Reading data from excel

data = pd.read_excel("DataSet.xls").round(2)
data_size = data.shape[0]
#print("Number of data:",data_size,"\n",data.head())

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

    variables = prediction_accuracy(input_data)[2]
    results = prediction_accuracy(input_data)[3]
    n = results.shape[0]
    results = results.values.reshape(n,1) #reshaping the values so that variables and results have the same shape

    #transforming the data into polynomial function
    Poly_Regression = PolynomialFeatures(degree=2)
    poly_variables = Poly_Regression.fit_transform(variables)

    #accuracy of prediction(splitting the dataset on train and test)
    poly_var_train, poly_var_test, res_train, res_test = train_test_split(poly_variables, results, test_size = 0.3, random_state = 4)

    input_values = [cement, blast_fur_slug, fly_ash, water, superpl, coarse_aggr, fine_aggr, days]
    input_values = Poly_Regression.transform([input_values]) #transforming the data for prediction in polynomial function

    regression = linear_model.LinearRegression() #making the linear model
    model = regression.fit(poly_var_train, res_train) #fitting polynomial data to the model

    predicted_strength = regression.predict(input_values) #strength prediction
    predicted_strength = round(predicted_strength[0,0], 2)

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

    accuracy_info = "Accuracy of concrete class prediction: " + str(score) + " %\n"
    prediction_info = "Prediction of future concrete class after "+ str(days)+" days: "+ str(predicted_strength) 

    info = "\n" + accuracy_info + prediction_info

    return info

#print(polynomial_prediction_of_future_strength(data, 214.9 , 53.8, 121.9, 155.6, 9.6, 1014.3, 780.6, 7))

1 Ответ

0 голосов
/ 06 марта 2019

Если вы хотите использовать логарифмы ваших функций, одним из вариантов является преобразование Бокса-Кокса, а затем OLS, которое вы можете применить в sklearn с помощью PowerTransformer.https://scikit -learn.org / стабильный / модули / генерироваться / sklearn.preprocessing.PowerTransformer.html # sklearn.preprocessing.PowerTransformer

...