python - 如何使用标称数据类型预测多项式回归 Python
问题描述
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
我认为我的预测列表非常混乱
解决方案
你搞砸了你的 pf.transform。当打印你的预测时 fit_transform,基本上你只在一个实例上拟合你的转换,你想要预测的那个。只需在您的训练集上进行 fit_transform 转换,只需转换您的测试集并转换您的预测列表。
推荐阅读
- xamarin.forms - Xamarin:电话号码验证
- java - 为什么 OpenCV-Java 无法连接到 mjpeg-stream(来自烧瓶)而 Python3/cv2 可以做到?
- bootstrap-4 - 如何在 Bootstrap 4 中减小小屏幕中的图标大小
- xslt - 如果条件满足,XLS 创建新元素
- visual-c++ - 开发 Visual Studio 通用项目 - 如何在 for 循环中从顺序命名的 TextBox 中提取文本
- keycloak - Keycloak 授权服务不会拒绝资源中的范围
- apache-kafka - kafka-consumer-groups CLI 未显示 node-kafka consumer groupf
- php - 删除特定的机器人
- arrays - 错误尝试访问索引 [1, 0] 处的 30×26 Array{VariableRef,2}
- python - 考虑假期的熊猫时间序列显示营业月末 - ValueError:DatetimeIndex 的真值不明确