zoukankan      html  css  js  c++  java
  • 数据归一化

    数据归一化:将所有数据映射到同一尺度

    常用方式:最值归一化 均值方差归一化

    最值归一化(normalization)

    把所有数据都映射到0-1之间

    适用范围: 适用于特征数组元素有明显的分布边界的情况(如学生成绩,最高100, 最低0),但是会受到outlier(异常值)的影响

    均值方差归一化

    把所有数据都映射到均值为0,方差为1的分布中

    适用范围:数据分布没有明显边界,有可能存在异常值的情况 (均值方差归一化对于有明显边界的分布也比较友好,所以一般都推荐均值方差归一化)

    手动对特征数组进行最值归一化

    # 生成一个(50,2)的随机数组,使用matplotlib绘制散点图
    X = np.random.randint(0, 100, (50, 2))
    X = np.array(X, dtype=float)
    X
    plt.scatter(X[:,0], X[:,1])
    plt.show()
    

    # 进行最值归一化
    X[:,0] = (X[:,0] - np.min(X[:,0])) / (np.max(X[:,0]) - np.min(X[:,0]))
    X[:,1] = (X[:,1] - np.min(X[:,1])) / (np.max(X[:,1]) - np.min(X[:,1]))
    plt.scatter(X[:,0], X[:, 1])
    plt.show()
    

    手动对特征数组进行均值方差归一化

    # 生成一个(50,2)的随机数组,使用matplotlib绘制散点图
    X = np.random.randint(0, 100, (50, 2))
    X = np.array(X, dtype=float)
    X
    plt.scatter(X[:,0], X[:,1])
    plt.show()
    

    # 进行均值方差归一化
    X[:, 0] = (X[:,0] - np.mean(X[:,0])) / np.std(X[:, 0])
    X[:, 1] = (X[:,1] - np.mean(X[:,1])) / np.std(X[:, 1])
    plt.scatter(X[:, 0], X[:, 1])
    plt.show()
    

    使用sklearn中的Scaler类对数据进行归一化

    Scaler类的使用流程

    代码示例:

    import numpy as np
    from sklearn import datasets
    from sklearn.model_selection import train_test_split
    from sklearn.preprocessing import StandardScaler
    
    
    iris = datasets.load_iris()  # 加载鸢尾花数据集
    X = iris.data  # 特征数组
    y = iris.target  # 标签向量
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=666)
    standardScaler = StandardScaler()  # 实例化这个类
    standardScaler.fit(X_train)
    print(standardScaler.mean_)  # 根据训练数据集算出的均值向量
    print(standardScaler.scale_) # 根据训练数据集算出的方差向量
    X_train_new = standardScaler .transform(X_train)  # 对训练数据特征数组进行归一化
    X_test_new = standardScaler.transform(X_test)  # 对测试数据特征数组进行归一化
    
    
    from sklearn.neighbors import KNeighborsClassifier
    knn_clf = KNeighborsClassifier(n_neighbors=3)
    knn_clf.fit(X_train_new, y_train)
    knn_clf.score(X_test_new, y_test)  # 当训练数据集进行了数据归一化,那么测试数据集也必须进行数据归一化
    

    运行结果:

  • 相关阅读:
    autoLayout适配
    iOS FMDB 无法更新二进制数据的问题
    iOS 数据库操作崩溃提示“ int rc = sqlite3_step([_statement statement]);”或者提示“ rc = sqlite3_step(pStmt);”
    iOS点击cell时,控件背景色消失的解决方法
    UISegmentedControl 的使用
    自定义cell侧滑删除
    iOS设置cell选中时文字颜色的变化
    iOS 如何在Label中显示html的文本
    iOS 单例的销毁
    类似微信聊天界面加载历史记录的样式
  • 原文地址:https://www.cnblogs.com/ss-py/p/12662940.html
Copyright © 2011-2022 走看看