关于Scikit-learn机器学习的笔记——第六篇

视频教程:【莫烦Python】Scikit-learn (sklearn) 优雅地学会机器学习

Overfitting过拟合现象
在这里插入图片描述
黑线已经区分的很好了,但绿线就出现了过拟合的现象

程序示例:

from sklearn.model_selection import learning_curve
from sklearn.datasets import load_digits
from sklearn.svm import SVC
import matplotlib.pyplot as plt
import numpy as np


digits=load_digits()
X=digits.data
y=digits.target
train_sizes,train_loss,test_loss=learning_curve(
    SVC(gamma=0.001),X,y,cv=10,scoring='neg_mean_squared_error',
    train_sizes=[0.1,0.25,0.5,0.75,1])##输出train_size,train的误差,test的误差值,SVC的gamma参数为0.0001,用方差值去测试,在10%,25%的点去记录一下
train_loss_mean=-np.mean(train_loss,axis=1)##axis=1表示按列要求,0是按行要求,mean是中间值的意思
test_loss_mean=-np.mean(test_loss,axis=1)

plt.plot(train_sizes,train_loss_mean,'o-',color="r",label="Training")
plt.plot(train_sizes,test_loss_mean,'o-',color="g",label="Cross-validation")

plt.xlabel("Training examples")
plt.ylabel("Loss")
plt.legend(loc="best")
plt.show()

输出结果:
在这里插入图片描述
绿色:表示testdata在刚开始的时候cross-validation的值很高,但随着training的进行,误差会逐渐降低
红色:误差较小,是因为机器在学习的时候,能够较好的预测出train的走向,这就是为什么我们之前要将train和test分开的原因

若将gamma的值改为0.01

train_sizes,train_loss,test_loss=learning_curve(
    SVC(gamma=0.01),X,y,cv=10,scoring='neg_mean_squared_error',
    train_sizes=[0.1,0.25,0.5,0.75,1])

输出结果:
在这里插入图片描述
曲线最终并没有向下走
红色表示testdata,蓝色表示traindata,在达到一定值以后,test的误差会变大,因为出现了Overfitting

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sol-itude

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值