機器學習之特徵工程

2021-10-14 01:41:42 字數 4386 閱讀 5355

特徵工程是將原始資料轉化為更好代表**模型的潛在問題的特徵的過程,從而提高了對位置資料的**準確性。其包括特徵構建、特徵提取、特徵選擇三部分。資料和特徵決定了機器學習的上限,而模型和演算法只是逼近這個上限而已,成功的結果往往源自最開始對資料的處理。

tf: term frequency,詞的頻率,即出現的次數

idf: inverse document frequency,逆文件頻率,log(總文件數量/該詞出現的文件數量)

作用:用以評估一字詞對於乙個檔案集或乙個語料庫中的其中乙份檔案的重要程度

from sklearn.feature_extraction import dictvectorizer

from sklearn.feature_extraction.text import countvectorizer

from sklearn.feature_extraction.text import tfidfvectorizer

from sklearn.preprocessing import minmaxscaler, standardscaler

from sklearn.impute import ******imputer

import numpy as np

import jieba

from sklearn.feature_selection import variancethreshold

from sklearn.decomposition import

pcadef dictvec()

: dict =

dictvectorizer

(sparse=false)

//是否輸出的是稀疏矩陣

# dict =

dictvectorizer()

data = dict.

fit_transform([

,,])

lb = dict.

get_feature_names()

hy = dict.

inverse_transform

(data)

print

(data)

print

(lb)

print

(hy)

print

(dict.

transform([

]))return

def countvec()

: count =

countvectorizer()

data = count.

fit_transform([

'life is a fking movie'

,'人生如戲吶弟弟',]

)//單個字母/中文不統計,中文需先分詞再特徵提取

print

(count.

get_feature_names()

)print

(data.

toarray()

)return

def hanzivec()

: c1, c2, c3 =

cutword()

print

(c1, c2, c3)

cv =

countvectorizer()

data = cv.

fit_transform

([c1, c2, c3]

)print

(cv.

get_feature_names()

)print

(data.

toarray()

)return

def cutword()

: con1 = jieba.

cut(

"寫作活動大致可分為「採集—構思—表述」三個階段"

) con2 = jieba.

cut(

"學生在教師指導下按照特定要求用書面語言創造文字"

) con3 = jieba.

cut(

"寫作是人類精神生活與實踐活動的重要組成部分"

) content1 =

list

(con1)

content2 =

list

(con2)

content3 =

list

(con3)

c1 =

' '.

join

(content1)

c2 =

' '.

join

(content2)

c3 =

' '.

join

(content3)

return c1, c2, c3

def tfidfvec()

: c1, c2, c3 =

cutword()

print

(c1, c2, c3)

tf =

tfidfvectorizer()

data = tf.

fit_transform

([c1, c2, c3]

)print

(tf.

get_feature_names()

)print

(data.

toarray()

)return

def mm()

: mm =

minmaxscaler

(feature_range=(2

,3))

//定義歸一化範圍

data = mm.

fit_transform([

[90,20

,10,40

],[40

,50,90

,60],

[10,30

,40,70

]])print

(data)

return

def stand()

: std =

standardscaler()

data = std.

fit_transform([

[1,-

1,3]

,[2,

5,-4

],[3

,4,2

]])print

(data)

return

def spim()

: spim =

******imputer

(missing_values=np.nan, strategy=

'mean'

)//也可以用字元nan等形式

data = spim.

fit_transform([

[1,2

],[np.nan,3]

,[7, np.nan]])

print

(data)

return

def var()

:// 特徵選擇刪除低方差

var=

variancethreshold

(threshold=1)

data =

var.

fit_transform([

[0,2

,3,1

],[4

,2,1

,2],

[1,0

,0,1

]])print

(data)

return

def pca()

: pca =

pca(n_components=

0.9)

data = pca.

fit_transform([

[0,2

,3,1

],[4

,2,1

,2],

[1,0

,0,1

]])print

(data)

return

# dictvec()

# countvec()

# hanzivec()

# tfidfvec()

# mm()

# stand()

# spim()

# var()

# pca

()

注:

1、歸一化比標準化更容易受異常值影響;

2、現在imputer已經被******imputer代替

3、numpy陣列中可以使用np.nan或np.nan來代替缺失值,屬於float型別

機器學習之特徵工程

在工業界一直流行著一句話,資料的質量決定了模型的上線了,而特徵工程與模型的選擇只是盡可能的去逼近這個上線,當我們在資料無法改變的情況,特徵工程的優化便顯得尤為重要。我們輸入模型中,模型只認識資料,並不知道某一列所代表的含義,例如樹模型,它只會按照一定的規則去不停的分支,並不知道分支所代表的含義,而特...

機器學習之特徵工程

一 特徵抽象 特徵抽象是指將資料來源抽象演算法可以理解的資料,我們期望的資料是一組可以表達資料某種特性的數字。下面對幾種資料型別抽象舉例 1 時間戳 以某一天為基準值,採用演算法算出某數值,其他的採用和該基準值的差距。2 二值類問題 文字或其他描述的二值問題,可以量化為0和1表示。3 多值有序問題 ...

機器學習之特徵工程簡介

特徵工程非常重要。對於模型的效果起大了極大的作用。實際開發中,大部分的時間都花費在特徵工程上面。特徵工程最重要的是對具體業務的深刻理解。減少資料儲存和輸入的代價,降低資料的維度 發現更多深入的特徵,提公升準確率。特徵工程和降維,是處理高維度資料的兩大主要手段。特徵變換 變 特徵提取 組 資料格式化 ...