# -*- coding: utf-8 -*-
'''
Created on 2018年1月18日
@author: Jason.F
@summary: 判别过拟合和欠拟合
学习曲线Learning Curve:评估样本量和指标的关系
验证曲线validation Curve:评估参数和指标的关系
'''
import pandas as pd
from sklearn.preprocessing import LabelEncoder
from sklearn.cross_validation import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import Pipeline
import matplotlib.pyplot as plt
from sklearn.learning_curve import learning_curve
import numpy as np
from sklearn.learning_curve import validation_curve
#导入数据
df = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/wdbc.data',header=None)
X=df.loc[:,2:].values
y=df.loc[:,1].values
le=LabelEncoder()
y=le.fit_transform(y)#类标整数化
print (le.transform(['M','B']))
#划分训练集合测试集
X_train,X_test,y_train,y_test = train_test_split (X,y,test_size=0.20,random_state=1)
#标准化、模型训练串联
pipe_lr=Pipeline([('scl',StandardScaler()),('clf',LogisticRegression(random_state=1,penalty='l2'))])#case1:学习曲线
#构建学习曲线评估器,train_sizes:控制用于生成学习曲线的样本的绝对或相对数量
train_sizes,train_scores,test_scores=learning_curve(estimator=pipe_lr,X=X_train,y=y_train,train_sizes=np.linspace(0.1,1.0,10),cv=10,n_jobs=1)
#统计结果
train_mean= np.mean(train_scores,axis=1)
train_std = np.std(train_scores,axis=1)
test_mean =np.mean(test_scores,axis=1)
test_std=np.std(test_scores,axis=1)
#绘制效果
plt.plot(train_sizes,train_mean,color='blue',marker='o',markersize=5,label='training accuracy')
plt.fill_between(train_sizes,train_mean+train_std,train_mean-train_std,alpha=0.15,color='blue')
plt.plot(train_sizes,test_mean,color='green',linestyle='--',marker='s',markersize=5,label='test accuracy')
plt.fill_between(train_sizes,test_mean+test_std,test_mean-test_std,alpha=0.15,color='green')
plt.grid()
plt.xlabel('Number of training samples')
plt.ylabel('Accuracy')
plt.legend(loc='lower right')
plt.ylim([0.8,1.0])
plt.show()#case2:验证曲线
param_range=[0.001,0.01,0.1,1.0,10.0,100.0]
#10折,验证正则化参数C
train_scores,test_scores =validation_curve(estimator=pipe_lr,X=X_train,y=y_train,param_name='clf__C',param_range=param_range,cv=10)
#统计结果
train_mean= np.mean(train_scores,axis=1)
train_std = np.std(train_scores,axis=1)
test_mean =np.mean(test_scores,axis=1)
test_std=np.std(test_scores,axis=1)
plt.plot(param_range,train_mean,color='blue',marker='o',markersize=5,label='training accuracy')
plt.fill_between(param_range,train_mean+train_std,train_mean-train_std,alpha=0.15,color='blue')
plt.plot(param_range,test_mean,color='green',linestyle='--',marker='s',markersize=5,label='test accuracy')
plt.fill_between(param_range,test_mean+test_std,test_mean-test_std,alpha=0.15,color='green')
plt.grid()
plt.xscale('log')
plt.xlabel('Parameter C')
plt.ylabel('Accuracy')
plt.legend(loc='lower right')
plt.ylim([0.8,1.0])
plt.show()

结果:

