2.1對 特征歸一化 的一些理解

特征歸一化有很多不同的叫法,比如:特征縮放Feature NormalizationFeature Scaling

數據標準化(歸一化)處理是數據挖掘的一項基礎工作,不同評價指標往往具有不同的量綱和量綱單位,這樣的情況會影響到數據分析的結果,為了消除指標之間的量綱影響,需要進行數據標準化處理,以解決數據指標之間的可比性。原始數據經過數據標準化處理后,各指標處于同一數量級,適合進行綜合對比評價。

特征歸一化的意義

  • 各特征之間的大小范圍一致,才能使用距離度量等算法
  • 加速梯度下降算法的收斂
  • 在SVM算法中,一致化的特征能加速尋找支持向量的時間
  • 不同的機器學習算法,能接受的輸入數值范圍不一樣

以下是兩種常用的歸一化方法:

  1. Min-Max標準化(Min-Max Normalization)線性歸一化

稱為離差標準化,是對原始數據的線性變換,使結果值映射到[0 1]之間。轉換函數如下:

x^*=\frac{x-min}{max-min}

該方法實現對原始數據的等比例縮放,其中x^*為歸一化后的數據,x為原始數據,max為樣本數據的最大值,min為樣本數據的最小值。

缺點:

  • 當有新數據加入時,可能導致max和min的變化,需要重新定義。
  • 數據不穩定,存在異常值和較多噪音

優點:

  • 當我們需要將特征值都歸一化為某個范圍[a,b]時,選MinMaxScaler
  1. 0均值標準化(Z-score standardization)

這種方法給予原始數據的均值(mean)和標準差(standard deviation)進行數據的標準化。將原始數據集歸一化為均值為0、方差1的數據集,轉化函數為:

x^*=\frac{x-\mu}{\delta}

其中μδ分別為原始數據集的均值和方法。該種歸一化方式要求原始數據的分布可以近似為高斯分布,否則歸一化的效果會變得很糟糕。

優點:

  • 適用于數據的最大值和最小值未知,或存在孤立點
  1. 比較

以上為兩種比較普通但是常用的歸一化技術,那這兩種歸一化的應用場景是怎么樣的呢?什么時候第一種方法比較好、什么時候第二種方法比較好呢?下面做一個簡要的分析概括:

  • 在分類、聚類算法中,需要使用距離來度量相似性的時候、或者使用PCA技術進行降維的時候,第二種方法(Z-score
    standardization)表現更好。
  • 在不涉及距離度量、協方差計算、數據不符合正太分布的時候,可以使用第一種方法或其他歸一化方法。比如圖像處理中,將RGB圖像轉換為灰度圖像后將其值限定在[0
    255]的范圍。

下面用Python來實現上述

舉例:假設有4個樣本及他們的特征如下
樣本 | 特征1 | 特征2
---|---|---
1 | 10001 | 2
2 | 16020 | 4
3 | 12008 | 6
4 | 13131 | 8

可見歸一化前,特征1和特征2的大小不是一個數量級。歸一化后,特征變為

樣本特征1特征2
100
210.33
30.730.67
40.811

min-max標準化(Min-Max Normalization)線性歸一化

sklearn.preprocessing.MinMaxScaler
sklearn中,sklearn.preprocessing.MinMaxScaler是一種用于特征歸一化的方法。使用示例如下

from sklearn.preprocessing import MinMaxScaler
x = [[10001,2],[16020,4],[12008,6],[13131,8]]
min_max_scaler = MinMaxScaler()
X_train_minmax = min_max_scaler.fit_transform(x)#歸一化后的結果
X_train_minmax
array([[ 0.        ,  0.        ],[ 1.        ,  0.33333333],[ 0.33344409,  0.66666667],[ 0.52001994,  1.        ]])

它默認將每種特征的值都歸一化到[0,1]之間,歸一化后的數值大小范圍是可調的(根據MinMaxScaler的參數feature_range調整)。下面代碼能將特征歸一化到[-1,1]之間。

min_max_scaler = MinMaxScaler(feature_range=(-1,1))
X_train_minmax = min_max_scaler.fit_transform(x)#歸一化后的結果
X_train_minmax
array([[-1.        , -1.        ],[ 1.        , -0.33333333],[ 0.46574339,  0.33333333],[ 0.6152873 ,  1.        ]])

MinMaxScaler的實現公式如下

X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))
X_scaled = X_std * (max - min) + min

這是向量化的表達方式,說明X是矩陣,其中

  • X_std:將X歸一化到[0,1]之間
  • X.min(axis=0)表示列最小值
  • max,min表示MinMaxScaler的參數feature_range參數。即最終結果的大小范圍

