一,概論
1.什么是機器學習
定義:
機器學習是從數據中自動分析獲得模型,并利用模型對未知數據進行預測。
其實就是通過問題和數據,發現規律,并進行預測,與人腦相似。目的就是從歷史數據當中獲得規律,以及歷史數據是什么樣的格式
數據集由特征值和目標值構成,每一行數據可以稱為樣本,有些數據可以沒有目標值。
例:
監督學習:
? ? ?目標值——類別——演變成分類問題
? ? ?目標值——連續型的數據——演變成回歸問題
目標值——無——無監督學習
注:無監督學習的定義:輸入數據是由輸入特征值所組成
機器學習開發流程:
1.獲取數據
2.數據處理
3.特征工程
4.機器學習算法訓練到模型
5.模型評估
6.應用
2.數據集
可用數據集
學習階段可用的數據集:
sklearn
kaggle
ucI
2.1.2 sklearn數據集
(一) scikit-learn數據集API介紹
(1)sklearn.datasets
加載獲取流行數據集
(2)datasets.load_*()
獲取小規模數據集,數據包含在datasets里?
(3)datasets.fetch_*(data_home=None)
獲取大規模數據集,需要從網絡上下載,函數的第一個參數是 data_home,表示數據集下載的目錄,默認是~/scikit_learn_data/
(二)sklearn小數據集
sklearn.datasets.load_iris()3 3sklearn大數據集
sklearn.datasets.fetch_20newsgroups(data home=None,subset='train')
sklearn數據集返回值介紹
load和fetch返回的數據類型datasets.base.Bunch(字典格式)
(1)?data:特征數據數組,是[n_samples* n_features]的二維 numpy.ndarray 數組
(2) target:標簽數組,是n_samples的一維numpy.ndarray數組。 DESCR:數據描述
(3)feature_names:特征名,新聞數據,手寫數字、回歸數據集沒有。 target_names:標簽名
datasets.base.Bunch(繼承自字典)
dict["key"l = values bunch.key = values
(三)機器學習一般的數據集會劃分為兩個部分:
訓練數據:用于訓練,構建模型
測試數據:在模型檢驗時使用,用于評估模型是否有效
劃分比例:
訓練集:70%80%75%
測試集:30%20% 30%
(四)數據集劃分:
sklearn.model_selection.train_test_split(arrays, "options)
x數據集的特征值
y數據集的標簽值
test_size測試集的大小,一般為float
random_state 隨機數種子,不同的種子會造成不同的隨機采樣結果。相同
的種子采樣結果相同。
return訓練集特征值,測試集特征值,訓練集目標值,測試集目標值
2.2.2 什么是特征工程
特征工程是使用專業背景知識和技巧處理數據,使得特征能在機器學習算法上發揮更好的作用的過程。
意義:會直接影響機器學習的效果。
2.2.3特征工程的位置與數據處理的比較
pandas:一個數據讀取非常方便以及基本的處理格式的工具?
sklearn:對于特征的處理提供了強大的接口
特征工程包含內容:
特征抽取 :
機器學習算法-統計方法
文本類型 -> 數值類型 -> 數值
2.3.1特征提取
sklearn.feature extraction
2.3. 2 字典特征提取->類別 ->one-hot 編碼
sklearn.feature_extraction.DictVectorizer(sparse= True,…)
vector 數學:向量。? ? ? ?物理:矢量
? ??矩陣 matrix二維數組
? ? 向量 vector 一維數組
父類:轉換器類
返回sparse矩陣
? ? ?spare稀疏:將非0值 表示出來:節省內存—提高加載效率
應用場景:
(1)pclass,sex數據及當中類別特征比較多
? ? ?1 將數據集的特征->字典類型
? ? ? 2 DictVectorizer轉換
(2)本身拿到的數據就是字典類型
2.3.3? 文本特征提取
單詞作為特征?
特征:特征詞
方法1:CountVectorizer
? ? ? ? ? ?統計每個樣本特征出現的個數
? ? ? ? ? ?stop_words停用的
? ? ? ? ? ?停用詞表
關鍵詞:在某一個類別的文章中,出現的次數很多,但是在其他類別的文章當中出現很少
作用:對文本數據進行特征值化
(1)sklearn.feature_extraction.text.CountVectorizer(stop_words=0)? ? 返回詞頻矩陣
(2)CountVectorizer.fit_transform(X) X:文本或者包含文本字符串的可迭代對象返回值:返回sparse矩陣
(3)CountVectorizer.inverse_transform(X) X:array數組或者sparse矩陣返回值:轉換之前數據格
(4)CountVectorizer.get_feature_names()返回值:單詞列表
(5)sklearn.feature_extraction.text.TfidfVectorizer
該如何處理某個詞或短語在多篇文章中出現的次數高這種情況
方法二:
TfidfVectorizer
Tf-idf文本特征提取
TF-IDF的主要思想是:如果某個詞或短語在一篇文章中出現的概率高,并且在其他文章中很少出現,則認為此詞或者短語具有很好的類別區分能力,適合用來分類。
TF-IDF作用:用以評估一字詞對于一個文件集或一個語料庫中的其中一份文件的重要程度。
公式:詞頻(term frequency,tf)指的是某一個給定的詞語在該文件中出現的頻率
逆向文檔頻率(inverse document frequency,idf)是一個詞語普遍重要性的度量。某一特定詞語的idf,可以由總文件數目除以包含該詞語之文件的數目,再將得到的商取以10為底的對數得到
tfidf?,j= tfi,jx idf?
最終得出結果可以理解為重要程度。
特征預處理 :
2.4.1定義:通過一些轉換函數將特征數據轉換成更加適合算法模型的特征數據過程
(1)包含內容
數值型數據的無量綱化:
歸一化
標準化
特征預處理API:
sklearn.preprocessing
為什么我們要進行歸一化/標準化?
特征的單位或者大小相差較大,或者某特征的方差相比其他的特征要大出幾個數量級,容易影響(支配)目標結果,使得一些算法無法學習到其它的特征
2.4.2歸一化
定義:通過對原始數據進行變換把數據映射到(默認為[0,1])之間
公式:
歸一化API:
sklearn.preprocessing.MinMaxScaler (feature_range=(0,1)...)
MinMaxScalar.fit_transform(X)
X:numpy array格式的數據[n_samples,n_features]
返回值:轉換后的形狀相同的array
2.4.3標準化:
1.定義:對原始數據進行變換把數據變換到均值為0,標準差為1范圍內
2.公式:
即標準差:集中程度3.標準化API
sklearn.preprocessing.StandardScaler( )
? ? 處理之后,對每列來說,所有數據都聚集在均值為0附近,標準差為1。? ? ? ? ? ? StandardScaler.fit_transform(X)
? ? X:numpy array格式的數據[n_samples,n_features]
返回值:轉換后的形狀相同的array
4.標準化應用場景:
在已有樣本足夠多的情況下,適合現代嘈雜的大數據場景。
總結:
對于歸一化來說:如果出現異常點,影響了最大值和最小值,那么結果顯然會發生改變。
對于標準化來說:如果出現異常點,由于具有一定數據量,少量的異常點對于平均值的影響并不大,從而方差改變較小。
特征降維:
2.5降維->降低緯度
降維是指在某些限定條件下,降低隨機變量(特征)個數,得到一組“不相關”主變量的過程。
2.5.1: ndarray
維數:嵌套的層數
0維? 標量
1維? 向量
2維? 矩陣
3維...n維
處理對象:二維數組
此處的降維:降低隨機變量(特征)個數。
效果:特征與特征之間互不相關
2.5.2 特征選擇
1定義:數據中包括冗余或相關變量(或稱特征屬性指標等),旨在從原有特征中找出主要特征。
2方法
Filter(過濾式):主要探究特征本身特點、特征與特征和目標值之間關聯
方差選擇法:低方差特征過濾
相關系數:特征與特征之間的相關程度
取值范圍為[-1,+1]
如皮爾遜相關系數
Embedded(嵌入式):算法自動選擇特征(特征與目標值之間的關聯)
決策樹:信息熵、信息增益
正則化:L1、L2
深度學習:卷積等
3模塊:
sklearn.feature_selection
4過濾式
4.1低方差特征過濾
4.1.1 API
sklearn.feature_selection.VarianceThreshoid(threshold=0.0)
? ? ? 刪除所有低方差特征
? ? ? Variance.fit_transform(X)
? ? ? ? ? ? ? X:numpy array格式的數據[n_samples,n_features]
? ? ? ? ? ? ? 返回值:訓練集差異低于threshold的特征將被刪除。默認值是保留所有非。零方差特征,即刪除所有樣本中具有相同值的特征。
4.2相關系數
4.2.3相關系數特點:
相關系數的值介于-1與+1之間,即-1≤r≤+1。其性質如下:
當r>0時,表示兩變量正相關,r<0時,兩變量為負相關
當|r|=1時,表示兩變量為完全相關,當r=0時,表示兩變量間無相關關系
當0<|r|<1時,表示兩變量存在一定程度的相關。且|r|越接近1,兩變量間線性關系越密切;|r越接近于0,表示兩變量的線性相關越弱
一般可按三級劃分:|r|<0.4為低度相關;0.4≤|r|<0.7為顯著性相關;0.7≤|r|<1為高度線性相關
這個符號:|r|為r的絕對值,|-5|=5
4.2.4 API
from scipy.stats import pearsonr
x:(N,) array_like
?y :(N,) array_like Returns: (Pearson's correlation coefficient, p- value)
?
? ? ? ? ??