zoukankan      html  css  js  c++  java
  • 机器学习sklearn(44): 数据处理(七) 数据无量纲化/缺失值

    1 数据无量纲化

    from sklearn.preprocessing import MinMaxScaler
    data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
    #不太熟悉numpy的小伙伴,能够判断data的结构吗?
    #如果换成表是什么样子?
    import pandas as pd
    pd.DataFrame(data) #实现归一化
    scaler = MinMaxScaler() #实例化
    scaler = scaler.fit(data) #fit,在这里本质是生成min(x)和max(x)
    result = scaler.transform(data) #通过接口导出结果
    result
    result_ = scaler.fit_transform(data) #训练和导出结果一步达成
    scaler.inverse_transform(result) #将归一化后的结果逆转
    #使用MinMaxScaler的参数feature_range实现将数据归一化到[0,1]以外的范围中
    data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
    scaler = MinMaxScaler(feature_range=[5,10]) #依然实例化
    result = scaler.fit_transform(data) #fit_transform一步导出结果
    result
    #当X中的特征数量非常多的时候,fit会报错并表示,数据量太大了我计算不了
    #此时使用partial_fit作为训练接口
    #scaler = scaler.partial_fit(data)

    from sklearn.preprocessing import StandardScaler
    data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
    scaler = StandardScaler() #实例化
    scaler.fit(data) #fit,本质是生成均值和方差
    scaler.mean_ #查看均值的属性mean_
    scaler.var_ #查看方差的属性var_
    x_std = scaler.transform(data) #通过接口导出结果
    x_std.mean() #导出的结果是一个数组,用mean()查看均值
    x_std.std() #用std()查看方差
    scaler.fit_transform(data) #使用fit_transform(data)一步达成结果
    scaler.inverse_transform(x_std) #使用inverse_transform逆转标准化

     

    2 缺失值

    import pandas as pd
    data = pd.read_csv(r"C:worklearnbettermicro-class
     week 3 PreprocessingNarrativedata.csv",index_col=0)
    data.head()

     

    data.info()
    #填补年龄
    Age = data.loc[:,"Age"].values.reshape(-1,1) #sklearn当中特征矩阵必须是二维
    Age[:20]
    from sklearn.impute import SimpleImputer
    imp_mean = SimpleImputer() #实例化,默认均值填补
    imp_median = SimpleImputer(strategy="median") #用中位数填补
    imp_0 = SimpleImputer(strategy="constant",fill_value=0) #用0填补
    imp_mean = imp_mean.fit_transform(Age) #fit_transform一步完成调取结果
    imp_median = imp_median.fit_transform(Age)
    imp_0 = imp_0.fit_transform(Age)
    imp_mean[:20]
    imp_median[:20]
    imp_0[:20] #在这里我们使用中位数填补Age
    data.loc[:,"Age"] = imp_median
    data.info()
    #使用众数填补Embarked
    Embarked = data.loc[:,"Embarked"].values.reshape(-1,1)
    
    imp_mode = SimpleImputer(strategy = "most_frequent")
    data.loc[:,"Embarked"] = imp_mode.fit_transform(Embarked)
    data.info()
  • 相关阅读:
    理解java的三大特性之封装
    Spring_事务-注解代码
    Spring_使用 NamedParameterJdbcTemplate
    C#多线程简单例子讲解
    C#多线程编程
    ASP.NET MVC 的URL路由介绍
    NHibernate二级缓存(第十一篇)
    NHibernate之配置文件属性说明
    NHibernate之映射文件配置说明
    NHibernate 延迟加载与立即加载 (第七篇)
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/14928979.html
Copyright © 2011-2022 走看看