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_)