Sklearn流水线交叉验证以及超参数网格交叉评估基础案例实战-大数据ML样本集案例实战...
版权声明:本套技术专栏是作者(秦凯新)平时工作的总结和升华,通过从真实商业环境抽取案例进行总结和分享,并给出商业应用的调优建议和集群环境容量规划等内容,请持续关注本套博客。QQ邮箱地址:1120746959@qq.com,如有任何技术交流,可随时联系。
1 基本数据探索
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
X = pd.read_csv('C:\\ML\\MLData\\iris.data')
X.columns = ['sepal_length_cm', 'sepal_width_cm', 'petal_length_cm', 'petal_width_cm', 'class']X.head()
X.sample(n=10)
复制代码
X.shape
(149, 5)X.dtypes
sepal_length_cm float64
sepal_width_cm float64
petal_length_cm float64
petal_width_cm float64
class object
dtype: objectX.describe()
复制代码
one-hot编码
# 创建一个简单的原始数据testdata = pd.DataFrame({'age':[4,6,3,3],'pet':['cat','dog','dog','fish']})testdataage pet0 4 cat1 6 dog2 3 dog3 3 fishpd.get_dummies(testdata,columns=['pet'])age pet_cat pet_dog pet_fish0 4 1 0 01 6 0 1 02 3 0 1 03 3 0 0 1 testdata.pet.values.reshape(-1,1)array([['cat'],['dog'],['dog'],['fish']], dtype=object)from sklearn.preprocessing import OneHotEncoderOneHotEncoder().fit_transform(testdata.age.values.reshape(-1,1)).toarray()array([[0., 1., 0.],[0., 0., 1.],[1., 0., 0.],[1., 0., 0.]]) 复制代码
时间类型处理(DatetimeIndex)
import pandas as pddata = pd.read_csv('kaggle_bike_competition_train.csv', header = 0, error_bad_lines=False)data.head() #先看下数据的样子,打印前5行 复制代码
#下面我们只看datatime这个时间类型属性,#首先,我们可以将它切分成data = data.iloc[:,:1] #只看datatime这个属性temp = pd.DatetimeIndex(data['datetime'])data['date'] = temp.date #日期 data['time'] = temp.time #时间data['year'] = temp.year #年data['month'] = temp.month #月data['day'] = temp.day #日data['hour'] = temp.hour #小时data['dayofweek'] = temp.dayofweek #具体星期几data['dateDays'] = (data.date - data.date[0]) #生成一个时间长度特征 ['0days','0days',...,'1days',...]data['dateDays'] = data['dateDays'].astype('timedelta64[D]') #转换成float型data
复制代码
2 数据可视化探索分析
box 查看异常点
X.plot(kind="box",subplots=True,layout=(1,4),figsize=(12,5))plt.show() 复制代码
hist区间图
X.hist(figsize=(12,5),xlabelsize=1,ylabelsize=1)plt.show() 复制代码
密度图
X.plot(kind="density",subplots=True,layout=(1,4),figsize=(12,5))plt.show() 复制代码
热力图关系图
fig = plt.figure(figsize=(10,10))ax = fig.add_subplot(111)cax = ax.matshow(X.corr(),vmin=-1,vmax=1,interpolation="none")fig.colorbar(cax)ticks = np.arange(0,4,1)ax.set_xticks(ticks)ax.set_yticks(ticks)ax.set_xticklabels(col_name)ax.set_yticklabels(col_name)plt.show() 复制代码
3 数据比例划分
from sklearn.model_selection import KFoldfrom sklearn.model_selection import train_test_splitall_inputs = iris_data[['sepal_length_cm', 'sepal_width_cm','petal_length_cm', 'petal_width_cm']].valuesall_classes = iris_data['class'].values(training_inputs,testing_inputs,training_classes,testing_classes) = train_test_split(all_inputs, all_classes, train_size=0.75, random_state=1)
复制代码
4 多分类模型集中评估
from sklearn.ensemble import AdaBoostClassifierfrom sklearn.ensemble import GradientBoostingClassifierfrom sklearn.ensemble import ExtraTreesClassifierfrom sklearn.ensemble import RandomForestClassifierfrom sklearn.svm import SVCfrom sklearn.neighbors import KNeighborsClassifierfrom sklearn.linear_model import LogisticRegressionfrom sklearn.naive_bayes import GaussianNBfrom sklearn.discriminant_analysis import LinearDiscriminantAnalysisfrom sklearn.model_selection import KFoldfrom sklearn.model_selection import train_test_splitfrom sklearn.model_selection import cross_val_scoremodels = []models.append(("AB",AdaBoostClassifier()))models.append(("GBM",GradientBoostingClassifier()))models.append(("RF",RandomForestClassifier()))models.append(("ET",ExtraTreesClassifier()))models.append(("SVC",SVC()))models.append(("KNN",KNeighborsClassifier()))models.append(("LR",LogisticRegression()))models.append(("GNB",GaussianNB()))models.append(("LDA",LinearDiscriminantAnalysis()))names = []results = []for name,model in models:result = cross_val_score(model,training_inputs,training_classes,scoring="accuracy",cv=5)names.append(name)results.append(result)print("{} Mean:{:.4f}(Std{:.4f})".format(name,result.mean(),result.std()))AB Mean:0.9097(Std0.0290)GBM Mean:0.9370(Std0.0361)RF Mean:0.9461(Std0.0442)ET Mean:0.9370(Std0.0361)SVC Mean:0.9640(Std0.0340)KNN Mean:0.9374(Std0.0454)LR Mean:0.9379(Std0.0353)GNB Mean:0.9556(Std0.0391)LDA Mean:0.9735(Std0.0360)
复制代码
5 流水线交叉验证
from sklearn.pipeline import Pipelinefrom sklearn.preprocessing import StandardScalerpipeline = []pipeline.append(("ScalerET", Pipeline([("Scaler",StandardScaler()),("ET",ExtraTreesClassifier())])))pipeline.append(("ScalerGBM", Pipeline([("Scaler",StandardScaler()),("GBM",GradientBoostingClassifier())])))pipeline.append(("ScalerRF", Pipeline([("Scaler",StandardScaler()),("RF",RandomForestClassifier())])))names = []results = []for name,model in pipeline:kfold = KFold(n_splits=5,random_state=42)result = cross_val_score(model, training_inputs,training_classes, cv=kfold, scoring="accuracy")results.append(result)names.append(name)print("{}: Error Mean:{:.4f} (Error Std:{:.4f})".format(name,result.mean(),result.std()))ScalerET: Error Mean:0.9372 (Error Std:0.0358)
ScalerGBM: Error Mean:0.9462 (Error Std:0.0332)
ScalerRF: Error Mean:0.9553 (Error Std:0.0275)
复制代码
6 超参数网格交叉评估
from sklearn.model_selection import GridSearchCVparam_grid = {"C":[0.1, 0.3, 0.5, 0.7, 0.9, 1.0, 1.3, 1.5, 1.7, 2.0],"kernel":['linear', 'poly', 'rbf', 'sigmoid']}model = SVC()kfold = KFold(n_splits=5, random_state=42)grid = GridSearchCV(estimator=model, param_grid=param_grid, scoring="accuracy", cv=kfold)grid_result = grid.fit(training_inputs,training_classes)print("Best: %f using %s" % (grid_result.best_score_, grid_result.best_params_))means = grid_result.cv_results_['mean_test_score']stds = grid_result.cv_results_['std_test_score']params = grid_result.cv_results_['params']for mean, stdev, param in zip(means, stds, params):print("%f (%f) with: %r" % (mean, stdev, param))Best: 0.972973 using {'C': 0.9, 'kernel': 'linear'}0.954955 (0.027681) with: {'C': 0.1, 'kernel': 'linear'}0.927928 (0.021620) with: {'C': 0.1, 'kernel': 'poly'}0.945946 (0.016821) with: {'C': 0.1, 'kernel': 'rbf'}0.351351 (0.049646) with: {'C': 0.1, 'kernel': 'sigmoid'}0.963964 (0.017933) with: {'C': 0.3, 'kernel': 'linear'}0.954955 (0.028629) with: {'C': 0.3, 'kernel': 'poly'}0.954955 (0.027681) with: {'C': 0.3, 'kernel': 'rbf'}0.351351 (0.049646) with: {'C': 0.3, 'kernel': 'sigmoid'}0.963964 (0.017933) with: {'C': 0.5, 'kernel': 'linear'}0.954955 (0.028629) with: {'C': 0.5, 'kernel': 'poly'}0.963964 (0.017933) with: {'C': 0.5, 'kernel': 'rbf'}0.351351 (0.049646) with: {'C': 0.5, 'kernel': 'sigmoid'}0.963964 (0.017933) with: {'C': 0.7, 'kernel': 'linear'}0.963964 (0.033773) with: {'C': 0.7, 'kernel': 'poly'}0.963964 (0.017933) with: {'C': 0.7, 'kernel': 'rbf'}0.342342 (0.045336) with: {'C': 0.7, 'kernel': 'sigmoid'}0.972973 (0.021914) with: {'C': 0.9, 'kernel': 'linear'}0.963964 (0.033773) with: {'C': 0.9, 'kernel': 'poly'}0.963964 (0.017933) with: {'C': 0.9, 'kernel': 'rbf'}0.351351 (0.049646) with: {'C': 0.9, 'kernel': 'sigmoid'}0.972973 (0.021914) with: {'C': 1.0, 'kernel': 'linear'}0.963964 (0.033773) with: {'C': 1.0, 'kernel': 'poly'}0.963964 (0.017933) with: {'C': 1.0, 'kernel': 'rbf'}0.351351 (0.049646) with: {'C': 1.0, 'kernel': 'sigmoid'}0.972973 (0.021914) with: {'C': 1.3, 'kernel': 'linear'}0.963964 (0.033773) with: {'C': 1.3, 'kernel': 'poly'}0.963964 (0.017933) with: {'C': 1.3, 'kernel': 'rbf'}0.351351 (0.049646) with: {'C': 1.3, 'kernel': 'sigmoid'}0.972973 (0.021914) with: {'C': 1.5, 'kernel': 'linear'}0.963964 (0.033773) with: {'C': 1.5, 'kernel': 'poly'}0.963964 (0.017933) with: {'C': 1.5, 'kernel': 'rbf'}0.351351 (0.049646) with: {'C': 1.5, 'kernel': 'sigmoid'}0.972973 (0.021914) with: {'C': 1.7, 'kernel': 'linear'}0.954955 (0.028629) with: {'C': 1.7, 'kernel': 'poly'}0.963964 (0.017933) with: {'C': 1.7, 'kernel': 'rbf'}0.351351 (0.049646) with: {'C': 1.7, 'kernel': 'sigmoid'}0.963964 (0.017933) with: {'C': 2.0, 'kernel': 'linear'}0.954955 (0.028629) with: {'C': 2.0, 'kernel': 'poly'}0.954955 (0.027681) with: {'C': 2.0, 'kernel': 'rbf'}0.351351 (0.049646) with: {'C': 2.0, 'kernel': 'sigmoid'}
复制代码
总结
本文没有华丽的技术,在于整合多分类模型集中评估,流水线交叉验证以及超参数网格交叉评估多种场景。
版权声明:本套技术专栏是作者(秦凯新)平时工作的总结和升华,通过从真实商业环境抽取案例进行总结和分享,并给出商业应用的调优建议和集群环境容量规划等内容,请持续关注本套博客。QQ邮箱地址:1120746959@qq.com,如有任何技术交流,可随时联系。
秦凯新 于深圳
Sklearn流水线交叉验证以及超参数网格交叉评估基础案例实战-大数据ML样本集案例实战...相关推荐
- Python技术栈与Spark交叉数据分析双向整合技术实战--大数据ML样本集案例实战
版权声明:本套技术专栏是作者(秦凯新)平时工作的总结和升华,通过从真实商业环境抽取案例进行总结和分享,并给出商业应用的调优建议和集群环境容量规划等内容,请持续关注本套博客.QQ邮箱地址:1120746 ...
- 机器学习基础|K折交叉验证与超参数搜索
文章目录 交叉验证 交叉验证的概念 K的取值 为什么要用K折交叉验证 Sklearn交叉验证API 超参数搜索 超参数的概念 超参数搜索的概念 超参数搜索的原理 Sklearn超参数搜索API 实例 ...
- 交叉验证和超参数调整:如何优化您的机器学习模型
In the first two parts of this article I obtained and preprocessed Fitbit sleep data, split the data ...
- 深度学习-超参数和交叉验证
一. 1.什么是超参数 没接触过机器学习的人可能对这个概念比较模糊.我们可以从两方面来理解 (1)参数值的产生由来 超参数是在开始学习过程之前设置值的参数(人为设置),而不是通过训练得到的参数数据. ...
- matlab-K折交叉验证与分层K折交叉验证
文章目录 K折交叉验证有什么用? 如何实现K折交叉验证? K折交叉验证的要点:(文字版) 如何实现K折交叉验证(图片版) 如何实现K折交叉验证(matlab版) 为啥我们需要分层K折交叉验证? 如何实 ...
- 深度学习中的验证集和超参数简介
大多数机器学习算法都有超参数,可以设置来控制算法行为.超参数的值不是通过学习算法本身学习出来的(尽管我们可以设计一个嵌套的学习过程,一个学习算法为另一个学习算法学出最优超参数). 在多项式回归示例中, ...
- 《scikit-learn》使用交叉验证优化KNN参数
我们先来看看KNN的例子,使用交叉验证来评估. from sklearn.model_selection import cross_validate from sklearn.datasets imp ...
- 5折交叉验证_数据集的划分——交叉验证法
本文作者:王 歌 文字编辑:戴 雯 技术总编:张 邯 前面我们在举例时,通常是将所使用的数据集按照75%和25%的比例划分为训练集和测试集,这主要是为了我们举例方便,同时划分后的数据量也依然符合大样本 ...
- python k折交叉验证,python中sklearnk折交叉验证
python中sklearnk折交叉验证 发布时间:2018-06-10 11:09, 浏览次数:492 , 标签: python sklearnk 1.模型验证回顾 进行模型验证的一个重要目的是要选 ...
- k折交叉验证 python_Python实现K折交叉验证法的方法步骤
学习器在测试集上的误差我们通常称作"泛化误差".要想得到"泛化误差"首先得将数据集划分为训练集和测试集.那么怎么划分呢?常用的方法有两种,k折交叉验证法和自助法 ...
最新文章
- FD.io/VPP — VPP 的安装部署
- JBoss4.2.3部署SSH2
- JAVA深入研究——Method的Invoke方法。
- COW奶牛!Copy On Write机制了解一下
- 线段树(成段更新,区间求和lazy操作 )
- AutoGL:浅谈未来非常有前景的自动图机器学习相关概念
- win7下设置无线上网
- OpenGL 投光物Light casters
- pythonfind_python实现find -name的功能
- springboot报错---@RunWith(SpringRunner.class)
- 分布式一致性算法:Raft 算法
- Android之使用ViewPager实现图片展示(最简单的)
- Qt Creator 预览QtCreator中的界面
- 北大毕业 15 年经验架构师,重磅解读 5G 时代的计算平台
- SaaS行业乘风杨帆,中小企业市场潜力分析
- Hive实现笛卡尔积
- 人工智能——产生式系统(动物识别产生式系统)项目开发
- 在IEEE 上发表会议论文需要注意的几个事情
- VS常用的12个插件
- MySQL 生成指定长度的随机字符串
热门文章
- 修改了JS代码,刷新网页后,加载的JS还是原来旧的?
- 20145305 《网络对抗》注入Shellcode并执行Return-to-libc 攻击实验
- 访问ControlTemplate内部的元素
- 用户控件中得到CurrentUser
- 自己做的一些练习题代码
- ThinkPHP5.0 实现 app支付宝支付功能
- FPGA中亚稳态相关问题及跨时钟域处理
- lua MVC框架 Orbit初探
- 2014年武汉的IT行情好像不太好(续):20个月过后,再看当时面试过的几个公司--武汉财富基石-崩盘,辣妈萌宝-创业失败,朋友公司转交他人管理...
- Oracle JOB的建立,定时执行任务