專案工作流程:
標準化標籤,將標籤值統一轉換成range(標籤值個數-1)範圍內
簡單來說 labelencoder 是對不連續的數字或者文字進行編號
one-hot的基本思想:將離散型特徵的每一種取值都看成一種狀態,若你的這一特徵中有n個不相同的取值,那麼我們就可以將該特徵抽象成n種不同的狀態,one-hot編碼保證了每乙個取值只會使得一種狀態處於「啟用態」,也就是說這n種狀態中只有乙個狀態位值為1,其他狀態位都是0。
在pandas中
將擁有不同值的列轉化為0/1的one-hot編碼
watched = np.array(popsong_df[
'listen_count'])
watched[watched >=1]
=1popsong_df[
'watched'
]= watched
popsong_df.head(
10)
from sklearn.preprocessing import binarizer
# 設定閾值,大於0.9設定為1,小於0.9設定為0
bn = binarizer(threshold=
0.9)
pd_watched = bn.transform(
[popsong_df[
'listen_count']]
)[0]
popsong_df[
'pd_watched'
]= pd_watched
popsong_df.head(
11)
在支援向量機的公升維中會用到,一般很少用到
可以將連續值對映成離散值,比如年齡分類成幾個年齡段
分位數是按百分比將一批資料進行分割
quantile
qcut
當乙個資料分布處於偏度較大時,使用對數變換,把偏度降低,使資料更接近正態分佈
np.log
利用numpy和pandas.timestamp把時間轉化為時間戳。
ts_objs = np.array(
[pd.timestamp(item)
for item in np.array(df.time)])
df['ts_obj'
]= ts_objs
ts_objs
df['year'
]= df[
'ts_obj'].
(lambda d: d.year)
df['month'
]= df[
'ts_obj'].
(lambda d: d.month)
df['day'
]= df[
'ts_obj'].
(lambda d: d.day)
df['dayofweek'
]= df[
'ts_obj'].
(lambda d: d.dayofweek)
df['dayname'
]= df[
'ts_obj'].
(lambda d: d.weekday_name)
df['dayofyear'
]= df[
'ts_obj'].
(lambda d: d.dayofyear)
df['weekofyear'
]= df[
'ts_obj'].
(lambda d: d.weekofyear)
df['quarter'
]= df[
'ts_obj'].
(lambda d: d.quarter)
df[[
'time'
,'year'
,'month'
,'day'
,'quarter'
,'dayofweek'
,'dayname'
,'dayofyear'
,'weekofyear'
]]
在做特徵工程時要盡可能多的提取特徵,再根據實際去剔除。
時、分、秒,可以精確好毫秒,一天(月、年)還可以通過cut和bin去切分成早中晚等部分。
英文分詞包:nltk包:stopword
中文包:jieba
特徵預處理,特徵選擇
統一量綱 特徵規格不一樣,不能放在一起比較。主要看模型,比如樹模型就不太需要,而計算距離之類的模型,或者神經網路就需要 主要有標準化,區間放縮,歸一化。標準化 標準化,均值為0,方差為1 from sklearn.preprocessing import standardscaler 標準化,返回值...
特徵預處理
一 定義 通過特定的統計方法 數學方法 將資料轉換成演算法要求的資料。二 方法 一 數值型資料 標準縮放 1 歸一化 2 標準化 3 缺失值 二 類別型資料 one hot編碼 三 時間型別 時間的切分 三 sklearn特徵處理api sklearn.preprocessing 四 歸一化 一 原...
特徵工程之特徵預處理
概念 特徵預處理是什麼呢?特徵預處理是通過統計方法 數學方法 將資料轉換成演算法要求的資料,所以特徵預處理也叫做資料預處理。下面是幾種資料預處理的方法 1 數值型資料 標準縮放 1 歸一化2 標準化 2 類別型資料 one hot編碼 3 時間類別 時間的劃分 下面介紹歸一化和標準化歸一化 歸一化 ...