以下例說明計算過程(max=1,min=0)
樣本 | 特征1 | 特征2
---|---|---
1 | 10001 | 2
2 | 16020 | 4
3 | 12008 | 6
4 | 13131 | 8
X.max | 16020 | 8
X.min | 10001 | 2

歸一化的過程如下,假設歸一化后的矩陣為S

  • S11=(10001-10001)/(16020-10001)=0
  • S21=(16020-10001)/(16020-10001)=1
  • S31=(12008-10001)/(16020-10001)=0.333444
  • S41=(13131-10001)/(16020-10001)=0.52002
  • S12=(2-2)/(8-2)=0
  • S22=(4-2)/(8-2)=0.33
  • S32=(6-2)/(8-2)=0.6667
  • S42=(8-2)/(8-2)=1

可見,結果與章節“MinMaxScaler使用”中的計算結果一致。

StandardScaler標準化方法 零均值歸一化

sklearn.preprocessing.StandardScaler
sklearn.preprocessing.robust_scale
sklearn中,sklearn.preprocessing.StandardScaler是一種用于特征歸一化的方法。使用示例如下

from sklearn.preprocessing import StandardScaler
x = [[10001,2],[16020,4],[12008,6],[13131,8]]
X_scaler = StandardScaler()
X_train = X_scaler.fit_transform(x)
X_train
array([[-1.2817325 , -1.34164079],[ 1.48440157, -0.4472136 ],[-0.35938143,  0.4472136 ],[ 0.15671236,  1.34164079]])

歸一化后,矩陣每列的均值為0,標準差為1。注意,這里的標準差是指加了Delta Degrees of Freedom因子后的標準差,這與傳統的標準差計算公式有區別。(在numpy中,有std()函數用于計算標準差)

StandardScaler的歸一化方式是用每個特征減去列均值,再除以列標準差。
以下例說明計算過程,注意標準差是用np.std()計算的。

樣本特征1特征2
1100012
2160204
3120086
4131318
列均值127905
列標準差2175.962.236

歸一化的過程如下,假設歸一化后的矩陣為S

  • S11=(10001-12790)/2175.96=-1.28173
  • S21=(16020-12790)/2175.96=1.484
  • S31=(12008-12790)/2175.96=-0.35938
  • S41=(13131-12790)/2175.96=0.1567
  • S12=(2-5)/2.236=-1.342
  • S22=(4-5)/2.236=-0.447
  • S32=(6-5)/2.236=0.447
  • S42=(8-5)/2.236=1.3416

轉載于:https://www.cnblogs.com/cjr0707/p/9750611.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/249356.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/249356.shtml
英文地址,請注明出處:http://en.pswp.cn/news/249356.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

逆向工程生成的Mapper.xml以及*Example.java詳解

逆向工程生成的接口中的方法詳解 在我上一篇的博客中講解了如何使用Mybayis逆向工程針對單表自動生成mapper.java、mapper.xml、實體類,今天我們先針對mapper.java接口中的部分方法進行測試,以了解其作用。 先看表結構。。。 從下圖可以看到MBG根據數據表…

SpringBoot之靜態資源訪問

SpringBoot之靜態資源訪問 1.springboot訪問靜態資源的幾種方式 (1)在src/main/resources/目錄下創建 static文件夾 (2)在src/main/resources/目錄下創建 resources文件夾 (3)在src/main/resources/目錄下創建 public文件夾 (4)在src/main/resources/目錄下創建 META-INF/resou…

幾何

題目大意定義一個$S-$四面體表示六條邊由$S$根不同的木棍組成,定義一種染色方法合法當且僅當至少有$S$根木棍被染色且與每個頂點相鄰的三根木棍中至多有一根被染色,求有$N$個$S1,2...N$四面體,求至少染$K$個的方案數。 題解 單獨考慮$S1$四面…

VUE的element-ui的使用

我們在自己的網站當中有的時候會用到element-ui的組建 1.如何安裝element-ui的組件 在命令行工具當中輸入cnpm i element-ui -S, 等待安裝 2.如何在vue當中使用element-ui的組件 1.在main.js中引入element相關的js和cssimport Vue from vueimport ElementUI from element-u…

NodeJS+Express+Mysql+MongoDB之環境配置

