机器学习中,经常会出现结果比较离谱的情况。
在使用python对35717组数据进行回归分析时,在生成二次项之后,发现使用线性回归模型时测试集MSE特别大,而且r^2系数出现负值。
思考原因:
可能是因为测试集中出现异常较大的值,或者测试集某些特征整体数值较大。
经检查发现,训练集和测试集的划分不合理。由于该组数据整体方差较大,因此根据某一个特征的大小进行划分时,尤其是生成二次项之后,很容易出现测试集的平均数值明显比训练集要大的情况。
#划分测试集和训练集
test_data = data_dummied[data_dummied[6] > 48]
train_data = data_dummied[data_dummied[6] <= 48]
X_test = test_data.drop('label', axis = 1)
y_test = test_data['label']
X_train = train_data.drop('label', axis = 1)
y_train = train_data['label']
解决方案
采用8:2的比例对原数据划分训练集和测试集进行划分,并且采用随机分配的方式。
from sklearn.model_selection import train_test_split
X = data_dummied.drop('label', axis = 1)
y = data_dummied['label']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
通过此方式划分的测试集和训练集,模型预测结果有了很好的改善。