zoukankan      html  css  js  c++  java
  • 人工智能_2_特征处理.py

    # 特征处理
    # 特征预处理:通过统计方法将数据转换为算法需要的数据
    # 数值型数据:标准缩放
    #           规依法,标准化(常用,适用于当前大数据),缺失值处理(删除,填补中位数平均数,通常按照列填补)
    # 类别型数据:ont-hot编码
    # 时间类型:时间的切分
    # 特征处理API sklearn.preprocessing
    # ==============================================
    # 归一化:对数据变化--->默认[0,1]之间
    """
    new = (old-min)/(max-min)  max,min 为某列最大值最小值
    new2 = new*(mx-mi)+mi mx mi 为指定的区间默认
    new2 即为转换后的值
    MinScalar(feature_range=(0,1)...) 缩放函数
    """
    # 当数据的n个特征同等重要的时候,要进行归一化,
    # 使得某一个特征对最终结果不会造成更大的影响(其实主要与算法有关,)
    # 容易受异常点影响,容易更改max,min的值
    from sklearn.preprocessing import MinMaxScaler
    matrix = [
            [90,2,10,9000],
            [60,4,15,45],
            [75,3,13,46],
        ]
    def mm():
        """
        归一化处理
        :return:
        """
    
        mms = MinMaxScaler(feature_range=(2,3))
        data = mms.fit_transform(matrix)
        print(data)
    """
    [[3.         2.         2.         2.        ]
     [2.         3.         3.         2.83333333]
     [2.5        2.5        2.6        3.        ]]
    """
    # ================================================
    # 标准化(常用):使得某一特征不会对结果造成太大影响
    # new=(old-平均)/标准差 对每一列来说
    # 标准差 = 方差开平方
    # 方差:考量数据的稳定性
    # 处理后每个特征平均为0,方差为1,标准差为1
    from sklearn.preprocessing import StandardScaler
    def ss():
        s = StandardScaler()
        data = s.fit_transform(matrix)
        print(data)
    # =======================================
    from sklearn.preprocessing import Imputer
    # 填补NaN, 按照 mean, 列填补
    # 数据中的缺失值要为 numpy.nan 类型 若不是 replace() 替换掉
    import numpy as np
    [[90, 2, 10, 9000],
    [np.nan, 4, 15, 45],]
    Imputer(missing_values="NaN",strategy="mean",axis=0)
    Imputer(missing_values="nan",strategy="mean",axis=0)
    # ======================================================
    
    
    
    
    # 数据降维(注意不是数组的行数,列数)  指的是减少特征的数量
    # 主要方法:特征选择,主成分分析
    # 特征选择的原因:冗余,噪音
        # 方式:
        #   过滤式(主要过滤方差),例如方差为0的,或很小的 就可以过滤
        #   嵌入式(正则化,决策树),
        #   包裹式
        #   神经网络
    from sklearn.feature_selection import VarianceThreshold
    
    def var():
        vt = VarianceThreshold(threshold=0.0) # threshold 根据情况获取
        data = vt.fit_transform([
            [0,2,0,3],
            [0,1,4,3],
            [0,1,1,3],
        ])
        print(data)
    """
    [[2 0]  # 去掉了方差为0的列
     [1 4]
     [1 1]]
    """
    # 主成分分析
    from sklearn.decomposition import PCA
    # PCA 分析,简化数据集的技术, 使数据压缩,减少数据维数(特征数量), 损失少量数据
    # 特征数量过多的时候,考虑要不要使用使用PCA,(图片可能有上万个特征)
    # 特征数量很少的时候,可以不使用
    # PCA(n_components=) n_components
    #   小数:指定保留的信息量 0-1之间 一般为0.90-0.95之间
    #   整数:指定减少的特征数量(但自己通常不知道减少多少,因此不常使用)
    def pca():
        """
        主成分分析
        :return:
        """
        pc=PCA(n_components=0.92)
        data = pc.fit_transform([
            [2,8,4,5],
            [6,3,0,8],
            [5,4,9,1],
        ])
        print(data)
    """
    [[ 1.28620952e-15  3.82970843e+00]
     [ 5.74456265e+00 -1.91485422e+00]
     [-5.74456265e+00 -1.91485422e+00]]
    """
    # =======================================================================
    # 数据降维案例:用户对物品类别的喜好程度细分降维
    # 数据:https://www.kaggle.com/c/instacart-market-basket-analysis/data
    #   products.csv:商品信息
    #   order_products_prior.csv:订单与商品信息
    #   orders.csv:用户订单信息
    #   aisles.csv:商品所属具体物品类别
    #   首先表合并
    import pandas as pd
    data = pd.read_csv("E:dataexampleorders.csv")
    print(data.head(10))
    # data2 = pd.read_csv("")
    # new=pd.merge(data2,data2,on=['product_id','product_id']) # 合并 两张表 on 表示以那个键合并
    # 可再次合并
    # -----------
    #   交叉表(特殊的分组工具)
    cross = pd.crosstab(data['user_id'],data['type']) # 第一个是行数据,第二个是列数据
    # 第一列 为 user_id ,第一行为 物品类型
    #   然后是 每个 user 买的各种物品的数量
    #   显示了 用户 与他买的物品种类个数之间的关系
    #   可使用pca降维 去掉无关项,  然后给算法使用
    
    if __name__=="__main__":pass
        # mm()
        # ss()
        # var()
        # pca()
  • 相关阅读:
    python unittest单元测试框架-3用例执行顺序、多级目录、装饰器、fixtures
    python unittest单元测试框架-2discover
    python unittest单元测试框架-1
    python selenium-4自动化测试模型
    python selenium-9 grid模式
    20)PHP,数组的遍历
    19)PHP,数组知识
    18)PHP,可变函数,匿名函数 变量的作用域
    17)PHP,函数基础和参数问题
    16)PHP, set_include_path
  • 原文地址:https://www.cnblogs.com/Dean0731/p/11597691.html
Copyright © 2011-2022 走看看