机器学习之模型评估与参数调优

一、流水线工作流

       在利用训练数据对模型进行拟合时已经得到一些参数,使用流水线可以避免在将模型用于新数据时重新设置这些参数。利用sklearn中的Pipline类,使得我们可以拟合出包含任意多个处理步骤的模型,并将模型用于新数据的预测。

1.	# Title     : TODO  
2.	# Objective : TODO  
3.	# Created by: Chen Da  
4.	# Created on: 2018/9/13  
5.	  
6.	import pandas as pd  
7.	import numpy as np  
8.	import os,time,sys  
9.	  
10.	#导入乳腺癌数据集  
11.	df = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/wdbc.data",header=None)  
12.	  
13.	#构造特征矩阵和类别矩阵  
14.	from sklearn.preprocessing import LabelEncoder  
15.	X = df.loc[:, 2:].values  
16.	y = df.loc[:, 1].values  
17.	le = LabelEncoder()  
18.	y = le.fit_transform(y)     #对类别进行编码  
19.	  
20.	from sklearn.cross_validation import train_test_split  
21.	X_train, X_test, y_train, y_test = train_test_split(X, y,  
22.	                                                    test_size=0.2, random_state=0)  

为了避免对训练集和测试集上的数据分别进行模型拟合、数据转换等操作,这里通过流水线将标准化、PCA和LR回归封装在一起。

1.	from sklearn.preprocessing import StandardScaler  
2.	from sklearn.decomposition import PCA  
3.	from sklearn.linear_model import LogisticRegression  
4.	from sklearn.pipeline import Pipeline  
5.	  
6.	pip_lr = Pipeline([('std', StandardScaler()),  
7.	                   ('PCA', PCA(n_components=2)),  
8.	                   ('LR', LogisticRegression(penalty='l1', random_state=0))])  
9.	  
10.	pip_lr.fit(X_train, y_train)  
11.	print("Test score is {}".format(pip_lr.score(X_test, y_test))) 
12.	
13.	Test score is 0.9385964912280702 

二、k折交叉检验

       通常情况下,我们将k折交叉验证用于模型的调 优,也就是找到使得模型泛化性能 最优的超参值。一旦找到了满意的超参值,我们就可以在全部的训练数据上重新训练模型, 并使用独立的测试数据集对模型性能做出最终评价。分层交叉检验是一种改进的方法,可以得到方差和偏差都较小的结果。

1.		from sklearn.cross_validation import StratifiedKFold    #分层k折交叉验证  
2.	  
3.	kfold = StratifiedKFold(y=y_train
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值