版权声明:本套技术专栏是作者(秦凯新)平时工作的总结和升华,通过从真实商业环境抽取案例进行总结和分享,并给出商业应用的调优建议和集群环境容量规划等内容,请持续关注本套博客。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样本集案例实战...相关推荐

  1. Python技术栈与Spark交叉数据分析双向整合技术实战--大数据ML样本集案例实战

    版权声明:本套技术专栏是作者(秦凯新)平时工作的总结和升华,通过从真实商业环境抽取案例进行总结和分享,并给出商业应用的调优建议和集群环境容量规划等内容,请持续关注本套博客.QQ邮箱地址:1120746 ...

  2. 机器学习基础|K折交叉验证与超参数搜索

    文章目录 交叉验证 交叉验证的概念 K的取值 为什么要用K折交叉验证 Sklearn交叉验证API 超参数搜索 超参数的概念 超参数搜索的概念 超参数搜索的原理 Sklearn超参数搜索API 实例 ...

  3. 交叉验证和超参数调整:如何优化您的机器学习模型

    In the first two parts of this article I obtained and preprocessed Fitbit sleep data, split the data ...

  4. 深度学习-超参数和交叉验证

    一. 1.什么是超参数 没接触过机器学习的人可能对这个概念比较模糊.我们可以从两方面来理解 (1)参数值的产生由来 超参数是在开始学习过程之前设置值的参数(人为设置),而不是通过训练得到的参数数据. ...

  5. matlab-K折交叉验证与分层K折交叉验证

    文章目录 K折交叉验证有什么用? 如何实现K折交叉验证? K折交叉验证的要点:(文字版) 如何实现K折交叉验证(图片版) 如何实现K折交叉验证(matlab版) 为啥我们需要分层K折交叉验证? 如何实 ...

  6. 深度学习中的验证集和超参数简介

    大多数机器学习算法都有超参数,可以设置来控制算法行为.超参数的值不是通过学习算法本身学习出来的(尽管我们可以设计一个嵌套的学习过程,一个学习算法为另一个学习算法学出最优超参数). 在多项式回归示例中, ...

  7. 《scikit-learn》使用交叉验证优化KNN参数

    我们先来看看KNN的例子,使用交叉验证来评估. from sklearn.model_selection import cross_validate from sklearn.datasets imp ...

  8. 5折交叉验证_数据集的划分——交叉验证法

    本文作者:王 歌 文字编辑:戴 雯 技术总编:张 邯 前面我们在举例时,通常是将所使用的数据集按照75%和25%的比例划分为训练集和测试集,这主要是为了我们举例方便,同时划分后的数据量也依然符合大样本 ...

  9. python k折交叉验证,python中sklearnk折交叉验证

    python中sklearnk折交叉验证 发布时间:2018-06-10 11:09, 浏览次数:492 , 标签: python sklearnk 1.模型验证回顾 进行模型验证的一个重要目的是要选 ...

  10. k折交叉验证 python_Python实现K折交叉验证法的方法步骤

    学习器在测试集上的误差我们通常称作"泛化误差".要想得到"泛化误差"首先得将数据集划分为训练集和测试集.那么怎么划分呢?常用的方法有两种,k折交叉验证法和自助法 ...

最新文章

  1. FD.io/VPP — VPP 的安装部署
  2. JBoss4.2.3部署SSH2
  3. JAVA深入研究——Method的Invoke方法。
  4. COW奶牛!Copy On Write机制了解一下
  5. 线段树(成段更新,区间求和lazy操作 )
  6. AutoGL:浅谈未来非常有前景的自动图机器学习相关概念
  7. win7下设置无线上网
  8. OpenGL 投光物Light casters
  9. pythonfind_python实现find -name的功能
  10. springboot报错---@RunWith(SpringRunner.class)
  11. 分布式一致性算法:Raft 算法
  12. Android之使用ViewPager实现图片展示(最简单的)
  13. Qt Creator 预览QtCreator中的界面
  14. 北大毕业 15 年经验架构师,重磅解读 5G 时代的计算平台
  15. SaaS行业乘风杨帆,中小企业市场潜力分析
  16. Hive实现笛卡尔积
  17. 人工智能——产生式系统(动物识别产生式系统)项目开发
  18. 在IEEE 上发表会议论文需要注意的几个事情
  19. VS常用的12个插件
  20. MySQL 生成指定长度的随机字符串

热门文章

  1. 修改了JS代码,刷新网页后,加载的JS还是原来旧的?
  2. 20145305 《网络对抗》注入Shellcode并执行Return-to-libc 攻击实验
  3. 访问ControlTemplate内部的元素
  4. 用户控件中得到CurrentUser
  5. 自己做的一些练习题代码
  6. ThinkPHP5.0 实现 app支付宝支付功能
  7. FPGA中亚稳态相关问题及跨时钟域处理
  8. lua MVC框架 Orbit初探
  9. 2014年武汉的IT行情好像不太好(续):20个月过后,再看当时面试过的几个公司--武汉财富基石-崩盘,辣妈萌宝-创业失败,朋友公司转交他人管理...
  10. Oracle JOB的建立,定时执行任务