Как предсказать полиномиальную регрессию Python с номинальным типом данных

#python #machine-learning #linear-regression #sklearn-pandas #polynomials

#python #машинное обучение #линейная регрессия #sklearn-pandas #полиномы

Вопрос:

 import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.metrics import r2_score
from sklearn.preprocessing import PolynomialFeatures

df = pd.read_csv("diamonds.csv")

df = pd.get_dummies(df, columns = ["color", "clarity", "cut"])

X, Y = df.drop(labels = ["price", "color_E", "clarity_VS2", "cut_Good"], axis = 1).values, df[["price"]].values


pf = PolynomialFeatures(degree = 2, include_bias = False)
pf.fit(X_train)
pf.transform(X_train)

pf.transform(X_train)

X_train_transformed = pf.transform(X_train)
X_test_transformed = pf.transform(X_test)

modelR = LinearRegression()
modelR.fit(X_train_transformed, Y_train)


predictionlist = [0.23, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 61.5, 55, 3.47, 3.58, 1.57]

print("Polynomial Regression score: "   str(modelR.score(X_test_transformed, Y_test))   " prediction: "   str(modelR.predict(pf.fit_transform([predictionlist]))[0][0]))
 

И это результат:

Оценка полиномиальной регрессии: 0.96599715147751 прогноз: -16308769.231718607

Оценка моей полиномиальной регрессии очень хорошая, но мой прогноз очень плохой, как цена бриллианта может быть -16308769.231718607

Я думаю, что мой список прогнозов очень запутан

Ответ №1:

Вы напортачили со своим pf.transform. При печати вашего прогноза вы fit_transform, в основном вы подгоняете свое преобразование только к одному экземпляру, тому, который вы хотите предсказать. Просто fit_transform это в вашем наборе поездов, просто преобразуйте свой набор тестов и просто преобразуйте свой список прогнозов.

Комментарии:

1. Мое предсказание было таким же после ваших изменений

2. Является ли список прогнозирования единственным экземпляром ваших данных?