機器學習是從資料中自動分析獲得規律(模型),並利用規律對未知資料進行**。
(注:離散型是區間內不可分,連續型是區間內可分)
結構:特徵值+目標值
特徵工程是將原始資料轉換為更好地代表**模型的潛在問題的特徵的過程,從而提高了對未知資料的模型準確性。直接影響模型的**結果。
語法:dictvectorizer(sparse=true,…)
from sklearn.feature_extraction import dictvectorizer
def dictvec():
"""字典資料抽取
:return: none
"""# 例項化
dict = dictvectorizer(sparse=false)
# 呼叫fit_transform
data = dict.fit_transform([, , ])
print(data)
print(dict.get_feature_names())
print(dict.inverse_transform(data))
return none
作用:對文字資料進行特徵值化
語法:countvectorizer(max_df=1.0,min_df=1,…)返回詞頻矩陣
tf-idf作用:用以評估一字詞對於乙個檔案集或乙個語料庫中的其中乙份檔案的重要程度。
語法:tfidfvectorizer(stop_words=none,…)返回詞的權重矩陣
from sklearn.feature_extraction.text import countvectorizer,tfidfvectorizer #出現次數,頻率
import jieba
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 hanzivec():
"""中文特徵值化
:return: none
"""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 none
def tfidfvec():
"""中文特徵值化,可統計詞的頻率
:return: none
"""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 none
通過對原始資料進行變換把資料對映到(預設為[0,1])之間
公式:
(注:作用於每一列,max為一列的最大值,min為一列的最小值,那麼x』』 為最終結果,mx,mi分別為指定區間值預設mx為1,mi為0。)
語法:minmaxscalar(feature_range=(0,1)…)每個特徵縮放到給定範圍(預設[0,1])
歸一化總結:注意在特定場景下最大值最小值是變化的,另外,最大值與最小值非常容易受異常點影響,所以這種方法魯棒性較差,只適合傳統精確小資料場景。如果出現異常點,影響了最大值和最小值,那麼結果顯然會發生改變。
語法:standardscaler(…)處理之後每列來說所有資料都聚集在均值0附近方差為1
標準化總結:在已有樣本足夠多的情況下比較穩定,適合現代嘈雜大資料場景。如果出現異常點,由於具有一定資料量,少量的異常點對於平均值的影響並不大,從而方差改變較小。
語法:imputer(missing_values='nan', strategy='mean', axis=0)完成缺失值插補
from sklearn.preprocessing import minmaxscaler, standardscaler, imputer
import numpy as np
def mm():
"""歸一化處理
:return: none
"""mm = minmaxscaler(feature_range=(0, 1)) #歸一到(0,1)
data = mm.fit_transform([[90,2,10,40],[60,4,15,45],[75,3,13,46]])
print(data)
return none
def stand():
"""標準化縮放
:return:
"""std = standardscaler()
data = std.fit_transform([[ 1., -1., 3.],[ 2., 4., 2.],[ 4., 6., -1.]])
print(data)
return none
def im():
"""缺失值處理
:return:none
"""# nan, nan
im = imputer(missing_values='nan', strategy='mean', axis=0)
data = im.fit_transform([[1, 2], [np.nan, 3], [7, 6]])
print(data)
return none
1、原因:
雜訊:部分特徵對**結果有負影響
2、特徵選擇是什麼
特徵選擇就是單純地從提取到的所有特徵中選擇部分特徵作為訓練集特徵, 特徵在選擇前和選擇後可以改變值、也不改變值,但是選擇後的特徵維數肯 定比選擇前小,畢竟我們只選擇了其中的一部分特徵。
3、主要方法(三大**)
4、filter(過濾式):variancethreshold
語法:variancethreshold(threshold = 0.0) 刪除所有低方差特徵
from sklearn.feature_selection import variancethreshold
def var():
"""特徵選擇-刪除低方差的特徵
:return: none
"""var = variancethreshold(threshold=0.0)
data = var.fit_transform([[0, 2, 0, 3], [0, 1, 4, 3], [0, 1, 1, 3]])
print(data)
return none
if __name__ == "__main__":
var()
本質:pca是一種分析、簡化資料集的技術
目的:是資料維數壓縮,盡可能降低原資料的維數(複雜度),損失少量資訊。
作用:可以削減回歸分析或者聚類分析中特徵的數量
語法:pca(n_components=none) 將資料分解為較低維數空間
from sklearn.decomposition import pca
def pca():
"""主成分分析進行特徵降維
:return: none
"""pca = pca(n_components=0.9)
data = pca.fit_transform([[2,8,4,5],[6,3,0,8],[5,4,9,1]])
print(data)
return none
if __name__ == "__main__":
pca()
監督學習:輸入資料有特徵有標籤,即有標準答案。輸入資料是由輸入特徵值和目標值所組成。函式的輸出可以是乙個連續的值 (稱為回歸),或是輸出是有限個離散值(稱作分類)。
無監督學習:輸入資料有特徵無標籤,即無標準答案。可以由輸入資料中學到或建立乙個模型,並依此模式推測新的結果。輸入資料是由輸入特徵值所組成。
機器學習 特徵工程概述
資料和特徵決定了機器學習的上限,而模型和演算法只是逼近這個上限而已。通俗的說,就是盡可能的從原始資料中獲取更多資訊,從而使得 模型達到最佳。簡而言之,特徵工程是乙個把原始資料變成特徵的過程,這些特徵可以很好的描述資料,並且利用它們建立的模型在未知資料上表現效能可以達到最優。實驗結果取決於獲取的資料 ...
機器學習 特徵工程
老師有多年的網際網路從業經驗,所以講解的過程中結合了很多任務業界的應用,更加的深入淺出。資料採集 資料採集前需要明確採集哪些資料,一般的思路為 哪些資料對最後的結果 有幫助?資料我們能夠採集到嗎?線上實時計算的時候獲取是否快捷?舉例1 我現在要 使用者對商品的下單情況,或者我要給使用者做商品推薦,那...
機器學習 特徵工程
資料和特徵決定了機器學習的上限,而模型和演算法只是逼近這個上限而已。通俗的說,就是盡可能的從原始資料中獲取更多資訊,從而使得 模型達到最佳。簡而言之,特徵工程是乙個把原始資料變成特徵的過程,這些特徵可以很好的描述資料,並且利用它們建立的模型在未知資料上表現效能可以達到最優。實驗結果取決於獲取的資料 ...