node作為一款可以兼容前后端的js語言,在做持久層操作上和Java比較類似,下面就簡單介紹一下項目中的數據庫配置操作. 首選使用express框架自動創建一個測試項目,并在目錄下建立一個專門存放數據庫配置的配置文件,比如:db.js 代碼如下 /* * 數據庫配置文件 * Author: zth * D…

Python 私有變量的訪問和賦值

首先我們這里先描述下:  Python中,變量名類似__x__的,以雙下劃線開頭,并且以雙下劃線結尾的,是特殊變量,特殊變量是可以直接訪問的(比如 __doc__, __init__等),不是pri…

SpringBoot入門教程(一)詳解intellij idea搭建SpringBoot

最近公司有一個內部比賽(黑客馬拉松),報名參加了這么一個賽事,在準備參賽作品的同時,由于參賽服務器需要自己搭建且比賽產生的代碼不能外泄的,所以借著這個機會,本地先寫了個測試的demo,來把tomcat部署相關…

文藝平衡樹 Splay 學習筆記(1)

(這里是Splay基礎操作,reserve什么的會在下一篇里面講) 好久之前就說要學Splay了,結果茍到現在才學習。 可能是最近良心發現自己實在太弱了,聽數學又聽不懂只好多學點不要腦子的數據結構。 感覺Splay比Treap良心多了—…

JS使用XMLHttpRequest對象POST收發JSON格式數據

JavaScirpt中的XMLHttpRequest對象提供了對 HTTP 協議的完全訪問,使用該對象可以在不刷新頁面的情況與服務器交互數據。XMLHttpRequest是實現AJAX技術的關鍵對象,本站曾整理過一篇介紹該對象的文章: JS使用XMLHttpRequest對象與服務器進行數據…

ShopXO本地化部署安裝之centeros 安裝Apache2.4.6 + PHP7.0.33 + Mysql5.7.25環境

對于centerOS安裝PHP環境,目前網上的帖子都已經比較成熟,具體步驟大家可以自行搜索查看,但是在安裝過程中遇到的一些小細節,這些內容往往需要結合多個帖子才能找到答案,在這里簡單記錄一下。 細節一 如果使用的阿里云…

Spring Boot 擴展點應用之工廠加載機制

Spring 工廠加載機制,即 Spring Factories Loader,核心邏輯是使用 SpringFactoriesLoader 加載由用戶實現的類,并配置在約定好的META-INF/spring.factories 路徑下,該機制可以為框架上下文動態的增加擴展。 該機制類似于 Java SPI…

Vue.js使用-http請求

Vue.js使用-ajax使用 1.為什么要使用ajax 前面的例子,使用的是本地模擬數據,通過ajax請求服務器數據。 2.使用jquery的ajax庫示例 new Vue({el: #app,data: {searchQuery: ,columns: [{name: name, iskey: true}, {name: age},{name: sex, dataSource:…

跨域(Cross-Domain) AJAX for IE8 and IE9

1、有過這樣一段代碼,是ajax $.ajax({url: "http://127.0.0.1:9001",type: "POST",data: JSON.stringify({"reqMsg":"12345"}),dataType: json,timeout: 1000 * 30,success: function (response) {if(response.n6){dosomet…

移動WEB的頁面布局

隨著移動互聯網的日益普遍,現在移動版本的web應用也應用而生,那么在做移動web頁面布局的過程中,應該注意哪些要點呢?現把個人的一些學習經驗總結如下: 要點一、piexl 1px 2dp dp dpr dpi ppi 要點二、viewport io…

AnswerOpenCV(1001-1007)一周佳作欣賞

外國不過十一,所以利用十一假期,看看他們都在干什么。一、小白問題http://answers.opencv.org/question/199987/contour-single-blob-with-multiple-object/ Contour Single blob with multiple objectHi to everyone. Im developing an object shape id…

Mysql 開啟遠程連接

在日常的數據庫的使用過程,往往會因為連接權限的問題搞得我們焦頭爛額,今天我把我們在數據庫連接上的幾個誤區簡單做個記錄。內容如下: 誤區一:MYSQL密碼和數據庫密碼的區別 mysql密碼是我們在安裝mysql服務是設置的密碼&#xf…

基于jsp+servlet完成的用戶注冊

思考 : 需要創建實體類嗎? 需要創建表嗎 |----User 存在、不需要創建了!表同理、也不需要了 1.設計dao接口 package cn.javabs.usermanager.dao;import cn.javabs.usermanager.entity.User;/*** 用戶的dao接口的設計* author Mryang**/ public interfa…

vue resource then

https://www.cnblogs.com/chenhuichao/p/8308993.html

云開發創建云函數

安裝wx-server-sdk時候,終端報錯如下: 解決方法: 運行:npm cache clean --force即可 轉載于:https://www.cnblogs.com/moguzi12345/p/9758842.html

Java8新特性——函數式接口

目錄 一、介紹 二、示例 (一)Consumer 源碼解析 測試示例 (二)Comparator (三)Predicate 三、應用 四、總結 一、介紹 FunctionalInterface是一種信息注解類型,用于指明接口類型聲明…