機器學習學習筆記(二)之特徵提取

2021-10-24 09:43:30 字數 4365 閱讀 8678

一、什麼是特徵工程

二、特徵工程的位置與資料處理的比較

三、特徵抽取/特徵提取

1、將任意資料(如文字或影象)轉換為可用於機器學習的數字特徵

2、特徵提取api

3、字典特徵提取

作用:對字典資料進行特徵值化

1)應用

from sklearn.feature_extraction import dictvectorizer

defdict_demo()

:'''

字典特徵提取

:return:

'''data =[,

,]# 1、例項化乙個轉換器類

transfer = dictvectorizer(sparse =

false

)# 2、呼叫fit_transform()

data_new = transfer.fit_transform(data)

print

('data_new:\n'

,data_new)

print

('特徵名字:\n'

,transfer.get_feature_names())

return

none

if __name__ ==

'__main__'

: dict_demo(

)#預設sparse = true,返回sparse矩陣

#當sparse = false時,返回二維陣列

預設sparse = true,返回sparse矩陣,

稀疏矩陣將非0值按位置表示出來,好處:節省記憶體——提高載入效率

當sparse = false時,返回二維陣列

2)總結

3)應用場景

本身拿到的資料就是字典型別

4、文字特徵提取

作用:對文字資料進行特徵值化

sklearn.feature_extraction.text.tfidfvectorizer

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

公式:重要程度=tf(詞頻,給定詞語在該檔案**現的頻率) * idf(逆向文件頻率,以10位底 總檔案數/包含該詞語檔案數 的對數)

tfidfvectorizer.fit_transform(x) x:文字或者包含文字字串的可迭代物件 返回值:返回sparse矩陣

tfidfvectorizer.inverse_transform(x) x:array陣列或者sparse矩陣 返回值:轉換之前的資料格

tfidfvectorizer.get_feature_names() 返回值:單詞列表

1.1)應用—countvectorizer

from sklearn.feature_extraction.text import countvectorizer

defcount_demo()

:'''

文字特徵抽取:countvectorizer

:return:

'''data =

['life is short,i like like python'

,'life is too long,i dislike python'

]# 1、例項化乙個轉換器類

transfer = countvectorizer(stop_words =

['is'

,'too'])

#stop_words:停用詞,不顯示了

# 2、呼叫fit_transform

data_new = transfer.fit_transform(data)

print

('data_new:\n'

, data_new)

print

('data_new:\n'

, data_new.toarray())

# 返回二維陣列結果

print

('特徵名字:\n'

1.2)應用—jieba + countvectorizer 中文文字自動分詞(可手動加空格)

from sklearn.feature_extraction.text import countvectorizer

import jieba # 結巴分詞

defcut_word

(text)

:'''

進行中文分詞:'我愛北京天安門'->'我 愛 北京 天安門'

:param text:

:return:

'''text =

"".join(

list

(jieba.cut(text)))

# 轉換器轉換列表轉換字串

return text

defcount_chinese_demo()

:'''

中文文字特徵抽取,自動分詞

:return:

'''# 1、將中文文字進行分詞

data =

['一種還是一種今天很殘酷,明天更殘酷,後天很美好,但絕對大部分是死在明天晚上,所以每個人不要放棄今天。'

,'我們看到的從很遠星系來的光是在幾百萬年之前發出的,這樣當我們看到宇宙時,我們是在看它的過去。'

,'如果只有用一種方式了解某樣事物,你就不會真正的了解它。了解事物真正含義的秘密取決於如何將其與我們所了解的事物相聯絡。'

] data_new=

for sent in data:

)#print(data_new)

# 2、例項化乙個轉換器類

transfer = countvectorizer(

)# 3、呼叫fit_transform

data_final = transfer.fit_transform(data_new)

print

('data_final:\n'

, data_final)

print

('data_final:\n'

, data_final.toarray())

print

('特徵名字:\n'

, transfer.get_feature_names())

return

none

if __name__ ==

'__main__'

: count_chinese_demo(

)

from sklearn.feature_extraction.text import tfidfvectorizer

deftfidf_demo()

:'''

用tf-idf的方法進行文字特徵的提取

:return:

'''data =

['life is short,i like like python'

,'life is too long,i dislike python'

]# 1、例項化乙個轉換器類

transfer = tfidfvectorizer(

)# 2、呼叫fit_transform

data_new = transfer.fit_transform(data)

print

('data_new:\n'

, data_new)

print

('data_new:\n'

, data_new.toarray())

print

('特徵名字:\n'

, transfer.get_feature_names())

return

none

if __name__ ==

'__main__'

: tfidf_demo(

)

機器學習 特徵提取(二)

文字資料進行處理時,有些文字不是結構化儲存的,處理這樣的資料,比較常用的文字特徵表示方法為詞袋法,不考慮詞語出現的順序,只是將訓練文字中每個出現過的詞彙單獨視為一列特徵。而特徵數值的常見計算方式有兩種 countvectorizer和tfidvectorizer。對於每一條訓練文字,countvec...

特徵提取 機器學習

特徵提取簡介 sift原理 sift原理 sift原理 1.k近鄰法,簡單來說就是哪個點離得近就把例項點歸到哪一類中。特殊情況是最近鄰演算法 1近鄰演算法。演算法主要包括演算法的模型,距離度量 k值的選擇和演算法的具體實現。其中演算法的實現主要有兩種形式 線性掃瞄法和構建資料索引。改善演算法最好的當...

機器學習 特徵提取

from sklearn.feature extraction import dictvectorizer import numpy as np 定義一組字典列表,用來表示多個資料樣本 d1 例項化 dict dictvectorizer data dict fit transform d1 轉化後...