天天看點

機器學習sklearn —資料類型和文本特征抽取sklearn與特征工程

sklearn與特征工程

資料的來源與類型

來源

大部分資料來源于已有的資料庫、與爬蟲工程師的采集
           

資料的類型

按資料分類

标稱型:标稱型目标變量的結果隻在有限目标中取值(如真與假)主要用于分類
數值型:數值型目标變量則可以從無限的數值集合中取值 (如0.100 ,42.001)主要用于回歸分析
           

按資料的分布分類

離散型:離散變量是指其數值隻能用自然或整數機關計算的則為離散變量 (班級人數)
連續型:指在指定區間内可以是任意一個數值(票房資料)
           

資料的特征抽取

現實世界中多數特征都不是連續變量,比如分類、文字、圖像等,為了對非連續變量做特征表述,需要對這些特征做數學化表述,是以就用到了特征提取. sklearn.feature_extraction提供了特征提取的很多方法

分類特征變量提取

将城市和環境作為字典資料,來進行特征的提取

sklearn.feature_extraction.DictVectorizer(sparse = True)

将映射清單轉換為Numpy數組或scipy.sparse矩陣

sparse 是否轉換為scipy.sparse矩陣表示,預設開啟

方法

fit_transform(X,y)  應用并轉化映射清單X,y為目标類型
inverse_transform(X[, dict_type]) 将Numpy數組或scipy.sparse矩陣轉換為映射清單
           
from sklearn.feature_extraction import DictVectorizer
onehot = DictVectorizer() # 如果結果不用toarray,請開啟sparse=False
instances = [{'city': '北京','temperature':},{'city': '上海','temperature':}, {'city': '深圳','temperature':}]
X = onehot.fit_transform(instances).toarray()
print(onehot.inverse_transform(X))
           

文本特征提取(限于英文使用)

文本的特征提取應用于很多方面,比如說文檔分類、垃圾郵件分類和新聞分類。那麼文本分類是通過詞是否存在、以及詞的機率(重要性)來表示。

1文檔中詞的出現(1出現 0未出現)

sklearn.feature_extraction.text.CountVectorizer()

将文本文檔的集合轉換為計數矩陣(scipy.sparse matrices)

方法

fit_transform(raw_documents,y) 學習詞彙詞典并傳回詞彙文檔矩陣

from sklearn.feature_extraction.text import CountVectorizer
content = ["life is short,i like python","life is too long,i dislike python"]
vectorizer = CountVectorizer()
print(vectorizer.fit_transform(content).toarray())
           
需要toarray()方法轉變為numpy的數組形式

2TF-IDF表示詞的重要性

TfidfVectorizer會根據指定的公式将文檔中的詞轉換為機率表示

方法

fit_transform(raw_documents,y) 學習詞彙和idf,傳回術國文檔矩陣。

from sklearn.feature_extraction.text import TfidfVectorizer
content = ["life is short,i like python","life is too long,i dislike python"]
vectorizer = TfidfVectorizer(stop_words='english')
print(vectorizer.fit_transform(content).toarray())
print(vectorizer.vocabulary_)
           

繼續閱讀