数据挖掘数据预处理和运用概念以及对鸢尾花数据集分类的分位数图和直方图的实际运用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据挖掘数据预处理和运用概念以及对鸢尾花数据集分类的分位数图和直方图的实际运用相关的知识,希望对你有一定的参考价值。

一.数据预处理和运用

1.1数据科学家在机器学习的工作统计

1.2 数据清理

大部分的机器学习模型所处理的都是特征,特征通常是输入变量所对应的可用于模型的数值表示。 大部分情况下,收集得到的数据需要经过预处理后才能够为算法所使用,预处理的操作主要包括以下几个部分:

1.3 脏数据

真实的数据中通常会出现一些数据质量问题:

  • 不完整:数据中缺少属性或者包含一些确实的值
  • 多噪音:数据包含错误的记录或者异常点
  • 不一致:数据中存在矛盾的、有差异的记录

1.4 数据的转换

对数据进行初步的预处理后,需要将其转换为一种适合机器学习模型的表示形式,以下是一些常见的数据转化的形式。

  • 在分类问题中,将类别数据编码成为对应的数值表示(哑编码)

  • 数值数据转换为类别数据以减少变量的值(对年龄分段)

  • 其他数据

    • 从文本数据中提取有用的数据(一般使用词袋法、TF-DF或者word2vec)

    • 理图像数据(颜色空间,灰度化,几何变化,haar特征等,图像增强

  • 特征工程

    • 对特延进行归一化、标准化,以保证同一模型的不同输入变量的值域柏同

    • 特征扩充:对现有变量进行组合或转换以生成新特征,比如平均数

1.5 数据错误的不可避免性

  • 数据输入和获得过程数据错误

  • 数据集成所表现出来的错误

  • 数据传输过程所引入的错误

  • 据统计有错误的数据占总数据的5%左右

1.7 数据预处理的形式

1.数据清理

  • 补充缺失数据、平滑噪声数据、识别或删除离群点,解决不一致

2.数据集成

  • 集成多个数据库、数据立方(DataCube)或文件

3.数据变换

  • 规范化和聚集

4.数据归约

  • 简化数据、但产生同样或相似的结果

1.8度量数据的中心趋势

1.代数度量一可以通过应用一个代数函数于一个或多个分布度量计算的度量。

  • mean()、中列数
  • 中位数、众数

2.整体度量

  • 必须对整个数据集计算的度量。
  • 中位数、众数

二.基本描述数据汇总的图像表示

2.1 分位数图

1.例子使用鸢尾花数据集:事先准备引用

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
y = iris.target

2.采用鸢尾花的1类和2类采用特征1,并且进行排序操作

kid1 =np.sort(X[:50,0])
kid2 = np.sort(X[50:100,0])

3.使用分位数图第一个点和最后一个点的连线:

plt.scatter(kid1,kid2)
plt.plot([kid1[0],kid1[-1]],[kid2[0],kid2[-1]])

4.分位数(x轴的四分位,y轴的四分位)

plt.scatter([np.quantile(kid1,0.25),np.quantile(kid1,0.5),np.quantile(kid1,0.75)],[np.quantile(kid2,0.25),np.quantile(kid2,0.5),np.quantile(kid2,0.75)] ,color="red")
plt.show()

5.结果发现特点并不明显

6.采用循环,观察四个图的特点:

for i in range(4):
    plt.subplot(2, 2, i + 1)
    kid1 = np.sort(X[:50, i])
    kid2 = np.sort(X[100:, i])
    plt.scatter(kid1, kid2)
    plt.plot([kid1[0], kid1[-1]], [kid2[0], kid2[-1]])  # 第一个点和最后一个点的连线
    # 分位数(x轴的四分位,y轴的四分位)
    plt.scatter([np.quantile(kid1, 0.25), np.quantile(kid1, 0.5), np.quantile(kid1, 0.75)],
                [np.quantile(kid2, 0.25), np.quantile(kid2, 0.5), np.quantile(kid2, 0.75)], color="red")
plt.show()

排序之后的四分位图:

for i in range(4):
        x_sorted=np.sort(x[:,i])
        plt.scatter([i for i in range(x.shape[0])],x_sorted)
        plt.plot([0,x.shape[0]-1],[x_sorted[0],x_sorted[x.shape[0]-1]])
        plt.scatter([round(x.shape[0]/4),round(x.shape[0]/2),round(x.shape[0]*3/4)],
                    [np.quantile(x_sorted,0.25),np.quantile(x_sorted,0.5),np.quantile(x_sorted,0.75)],color="red")

运行效果如下:

2.2 直方图

参数:

1.直方图还是使用鸢尾花的数据集:

x=X[:50,0]
plt.hist(x,edgecolor="k")
plt.show()

2.运行结果如下

3.使用第3特征,选取20个,效果如下:

x=X[:,2]
n,bins,_=plt.hist(x,bins=20,edgecolor="k")
plt.show()
print("bins取值范围",list(bins))
print("频数",list(n))

可以看到,以特征3判断,可以看到分类结果非常的明显。

4.4个特征直方图对比

plt.figure(figsize=(12,12))
for i in range(4):
    plt.subplot(2,2,i+1)
    x=X[:,i]
    n,bins,_=plt.hist(x,bins=100,edgecolor="k")
    plt.xlabel(iris["feature_names"][0])
    plt.ylabel("Frequency")
plt.show()

以上是关于数据挖掘数据预处理和运用概念以及对鸢尾花数据集分类的分位数图和直方图的实际运用的主要内容,如果未能解决你的问题,请参考以下文章

[python图像对抗]二深度学习基本概念以及神经网络实现鸢尾花分类

[python图像对抗]二深度学习基本概念以及神经网络实现鸢尾花分类

案例:鸢尾花种类预测--知道sklearn中对数据集的划分方法

matlab RBF神经网络对iris鸢尾花数据集进行分类

统计学习方法K近邻对鸢尾花(iris)数据集进行多分类

数据挖掘常用算法之决策树算法