python模型参数估计_Python之ML--模型评估与参数调优

本文介绍了Python机器学习中的模型评估与参数调优,包括使用scikit-learn的Pipline进行数据预处理,使用k折交叉验证评估模型性能,通过学习曲线和验证曲线判断模型的偏差与方差,以及使用网格搜索调优模型参数。以乳腺癌数据集为例,展示了逻辑回归模型的调优过程,并比较了SVM和决策树的性能。
摘要由CSDN通过智能技术生成

Python之ML–模型评估与参数调优

主要知识点如下:

模型性能的无偏估计

处理机器学习算法常见问题

机器学习模型调优

使用不同的性能指标评估预测模型

一.基于流水线的工作流

本节使用scikit-learn中的Pipline类.它使得我们可以拟合出包含任意多个处理步骤的模型,并将模型用于新数据的预

1.威斯康星乳腺癌数据集

威斯康星乳腺癌(Breast Cancer Wisconsin)数据集进行讲解,此数据集共包含了569个恶性或者良性肿瘤样本.数据集的前两列分别存储了样本唯一的ID以及对样本的诊断结果(M代表恶性,B代表良性).数据集的3-32列包含了30个从细胞核照片中提取,用实数值标识的特征,它们可以用于构建判定模型,对肿瘤是良性还是恶性做出预测

使用pandas从UCI网站直接读取数据集

import pandas as pd

df=pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/wdbc.data',header=None)

print('rows, columns:', df.shape)

df.head()

rows, columns: (569, 32)

0

1

2

3

4

5

6

7

8

9

22

23

24

25

26

27

28

29

30

31

0

842302

M

17.99

10.38

122.80

1001.0

0.11840

0.27760

0.3001

0.14710

25.38

17.33

184.60

2019.0

0.1622

0.6656

0.7119

0.2654

0.4601

0.11890

1

842517

M

20.57

17.77

132.90

1326.0

0.08474

0.07864

0.0869

0.07017

24.99

23.41

158.80

1956.0

0.1238

0.1866

0.2416

0.1860

0.2750

0.08902

2

84300903

M

19.69

21.25

130.00

1203.0

0.10960

0.15990

0.1974

0.12790

23.57

25.53

152.50

1709.0

0.1444

0.4245

0.4504

0.2430

0.3613

0.08758

3

84348301

M

11.42

20.38

77.58

386.1

0.14250

0.28390

0.2414

0.10520

14.91

26.50

98.87

567.7

0.2098

0.8663

0.6869

0.2575

0.6638

0.17300

4

84358402

M

20.29

14.34

135.10

1297.0

0.10030

0.13280

0.1980

0.10430

22.54

16.67

152.20

1575.0

0.1374

0.2050

0.4000

0.1625

0.2364

0.07678

5 rows × 32 columns

接下来,将数据集的30个特征的赋值给一个Numpy的数组对象X.使用scikit-learn中的LabelEncoder类,我们可以将类标从原始的字符串表示(M或者B)转换为整数

from sklearn.preprocessing import LabelEncoder

X=df.loc[:,2:].values

y=df.loc[:,1].values

le=LabelEncoder()

y=le.fit_transform(y)

转换后的类标(诊断结果)存储在一个数组y中,此时恶性肿瘤和良性肿瘤分别被标识为类1和类0,我们通过LabelEncoder的transform方法来显示虚拟类标(0和1)

le.transform(['M','B'])

array([1, 0], dtype=int64)

from sklearn.model_selection import train_test_split

X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=1)

2.在流水线中集成数据转换及评估操作

出于性能优化的目的,许多学习算法要求将不同特征的值缩放到相同的范围.我们在使用逻辑斯谛回归模型等线性分类器分析威斯康星乳腺癌数据集之前,需要对其特征列做标准化处理.我们无需在训练数据集和测试数据集上分别进行模拟拟合,数据转换,而是通过流水线将StandardScaler,PCA以及LogisticRegression对象串联起来:

from sklearn.preprocessing import StandardScaler

from sklearn.decomposition import PCA

from sklearn.linear_model import LogisticRegression

from sklearn.pipeline import Pipeline

pipe_lr=Pipeline([('s

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值