(机器学习)测试集和训练集的划分对预测结果的影响

        机器学习中,经常会出现结果比较离谱的情况。       

        在使用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)

         通过此方式划分的测试集和训练集,模型预测结果有了很好的改善。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值