博主簡介:風雪夜歸子(英文名: allen),機器學習演算法攻城獅,喜愛鑽研machine learning的黑科技,對deep learning和artificial intelligence充滿興趣,經常關注kaggle資料探勘競賽平台,對資料、machine learning和artificial intelligence有興趣的各位童鞋可以一起**哦,個人csdn部落格:
在這個主題中,我們將用另一種方式來演示分類變數。有些時候只有一兩個分類特徵是重要的,這時就要避免多餘的維度,如果有多個分類變數就有可能會出現這些多餘的維度。
處理分類變數還有另一種方法,不需要通過onehotencoder
,我們可以用labelbinarizer
。這是乙個閾值與分類變數組合的方法。演示其用法之前,讓我們載入iris
資料集:
in [1]:
from
sklearn
import
datasetsasd
iris=d
.load_iris
()target
=iris
.target
匯入labelbinarizer()
建立乙個物件:
in [2]:
from
sklearn.preprocessing
import
labelbinarizer
label_binarizer
=labelbinarizer
()
現在,將因變數的值轉換成乙個新的特徵向量:
in [3]:
new_target
=label_binarizer
.fit_transform
(target
)
讓我們看看new_target
和label_binarizer
物件的結果:
in [4]:
new_target
.shape
(150, 3)
in [5]:
new_target[:5
]
array([[1, 0, 0],[1, 0, 0],
[1, 0, 0],
[1, 0, 0],
[1, 0, 0]])
in [6]:
new_target[-
5:]
array([[0, 0, 1],[0, 0, 1],
[0, 0, 1],
[0, 0, 1],
[0, 0, 1]])
in [9]:
label_binarizer
.classes_
array([0, 1, 2])
iris
的因變數基數為3
,就是說有三種值。當labelbinarizer
將n×
1 n×1
向量轉換成n×
c n×c
矩陣時,
c c就是n
×1n×1
向量的基數。需要注意的是,當label_binarizer
處理因變數之後,再轉換基數以外的值都是[0,0,0]
:
in [15]:
label_binarizer
.transform([4
])
array([[0, 0, 0]])
0和1並不一定都是表示因變數中的陽性和陰性例項。例如,如果我們需要用1000
表示陽性值,用-1000
表示陰性值,我們可以用label_binarizer
處理:
in [22]:
label_binarizer
=labelbinarizer
(neg_label
=-1000
,pos_label
=1000
)label_binarizer
.fit_transform
(target
)[:5
]
array([[ 1000, -1000, -1000],[ 1000, -1000, -1000],
[ 1000, -1000, -1000],
[ 1000, -1000, -1000],
[ 1000, -1000, -1000]])
陽性和陰性值的唯一限制是,它們必須為整數。
特徵預處理
一 定義 通過特定的統計方法 數學方法 將資料轉換成演算法要求的資料。二 方法 一 數值型資料 標準縮放 1 歸一化 2 標準化 3 缺失值 二 類別型資料 one hot編碼 三 時間型別 時間的切分 三 sklearn特徵處理api sklearn.preprocessing 四 歸一化 一 原...
特徵預處理,特徵選擇
統一量綱 特徵規格不一樣,不能放在一起比較。主要看模型,比如樹模型就不太需要,而計算距離之類的模型,或者神經網路就需要 主要有標準化,區間放縮,歸一化。標準化 標準化,均值為0,方差為1 from sklearn.preprocessing import standardscaler 標準化,返回值...
特徵工程與資料預處理
通常而言,特徵選擇是指選擇獲得相應模型和演算法最好效能的特徵集。資料和特徵決定了機器學習的上限,而模型和演算法只是逼近這個上限而已。從這個概念可以看出,特徵工程其實是乙個如何展示和表現資料的問題,在實際工作中需要把資料以一種 良好 的方式展示出來,使得能夠使用各種各樣的機器學習模型來得到更好的效果。...