【Python-ML】SKlearn库学习曲线和验证曲线相关推荐

  1. Python安装sklearn库时出现异常:ERROR: Could not install packages due to an EnvironmentError: [Errno 2]

    文章目录 一.问题描述 二.问题解决 一.问题描述 今天在学习python机器学习时,需要安装python的sklearn库,在安装的过程中出现了以下错误 上CSDN上找了好多文章,都没办法解决问题 ...

  2. 机器学习的学习曲线和验证曲线

    最近在复盘优达学城的机器学习项目, 重新写了一下波斯顿放假预测的项目,除了模型的选择及网格搜索进行选择参数的相关知识外,还着重复习了关于学习曲线和复杂度曲线(验证曲线) 首先学习曲线和复杂度曲线(验证 ...

  3. python+sklearn训练决策树分类模型(绘制学习曲线和验证曲线)

    本文所用文件的链接 链接:https://pan.baidu.com/s/1RWNVHuXMQleOrEi5vig_bQ 提取码:p57s 关于决策树的初级应用,可以看我之前的文章: https:// ...

  4. 用Python的sklearn库进行PCA(主成分分析)

    在python的sklearn的库里面集成很多机器学习算法的库,其中也包括主成分分析的方法. 1.PCA算法的原理: PCA主要是用来数据降维,将高纬度的特征映射到低维度的特征,加快机器学习的速度.比 ...

  5. ID3决策树 Python实现 + sklearn库决策树模型的应用

    本文介绍机器学习中决策树算法的python实现过程 共介绍两类方法: (1)亲手实习Python ID3决策树经典算法 (2)利用sklearn库实现决策树算法 关于决策树的原理,指路:机器学习 第四 ...

  6. Python初探——sklearn库中数据预处理函数fit_transform()和transform()的区别

    敲<Python机器学习及实践>上的code的时候,对于数据预处理中涉及到的fit_transform()函数和transform()函数之间的区别很模糊,查阅了很多资料,这里整理一下: ...

  7. 每天进步一点点《ML - Sklearn库简单学习》

    一:Sklearn介绍 Sklearn是一个强大的机器学习库,基于python的.官方文档(http://scikit-learn.org/stable/ ).如下列举部分的使用场景. 由图中,可以看 ...

  8. python中sklearn库更新_python库之sklearn

    一.安装sklearn conda install scikit-learn 参考文献 [1]整体介绍sklearn https://blog.csdn.net/u014248127/article/ ...

  9. Python:机器学习库 sklearn

    安装: pip install -U scikit-learn 数据标准化 from sklearn import preprocessing a = np.array([[10, 2.7, 3.6] ...

最新文章

  1. Java项目:成绩管理系统(前后端分离+java+vue+Springboot+ssm+mysql+maven+redis)
  2. Alternative PHP Cache ( APC )
  3. 【转】数据库的锁机制
  4. 我的centos上安装 jdk+apache+tomcat+tomcatconnector+myql 安装道路
  5. java 根据预览图片上传_JavaSctit 利用FileReader和滤镜上传图片预览功能
  6. Fcoin Token ( FT )——数字货币交易所的颠覆者,还是无情镰刀的收割者
  7. 2019日历全年一张_带上这份2019全年活动日历,旅行打卡不迷路
  8. 浅析三种特殊进程:孤儿进程,僵尸进程和守护进程.
  9. JSON 数据重复 出现$ref
  10. Android官方开发文档Training系列课程中文版:线程执行操作之定义线程执行代码
  11. 支付宝小程序面向个人开发者公测
  12. 自动驾驶路径轨迹规划(三阶曲线spline)
  13. 如何使用jQuery刷新页面?
  14. Android图书馆选座系统课程设计
  15. ps html切图教程,PS网页制作基础教程:学习切图那点儿事
  16. 我的世界服务器怎么变无线耐久,我的世界大型服务器三小时新手变老手技巧
  17. matlab定积分例子,利用Matlab进行不定积分运算示例巧妙至极.doc
  18. butter滤波器是iir吗_IIR Butterworth型模拟低通滤波器设计原理
  19. 复选框不可编辑_你不可错过的Word操作文本小技巧 | 厉害了Word姐15
  20. 【卷积神经网络】感受野

热门文章

  1. stm32如何执行软复位_stm32 上电复位 跟软复位有什么区别
  2. Spark详解(四):Spark组件以及消息通信原理
  3. 数据结构和算法:第七章 排序
  4. nginx 开启gzip 配置js_前端性能优化之缓存与GZIP
  5. springboot2稳定版本_Spring Boot 2.4 正式发布,重大调整
  6. 如何将qmainwidget 客户区坐标_滋补品行业营销感悟之:如何将同行变成客户?
  7. Python 中__new__()和__init__()的区别
  8. 2019_BUAAOO_第一单元总结
  9. BZOJ4300 绝世好题(动态规划)
  10. GO 输出字符数同时输出这个字符串的字节数