五、数据挖掘流程简明笔记

本文详细介绍了数据挖掘的六个基本步骤,包括问题定义、特征工程、数据预处理、模型选择、模型优化和模型部署。在特征工程中,详细讨论了数据理解、数据预处理(如数据清洗、数据转换、特征选择)和不同选择方法如卡方检验、RFE、PCA。模型选择部分,阐述了评估算法的方式和指标,如K折交叉验证、AUC图、混淆矩阵等。此外,文章还探讨了模型优化的集成算法,如袋装算法、提升算法和投票算法,以及算法调参的方法,如网格搜索和随机搜索。
摘要由CSDN通过智能技术生成

1、机器学习概述

机器学习共有六个基本步骤:image

  1. 问题定义

    研究和提炼问题的特征,以帮助我们更好地理解项目的目标。

  2. 特征工程

    1. 数据理解

      通过描述性统计和可视化来分析现有的数据质量和分布。

    2. 数据预处理

      对数据进行预处理,特征选定,以便于构建一个预测模型。

  3. 模型选择

    通过一定的方法分离一部分数据,用来评估算法模型,并选取一部分代表数据进行分析,以改善模型。

  4. 模型优化

    通过调参和集成算法提升预测结果的准确度。

  5. 模型部署

    完成模型,并执行模型来预测结果和展示。

  6. 反馈跟踪

    收集反馈结果,做正负向调节

2、入门案例示例

  • 导入基本包:

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
  • 导入数据:

    # 导入数据
    from sklearn.datasets import load_iris
    iris = load_iris()
    data_X = pd.DataFrame(iris.data,columns=iris.feature_names)
    data_y = iris.target
  • 查看数据维度:

    # 查看数据的维度
    data_X.shape

  • 查看数据自身:

    # 查看数据自身
    data_X.head(5)

    image

  • 统计描述数据:

    # 统计描述数据
    data_X.describe()

    image

  • 数据分类分布:

    # 数据分类分布
    for i in np.unique(data_y):
        print("{}:".format(i),sum(data_y==i))

    image

  • 单变量图表:

    1. 箱线图

      # 箱线图
      data_X.plot(kind="box",subplots=True,layout=(2,2),sharex=False,sharey=False,grid=True)

      image

    2. 直方图

      # 直方图
      data_X.hist()

      image

    3. 核密度估计图

      # 核密度估计图
      data_X.plot(kind="kde",subplots=True,layout=(2,2),sharex=False,sharey=False,grid=True,figsize=(8,8))

      image

  • 多变量图表:

    1. 散点矩阵图

      from pandas.plotting import scatter_matrix
      scatter_matrix(data_X,figsize=(10,10))

      image

  • 评估算法:

    1. 分离数据集

      # 分离数据集
      from sklearn.model_selection import train_test_split
      
      validation_size = 0.2
      seed = 7
      
      X_train,X_validation,Y_train,Y_validation = train_test_split(data_X,data_y,test_size=validation_size,random_state=seed)
    2. 评估模式

      # 评估模式
      from sklearn.model_selection import KFold
      from sklearn.model_selection import cross_val_score
      
      # 导入算法模型
      
      # 线性算法
      from sklearn.linear_model import LogisticRegression # LR
      from sklearn.discriminant_analysis import LinearDiscriminantAnalysis  # LDA
      
      # 非线性模型
      from sklearn.tree import DecisionTreeClassifier # CART
      from sklearn.neighbors import KNeighborsClassifier # KNN
      from sklearn.naive_bayes import GaussianNB # NB
      from sklearn.svm import SVC  # SVM
      
      # 设置随机数种子
      seed = 7
      # 装载算法
      models = dict()
      models["LR"] = LogisticRegression()
      models["LDA"] = LinearDiscriminantAnalysis()
      models["KNN"] = KNeighborsClassifier()
      models["CART"] = DecisionTreeClassifier()
      models["NB"] = GaussianNB()
      models["SVM"] = SVC()
      # 评估算法
      results = []
      for key in models:
          kfold = KFold(n_splits=10,random_state=seed,shuffle=True)
          cv_results = cross_val_score(models[key],X_train,Y_train,cv=kfold,scoring="accuracy")
          results.append(cv_results)
          print("{}:{} {}".format(key,cv_results.mean(),cv_results.std()))

      image

    3. 箱线图比较算法效果

      # 箱线图比较算法
      fig = plt.figure()
      fig.suptitle("Algorithm Comparison")
      ax = fig.add_subplot(111)
      plt.boxplot(results)
      ax.set_xticklabels(models.keys())
      plt.show()

      image

  • 实施预测

    # 导入评估包
    from sklearn.metrics import classification_report
    from sklearn.metrics import confusion_matrix
    from sklearn.metrics import accuracy_score
    from pprint import pprint
    # 使用评估数据集评估算法
    svm = SVC()
    svm.fit(X=X_train,y=Y_train)
    predictions = svm.predict(X_validation)
    
    pprint(accuracy_score(Y_validation,predictions))
    pprint(confusion_matrix(Y_validation,predictions))
    print(classification_report(Y_validation,predictions))

    image

3、问题定义

三个W:

  • 数据挖掘的对象是什么——who
  • 数据挖掘的商业目的——what
  • 数据挖掘要解决的业务问题——why

4、特征工程

4.1 数据理解

import pandas as pd
filename = "..."
dataframe = pd.DataFrame(filename)
  1. 查看数据的表现形式

    dataframe.head(10)
  2. 查看数据的维度

    # 展示数据行和列
    dataframe.shape
  3. 查看数据的属性和类型

    # 展示数据的类型
    dataframe.dtypes
  4. 描述性统计

    https://www.cnblogs.com/nuoc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值