貝葉斯模型、SVM模型、K均值聚類、DBSCAN聚類和GDBT模型
-
-
SVM模型
-
K均值(Kmeans)聚類
-
概念
通過已知類別的訓練數據集,計算樣本的先驗概率,然后利⽤⻉葉斯
概率公式測算未知類別樣本屬於某個類別的后驗概率
最終以最⼤后驗概率所對應的類別作為樣本的預測值
高斯貝葉斯分類器
適用於自變量為連續的數值類型的情況
eg:假設某⾦融公司是否願意給客戶放貸會優先考慮兩個因素,分別是年齡和收⼊。
多項式貝葉斯分類器
適用於自變量為離散型類型的情況(非數字類型)
eg:假設影響⼥孩是否參加相親活動的重要因素有三個,分別 是男孩的職業、受教育⽔平和收⼊狀況;
伯努利貝葉斯分類器
適用於自變量為二元值的情況(可以自帶的 也可以是后期處理“因子化”)
eg:假設對10條評論數據做分詞處理后,得到如表 12-5所示的⽂檔詞條矩陣,矩陣中含有5個詞語和1 個表示情感的結果
函數:
⾼斯⻉葉斯函數
bayes.GaussianNB()
多項式⻉葉斯分類器函數
MultinomialNB()
伯努利⻉葉斯分類器
BernoulliNB()
將樣本點划分成不同的類別(三種表現形式:點、線、面)
超平面最優解
1.先隨機選擇一條直線
2.分別計算兩邊距離改直線最短的點距離 取更小的距離
3.以該距離左右兩邊做分隔帶
4.依次直線上述三個步驟得出N多個分隔帶 最優的就是分隔帶最寬的
線性可分和非線性可分
線性可分:簡單的理解為就是一條直線划分類別
非線性可分:一條直線無法直接划分 需要升一個維度再做划分
""" 核函數:高斯核函數>>>:支持無窮維 """
函數代碼
線性可分函數
LinearSVC(tol=0.0001, C=1.0, multi_class='ovr', fit_intercept=True, intercept_scaling=1, class_weight=None, max_iter=1000)
參數:
tol:⽤於指定SVM模型迭代的收斂條件,默認為0.0001 C:⽤於指定⽬標函數中松弛因⼦的懲罰系數值,默認為1 fit_intercept:bool類型參數,是否擬合線性“超平⾯”的截距項,默認為True intercept_scaling:當參數fit_intercept為True時,該參數有效,通過給參數傳遞⼀個浮點值,就相 當於在⾃變量X矩陣中添加⼀常數列,默認該參數值為1 class_weight:⽤於指定因變量類別的權重,如果為字典,則通過字典的形式{class_label:weight} 傳遞每個類別的權重;如果為字符串'balanced',則每個分類的權重與實際樣本中的⽐例成反⽐,當 各分類存在嚴重不平衡時,設置為'balanced'會⽐較好;如果為None,則表示每個分類的權重相等 max_iter:指定模型求解過程中的最⼤迭代次數,默認為1000
SVC(C=1.0, kernel=‘rbf’, degree=3, gamma=‘auto’, coef0=0.0, tol=0.001,
class_weight=None, verbose=False, max_iter=-1, random_state=None)
參數:
C:⽤於指定⽬標函數中松弛因⼦的懲罰系數值,默認為1 kernel:⽤於指定SVM模型的核函數,該參數如果為'linear',就表示線性核函數;如果為'poly',就 表示多項式核函數,核函數中的r和p值分別使⽤degree參數和gamma參數指定;如果為'rbf',表示 徑向基核函數,核函數中的r參數值仍然通過gamma參數指定;如果為'sigmoid',表示Sigmoid核函 數,核函數中的r參數值需要通過gamma參數指定;如果為'precomputed',表示計算⼀個核矩陣 degree:⽤於指定多項式核函數中的p參數值 gamma:⽤於指定多項式核函數或徑向基核函數或Sigmoid核函數中的r參數值 coef0:⽤於指定多項式核函數或Sigmoid核函數中的r參數值 tol:⽤於指定SVM模型迭代的收斂條件,默認為0.001 class_weight:⽤於指定因變量類別的權重,如果為字典,則通過字典的形式{class_label:weight} 傳遞每個類別的權重;如果為字符串'balanced',則每個分類的權重與實際樣本中的⽐例成反⽐,當 各分類存在嚴重不平衡時,設置為'balanced'會⽐較好;如果為None,則表示每個分類的權重相等 max_iter:指定模型求解過程中的最⼤迭代次數,默認為-1,表示不限制迭代次數
補充知識
有監督學習於無監督學習
有監督:有明確需要研究的因變量Y
無監督:沒有明確需要研究的因變量Y
K均值(Kmeans)聚類
屬於無監督學習
K值的求解(K表示分成幾類)
1.拐點法
計算不同K值下類別中離差平方和(看斜率 變化越明顯越好)
2.輪廓系數法
計算輪廓系數(看大小 越大越好)
函數代碼
KMeans(n_clusters=8, init='k-means++', n_init=10, max_iter=300, tol=0.0001)
參數:
n_clusters:⽤於指定聚類的簇數 init:⽤於指定初始的簇中⼼設置⽅法,如果為'k-means++',則表示設置的初始簇中⼼之間相距較 遠;如果為'random',則表示從數據集中隨機挑選k個樣本作為初始簇中⼼;如果為數組,則表示⽤ 戶指定具體的簇中⼼ n_init:⽤於指定Kmeans算法運⾏的次數,每次運⾏時都會選擇不同的初始簇中⼼,⽬的是防⽌算 法收斂於局部最優,默認為10 max_iter:⽤於指定單次運⾏的迭代次數,默認為300 tol:⽤於指定算法收斂的閾值,默認為0.0001
1.聚類效果容易受到異常樣本點的影響
2.無法准確的將非球形樣本進行合理的聚類
'''可以采用密度聚類解決上述兩個缺點'''
核心概念
核心對象:內部含有至少大於等於最少樣本點的樣本
非核心對象:內部少於最少樣本點的樣本
直接密度可達:在核心對象內部的樣本點到核心對象的距離
密度可達:多個直接密度可達鏈接了多個核心對象(首尾點密度可達)
密度相連:兩邊的點由中間的核心對象分別密度可達
異常點:不與任何核心或非核心點有密度可達關系
函數代碼
AdaBoostClassifier(base_estimator=None, n_estimators=50, learning_rate=1.0, algorithm='SAMME.R', random_state=None) AdaBoostRegressor(base_estimator=None, n_estimators=50, learning_rate=1.0, loss='linear', random_state=None)
參數:
algorithm:⽤於指定AdaBoostClassifier分類器的算法,默認為'SAMME.R',也可以使⽤ 'SAMME';使⽤'SAMME.R'時,基礎模型必須能夠計算類別的概率值;⼀般⽽⾔,'SAMME.R'算法 相⽐於'SAMME'算法,收斂更快、誤差更⼩、迭代數量更少。 loss:⽤於指定AdaBoostRegressor回歸提升樹的損失函數,可以是'linear',表示使⽤線性損失函 數;也可以是'square',表示使⽤平⽅損失函數;還可以是'exponential',表示使⽤指數損失函數; 該參數的默認值為'linear'。 random_state:⽤於指定隨機數⽣成器的種⼦。
SMOTE算法
SMOTE(ratio='auto', random_state=None, k_neighbors=5, m_neighbors=10)
參數:
ratio:⽤於指定重抽樣的⽐例,如果指定字符型的值,可以是'minority'(表示對少數類別的樣本進 ⾏抽樣)、'majority'(表示對多數類別的樣本進⾏抽樣)、'not minority'(表示采⽤⽋采樣⽅ 法)、'all'(表示采⽤過采樣⽅法),默認為'auto',等同於'all'和'not minority'。如果指定字典型的 值,其中鍵為各個類別標簽,值為類別下的樣本量。 random_state:⽤於指定隨機數⽣成器的種⼦,默認為None,表示使⽤默認的隨機數⽣成器。 k_neighbors:指定近鄰個數,默認為5個。 m_neighbors:指定從近鄰樣本中隨機挑選的樣本個數,默認為10個。