我正在使用大约400.000 x 250的数据集。 我在训练集上测试它时,模型产生了非常好的R ^ 2分数,但在测试集上使用时效果极差。最初,这听起来像是过度拟合。但数据随机分成训练/测试集,数据集非常大,所以我觉得必须要有别的东西。 有什么建议吗?
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(df.drop(['SalePrice'],
axis=1), df.SalePrice, test_size = 0.3)
from sklearn import linear_model
linReg = linear_model.LinearRegression() # Create linear regression object
linReg.fit(X_train, y_train) # Train the model using the training sets
# Predict from training set
y_train_linreg = linReg.predict(X_train)
# Predict from test set
y_pred_linreg = linReg.predict(X_test)
from sklearn import metrics
metrics.r2_score(y_train, y_train_linreg)
metrics.r2_score(y_test, y_pred_linreg)
在训练集上进行测试时,R ^ 2得分:0,64
在测试集上测试时得到R ^ 2得分:-10 ^ 23(近似值)
答案 0 :(得分:3)
虽然我同意Mihai的说法,你的问题肯定看起来过度拟合,但我不一定同意他的答案,神经网络可以解决你的问题;至少,没有开箱即用。神经网络本身比线性模型更适合而不是更少。您需要以某种方式处理您的数据,几乎没有任何模型可以为您做到这一点。您可能会考虑一些选项(道歉,如果不查看数据集,我就不能更精确):