我正在尝试建立公寓价格的预测模型。我使用python scikit-learn工具集。我使用的数据集包含公寓的总建筑面积和位置,已将其转换为虚拟特征。因此,数据集如下所示: 然后,我建立一条学习曲线以查看模型的运行情况。 我这样建立学习曲线:
from matplotlib import pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import learning_curve
model = LinearRegression()
training_sizes, training_scores, validation_scores = learning_curve(
estimator = model,
X = X_train,
y = y_train,
train_sizes = np.linspace(5, len(X_train) * 0.8, dtype = int),
cv = 5
)
line1, line2 = plt.plot(
training_sizes, training_scores.mean(axis = 1), 'g',
training_sizes, validation_scores.mean(axis = 1), 'r')
plt.legend((line1, line2), ('Training', 'Cross-validation'))
正常吗?
我还尝试添加2次多项式特征。但这并没有使模型执行任何其他操作。而且因为我有很多分类特征(总计106个),所以即使是二阶多项式也要花很长时间。所以我没有尝试更高的学位。
我还尝试使用Octave使用尽可能简单的成本函数和梯度下降来构建模型。错误结果很奇怪。
更新: 感谢tolik,我做了一些修改:
数据准备: 分类数据是独立的。因此,我无法将它们组合为一个功能。 使用StandardScaler()缩放功能。谢谢你。
特征提取: 在使用PCA进行特征转换后,我发现一个新功能可以解释超过99%的方差比。虽然很奇怪,我只用了这个。这也允许增加多项式的度数,尽管它并没有提高性能。
型号选择: 我尝试了几种不同的模型,但似乎没有一个比LinearRegression更好。有趣的是-所有模型在完整数据集上的表现都较差。可能是因为我按价格排序,而较高的价格却是异常值。因此,当我开始训练1000个样本的样本集并达到最大值时,我得到了这张图片(几乎适用于所有模型):
答案 0 :(得分:0)
我的解释包括三个步骤:数据准备,特征提取和模型选择。
数据准备:
特征提取:
explained_variance_
总计为99%的第一个特征。现在,您可以减轻重量。型号选择: 您真的不知道什么是好的模型,因为没有免费的午餐理论,但是在这个问题中,最好的结果是不使用深度学习的,请使用以下代码:XGBoost-Regressor,Random-Forest-回归器,Ada-Boost。
最重要的是数据准备!