martin
LinearRegression是scikit-learn
提供的線性迴歸模型,其原型爲:
class sklearn.linear_model.LinearRegression(fit_intercept=True, normalize=False, copy_X=True, n_jobs=1)
fit_intercept
: 一個布爾值,指定是否需要計算b值。如果爲False,那麼不計算b值。normalize
: 一個布爾值。如果爲True,那麼訓練樣本會在迴歸之前被歸一化。copy_X
: 一個布爾值。如果爲True,則會被複制。n_jobs
: 一個正數。任務並行時指定的CPU數量。如果爲-1則使用所有可用的CPU。coef_
: 權重向量。intercept_
: 截距b值。fit(X,y)
: 訓練模型。predict(X)
: 用模型預測,返回預測值。score(X,y)
: 返回性能得分。設預測集爲
alpha
:
fit_intercept
:一個布爾值,指定是否需要計算b值。如果爲False,那麼不計算b值。max_iter
: 一個整數,指定最大迭代次數。normalize
:一個布爾值。如果爲True,那麼訓練樣本會在迴歸之前被歸一化。copy_X
: 一個布爾值。如果爲True,則會被複制。precompute
: 一個布爾值或者一個序列。決定是否提前計算Gram矩陣來加速計算。tol
: 一個浮點數,指定判斷迭代收斂與否的閾值warm_start
: 一個布爾值。如果爲True,那麼使用前一次訓練結果繼續訓練。否則從頭開始訓練positive
: 一個布爾值。如果爲True,那麼要求權重向量的分量都爲正數。selection
: 一個字符串,可以爲‘cyclic’或者‘random’。它指定了當每輪迭代的時候,選擇權重向量的那個分量來更新。 random_state
: 一個整數或者一個RandomState實例,或者None。 coef_
: 權重向量。intercept_
: 截距b值。n_iter_
: 實際迭代次數。fit(X,y)
: 訓練模型。predict(X)
: 用模型預測,返回預測值。score(X,y)
: 返回性能得分。設預測集爲
alpha
:
fit_intercept
:一個布爾值,指定是否需要計算b值。如果爲False,那麼不計算b值。max_iter
: 一個整數,指定最大迭代次數。normalize
:一個布爾值。如果爲True,那麼訓練樣本會在迴歸之前被歸一化。copy_X
: 一個布爾值。如果爲True,則會被複制。solver
: 一個字符串,指定求解最優化問題的算法。可以爲: tol
: 一個浮點數,指定判斷迭代收斂與否的閾值random_state
: 一個整數或者一個RandomState實例,或者None。 coef_
: 權重向量。intercept_
: 截距b值。n_iter_
: 實際迭代次數。fit(X,y)
: 訓練模型。predict(X)
: 用模型預測,返回預測值。score(X,y)
: 返回性能得分。設預測集爲
alpha
:
l1_ratio
:
fit_intercept
:一個布爾值,指定是否需要計算b值。如果爲False,那麼不計算b值。max_iter
: 一個整數,指定最大迭代次數。normalize
:一個布爾值。如果爲True,那麼訓練樣本會在迴歸之前被歸一化。copy_X
: 一個布爾值。如果爲True,則會被複制。precompute
: 一個布爾值或者一個序列。決定是否提前計算Gram矩陣來加速計算。tol
: 一個浮點數,指定判斷迭代收斂與否的閾值warm_start
: 一個布爾值。如果爲True,那麼使用前一次訓練結果繼續訓練。否則從頭開始訓練positive
: 一個布爾值。如果爲True,那麼要求權重向量的分量都爲正數。selection
: 一個字符串,可以爲‘cyclic’或者‘random’。它指定了當每輪迭代的時候,選擇權重向量的那個分量來更新。 random_state
: 一個整數或者一個RandomState實例,或者None。 coef_
: 權重向量。intercept_
: 截距b值。n_iter_
: 實際迭代次數。fit(X,y)
: 訓練模型。predict(X)
: 用模型預測,返回預測值。score(X,y)
: 返回性能得分。設預測集爲
Logistic Regression是scikit-learn
提供的邏輯迴歸模型,其原型爲:
class sklearn.linear_model.LogisticRegression(penalty=’l2’, dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver=’liblinear’, max_iter=100, multi_class=’ovr’, verbose=0, warm_start=False, n_jobs=1)
penalty
: 一個字符串,指定了正則化策略。 dual
: 一個布爾值。如果爲True,則求解對偶形式(只在penalty=‘l2’且solver=‘liblinear’有對偶形式),如果爲False,則求解原始形式。C
: 一個浮點數。它指定了罰項係數的倒數
。如果它的值越小,則正則化項越大。fit_intercept
: 一個布爾值,指定是否需要計算b值。如果爲False,那麼不計算b值。intercept_scaling
: 一個浮點數。只有當solver=‘liblinear’纔有意義。當採用fit_intercept時,相當於人造了一個特徵,該特徵恆爲1,其權重爲b。在計算正則化項的時候,該人造特徵也被考慮了。因此爲了降低這個人造特徵的影響,需要提供intercept_scaling。class_weight
: 一個字典或者字符串‘balanced’。 max_iter
: 一個整數,制定最大迭代數。random_state
:一個整數或者一個RandomState實例,或者None。 solver
: 一個字符串,指定了求解最優化的算法,可以爲: tol
: 一個浮點數,指定判斷迭代收斂與否的閾值multi_class
: 一個字符串,指定對於多分類問題的策略,可以爲: liblinear
共存。verbose
: 一個正數。用於開啓關閉迭代中輸出日誌。warm_start
: 一個布爾值。如果爲True,那麼使用前一次訓練結果繼續訓練。否則從頭開始訓練n_jobs
: 一個正數。任務並行時指定的CPU數量。如果爲-1則使用所有可用的CPU。coef_
: 權重向量。intercept_
:b值。n_iter
:實際迭代次數。fit(X,y)
: 訓練模型。predict(X)
: 用模型預測,返回預測值。predict_log_proba(X)
: 返回一個數組,數組的元素依次是X預測爲各個類別的概率的對數值。predict_proba(X)
: 返回一個數組,數組的元素依次是X預測爲各個類別的概率值。score(X,y)
: 返回在(X,y)上預測的準確率(accuracy)。LinearDiscriminationAnalysis是scikit-learn
提供的線性判別分析模型,其原型爲:
class sklearn.discriminant_analysis.LinearDiscriminantAnalysis(solver=’svd’, shrinkage=None, priors=None, n_components=None, store_covariance=False, tol=0.0001)[source]
solver
: 一個字符串,指定求解最優化問題的算法,可以爲: shrinkage
: 字符串‘auto’或者浮點數或者None。該參數通常在訓練樣本數量小於特徵數量的場合下使用。該參數只有在solver=lsqr或者eigen下才有意義。priors
: 一個數組,數組中的元素依次指定了每個類別的先驗概率。如果爲None,則認爲每個類別的先驗概率是均等的。n_components
: store_covariance
:tol
: coef_
: 權重向量。intercept_
: b值。covariance
:一個數組,依次給出每個類別的協方差矩陣。means_
: 一個數組,依次給出每個類別的均值向量。xbar_
: 給出了整體樣本的均值向量。n_iter
: 實際迭代次數。fit(X,y)
: 訓練模型。predict(X)
: 用模型預測,返回預測值。predict_log_proba(X)
: 返回一個數組,數組的元素依次是X預測爲各個類別的概率的對數值。predict_proba(X)
: 返回一個數組,數組的元素依次是X預測爲各個類別的概率值。score(X,y)
: 返回在(X,y)上預測的準確率(accuracy)。DescisionTreeRegressor實現了迴歸決策樹,用於迴歸問題,其原型爲:
class sklearn.tree.DecisionTreeRegressor(criterion=’mse’, splitter=’best’, max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, random_state=None, max_leaf_nodes=None, min_impurity_split=1e-07, presort=False)[source]
criterion
: 一個字符串,指定切分質量的評價標準。默認爲‘mse’,且只支持該字符串,表示均方誤差。splitter
: 一個字符串,指定切分原則,可以爲: best
: 表示選擇最優的切分。random
: 表示隨機切分。max_features
: 可以爲整數、浮點、字符或者None,指定尋找best split時考慮的特徵數量。 max_depth
: 可以爲整數或者None,指定樹的最大深度。 min_samples_split
: 爲整數,指定每個內部節點(非葉子節點)包含的最少的樣本數。min_samples_leaf
: 爲整數,指定每個葉子結點包含的最少的樣本數。min_weight_fraction_leaf
: 爲浮點數,葉子節點中樣本的最小權重係數。max_leaf_nodes
: 爲整數或None,指定葉子結點的最大數量。 class_weight
: 一個字典、字典的列表、字符串‘balanced’或者None,他指定了分類的權重。權重形式爲:{class_label:weight} random_state
: 一個整數或者一個RandomState實例,或者None。 presort
: 一個布爾值,指定了是否要提前排序數據從而加速尋找最優切分的過程。設置爲True時,對於大數據集會減慢總體訓練過程,但對於小數據集或者設定了最大深度的情況下,則會加速訓練過程。feature_importances_
: 給出了特徵的重要程度。該值越高,則特徵越重要(也稱爲Gini importance)。max_features_
: max_feature的推斷值。n_features_
: 當執行fit後,特徵的數量。n_outputs_
: 當執行fit後,輸出的數量。tree_
: 一個Tree對象,即底層的決策樹。fit(X,y)
: 訓練模型。predict(X)
: 用模型預測,返回預測值。score(X,y)
: 返回性能得分。設預測集爲
DescisionTreeClassifier實現了分類決策樹,用於分類問題,其原型爲:
class sklearn.tree.DecisionTreeClassifier(criterion=’gini’, splitter=’best’, max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, random_state=None, max_leaf_nodes=None, min_impurity_split=1e-07, class_weight=None, presort=False)
[x] 參數
criterion
: 一個字符串,指定切分質量的評價標準。可以爲:
splitter
: 一個字符串,指定切分原則,可以爲:
best
: 表示選擇最優的切分。random
: 表示隨機切分。max_features
: 可以爲整數、浮點、字符或者None,指定尋找best split時考慮的特徵數量。 max_depth
: 可以爲整數或者None,指定樹的最大深度。 min_samples_split
: 爲整數,指定每個內部節點(非葉子節點)包含的最少的樣本數。min_samples_leaf
: 爲整數,指定每個葉子結點包含的最少的樣本數。min_weight_fraction_leaf
: 爲浮點數,葉子節點中樣本的最小權重係數。max_leaf_nodes
: 爲整數或None,指定葉子結點的最大數量。 class_weight
: 一個字典、字典的列表、字符串‘balanced’或者None,他指定了分類的權重。權重形式爲:{class_label:weight} random_state
: 一個整數或者一個RandomState實例,或者None。 presort
: 一個布爾值,指定了是否要提前排序數據從而加速尋找最優切分的過程。設置爲True時,對於大數據集會減慢總體訓練過程,但對於小數據集或者設定了最大深度的情況下,則會加速訓練過程。classes_
: 分類的標籤值。feature_importances_
: 給出了特徵的重要程度。該值越高,則特徵越重要(也稱爲Gini importance)。max_features_
: max_feature的推斷值。n_classes_
: 給出了分類的數量。n_features_
: 當執行fit後,特徵的數量。n_outputs_
: 當執行fit後,輸出的數量。tree_
: 一個Tree對象,即底層的決策樹。fit(X,y)
: 訓練模型。predict(X)
: 用模型預測,返回預測值。predict_log_proba(X)
: 返回一個數組,數組元素依次爲X預測爲各個類別的概率值的對數值。predict_proba(X)
: 返回一個數組,數組元素依次爲X預測爲各個類別的概率值。score(X,y)
: 返回在(X,y)上預測的準確率(accuracy)。樸素貝葉斯算法
三大算法均是樸素貝葉斯算法,區別在於假設了不同的
GaussianNB假設:
GaussianNB是高斯貝葉斯分類器,它假設特徵的條件概率分佈滿足高斯分佈:
priors
: 類的先驗概率。如果指定的先驗概率並不適合數據。class_prior_
: 一個數組,形狀爲(n_classes),是每個類別的概率
class_count_
: 一個數組,形狀爲(n_classes),是每個類別包含的樣本數量。theta_
: 一個數組,形狀爲(n_classes,n_features),是每個類別上每個特徵的均值
sigma_
: 一個數組,形狀爲(n_classes,n_features),是每個類別上每個特徵的標準差
fit(X,y)
: 訓練模型。partial_fit(X,y)
: 追加訓練模型,該方法主要用於大規模數據集的訓練,此時大規模數據集被分成多個小數據集然後分別訓練。predict(X)
: 用模型預測,返回預測值。predict_log_proba(X)
: 返回一個數組,數組元素依次爲X預測爲各個類別的概率值的對數值。predict_proba(X)
: 返回一個數組,數組元素依次爲X預測爲各個類別的概率值。score(X,y)
: 返回在(X,y)上預測的準確率(accuracy)。MultinomialNB是多項貝葉斯分類器,它假設特徵的條件概率分佈滿足多項分佈。
貝葉斯估計:
設第
當
其原型爲:
class sklearn.naive_bayes.MultinomialNB(alpha=1.0, fit_prior=True, class_prior=None)
[x] 導包
alpha
: 一個浮點數,指定
fit_prior
: 布爾值。如果爲True,則不去學習
class_prior
: 一個數組它指定了每個類別的先驗概率
class_log_prob_
: 一個數組對象,形狀爲(n_classes),給出了每個類別調整後的經驗概率分佈的對數值。feature_log_prob_
: 一個數組對象,形狀爲(n_classes,n_features)。給出了
class_count_
: 一個數組,形狀爲(N_classes),是每個類別包含的訓練樣本數。feature_count_
: 一個數組,形狀爲(n_classes,n_features)。訓練過程中,每個類別每個特徵遇到的樣本數。fit(X,y)
: 訓練模型。partial_fit(X,y)
: 追加訓練模型,該方法主要用於大規模數據集的訓練,此時大規模數據集被分成多個小數據集然後分別訓練。predict(X)
: 用模型預測,返回預測值。predict_log_prob(X)
: 返回一個數組,數組元素依次爲X預測爲各個類別的概率值的對數值。predict_prob(X)
: 返回一個數組,數組元素依次爲X預測爲各個類別的概率值。score(X,y)
: 返回在(X,y)上預測的準確率(accuracy)。BernoulliNB是伯努利貝葉斯分類器。它假設特徵的條件概率分佈滿足二項分佈:
alpha
: 一個浮點數,指定
binarize
: 一個浮點數或者None。 fit_prior
: 布爾值。如果爲True,則不去學習
class_prior
: 一個數組它指定了每個類別的先驗概率
class_log_prob_
: 一個數組對象,形狀爲(n_classes),給出了每個類別調整後的經驗概率分佈的對數值。feature_log_prob_
: 一個數組對象,形狀爲(n_classes,n_features)。給出了
class_count_
: 一個數組,形狀爲(N_classes),是每個類別包含的訓練樣本數。feature_count_
: 一個數組,形狀爲(n_classes,n_features)。訓練過程中,每個類別每個特徵遇到的樣本數。fit(X,y)
: 訓練模型。partial_fit(X,y)
: 追加訓練模型,該方法主要用於大規模數據集的訓練,此時大規模數據集被分成多個小數據集然後分別訓練。predict(X)
: 用模型預測,返回預測值。predict_log_prob(X)
: 返回一個數組,數組元素依次爲X預測爲各個類別的概率值的對數值。predict_prob(X)
: 返回一個數組,數組元素依次爲X預測爲各個類別的概率值。score(X,y)
: 返回在(X,y)上預測的準確率(accuracy)。KNeighborsClassifier是scikit-learn
提供的K近鄰算法分類模型,其原型爲:
class sklearn.neighbors.KNeighborsClassifier(n_neighbors=5, weights=’uniform’, algorithm=’auto’, leaf_size=30, p=2, metric=’minkowski’, metric_params=None, n_jobs=1, **kwargs)
n_neighbors
: 一個整數,指定k值。weights
: 一字符串或者可調用對象,指定投票權重類型。即這些鄰居投票權可以爲相同或者不同。 algorithm
: 一個字符串,指定最近鄰的算法,可以爲下: leaf_size
: 一個整數,指定BallTree或者KDTree葉節點的規模。它影響樹的構建和查詢速度。metric
: 一個字符串,指定距離度量。默認爲‘minkowski’(閔可夫斯基)距離。P
: 整數值。 n_jobs
: 並行性。默認爲-1表示派發任務到所有計算機的CPU上。fit(X,y)
: 訓練模型。predict(X)
: 預測模型。score(X,y)
: 返回在(X,y)上預測的準確率(accuracy)。predict_proba(X)
: 返回樣本爲每種標記的概率。kneighbors([X,n_neighbors,return_distace])
: 返回樣本點的k鄰近點。如果return_distance=True,同時還返回到這些近鄰點的距離。kneighbors_graph([X,n_neighbors,mode])
: 返回樣本點的連接圖。KNeighborsRegressor是scikit-learn
提供的K近鄰算法迴歸模型,其原型爲:
class sklearn.neighbors.KNeighborsRegressor(n_neighbors=5, weights=’uniform’, algorithm=’auto’, leaf_size=30, p=2, metric=’minkowski’, metric_params=None, n_jobs=1, **kwargs)
n_neighbors
: 一個整數,指定k值。weights
: 一字符串或者可調用對象,指定投票權重類型。即這些鄰居投票權可以爲相同或者不同。 algorithm
: 一個字符串,指定最近鄰的算法,可以爲下: leaf_size
: 一個整數,指定BallTree或者KDTree葉節點的規模。它影響樹的構建和查詢速度。metric
: 一個字符串,指定距離度量。默認爲‘minkowski’(閔可夫斯基)距離。P
: 整數值。 n_jobs
: 並行性。默認爲-1表示派發任務到所有計算機的CPU上。fit(X,y)
: 訓練模型。predict(X)
: 預測模型。score(X,y)
: 返回性能得分。設預測集爲
predict_proba(X)
: 返回樣本爲每種標記的概率。kneighbors([X,n_neighbors,return_distace])
: 返回樣本點的k鄰近點。如果return_distance=True,同時還返回到這些近鄰點的距離。kneighbors_graph([X,n_neighbors,mode])
: 返回樣本點的連接圖。PCA是scikit-learn
中提供的PCA模型,其原型爲:
class sklearn.decomposition.PCA(n_components=None, copy=True, whiten=False, svd_solver=’auto’, tol=0.0, iterated_power=’auto’, random_state=None)
n_components
: 一個整數,指定降維後的維數。 copy
: 一個布爾值。如果爲False,則直接用原始數據來訓練,結果會覆蓋原始數據所在的數組。whiten
:一個布爾值。如果爲True,則將特徵向量除以n_samples倍的特徵值,從而保證非相關輸出的方差爲1。tol
: 一個浮點數,指定arpack他特徵值求解器的收斂閾值(如果爲0,則自動選擇)。svd_solver
:字符串。 random_state
: 整數或者一個RandomState實例或者None。 iterated_power
: 整數或者‘auto’。指定使用svd_solver = ‘randomized’方法進行高效迭代。components_
: 主成分數組。explained_variance_
: 每個成分對應的explained variance。explained_variance_ratio_
: 一個數組,元素是每個主分成的explained variance的比例。mean_
: 一個數組,元素是每個特徵的統計平均值。n_components_
: 一個整數,指示主成分有多少各元素。fit(X,y)
: 訓練模型。transform(X)
: 執行降維。fit_transform(X,y)
: 訓練模型並降維。inverse_transform(X)
: 執行升維(逆向操作),將數據從低維空間逆向轉換到原始空間。IncrementalPCA適用於超大規模數據,它可以將數據分批加載進內存。其原型爲:
class sklearn.decomposition.IncrementalPCA(n_components=None, whiten=False, copy=True, batch_size=None)
n_components
: 一個整數,指定降維後的維數。 bath_size
: 一個整數或者None,指定每個批次訓練時,使用的樣本數量。只有當調用fit()/partial_fit()方法時纔會用到該參數。 copy
: 一個布爾值。如果爲False,則直接用原始數據來訓練,結果會覆蓋原始數據所在的數組。whiten
:一個布爾值。如果爲True,則將特徵向量除以n_samples倍的特徵值,從而保證非相關輸出的方差爲1。components_
: 主成分數組。explained_varicance_
: 每個成分對應的explained variance。explained_variance_ratio_
: 一個數組,元素是每個主分成的explained variance的比例。mean_
: 一個數組,元素是每個特徵的統計平均值。var_
: 一個數組,元素是每個特徵的經驗方差。每調用一次partial_fit()方法,就會更新一次該屬性。n_components_
: 一個整數,指示主成分有多少各元素。n_samples_seen_
: 一個整數,只是目前已經處理了多少個樣本。每調用一次partial_fit()方法,就會更新一次該屬性。每調用一個fit()方法就會清零該屬性。fit(X,y)
: 訓練模型。partial_fit(X,y)
: 繼續訓練模型,使用bath_size個樣本。transform(X)
: 執行降維。fit_transform(X,y)
: 訓練模型並降維。inverse_transform(X)
: 執行升維(逆向操作),將數據從低維空間逆向轉換到原始空間。KMeans是scikitlearn
提供的k均值聚類算法模型,其原型爲:
class sklearn.cluster.KMeans(n_clusters=8, init=’k-means++’, n_init=10, max_iter=300, tol=0.0001, precompute_distances=’auto’, verbose=0, random_state=None, copy_x=True, n_jobs=1, algorithm=’auto’)
n_clusters
: 一個整數,指定分類數量。init
: 一個字符串,指定初始均值向量的策略,可以爲以下值: n_init
: 一個整數,指定了k均值算法的運行次數,每一次都會選擇一組不同的初始化均值向量,最終算法會選擇最佳的分類簇作爲最終結果。algorithm
: 一個字符串。 max_iter
: 一個整數,指定了單輪kmeans算法中最大的迭代次數。算法總的迭代次數爲:max_iter*n_init。precompute_distances
: 可以爲布爾值或者字符串‘auto’。該參數指定是否提前計算好樣本之間的距離(如果提前計算需要更多內存,但是算法會運行更快)。 tol
: 一個浮點數,指定了算法收斂的閾值。n_jobs
: 一個整數,指定任務並行時指定CPU數量,如果爲-1使用全部CPU。verbose
: 一個整數。如果爲0,則不輸出日誌,如果爲1,則每隔一段時間打印一次日誌,如果大於1則打印日誌更頻繁。random_state
: 一個整數或者一個RandomState實例,或者None。 copy_x
: 布爾值,用於precompute_distances=True的情況。 cluster_centers_
: 給出分類簇的均值向量。labels_
: 給出每個樣本所屬的簇的標記。inertia_
: 給出了每個樣本距離他們各自最近的簇中心的距離之和。fit(X,y)
: 訓練模型。fit_predict(X,y)
: 訓練模型並預測每個樣本所屬的簇。它等價於先調用fit()方法,後調用predict()方法。predict(X)
: 預測樣本所屬的簇。score(X,y)
: 給出了樣本距離簇中心的偏移量的相反數。DBSCAN是scikit-learn
提供的密度聚類算法模型,其原型爲:
class sklearn.cluster.DBSCAN(eps=0.5, min_samples=5, metric=’euclidean’, algorithm=’auto’, leaf_size=30, p=None, n_jobs=1)
eps
:
min_samples
: MinPts參數,用於判斷核心對象。metric
: 一個字符串或者可調用對象,用於計算距離。如果是字符串,則必須是在metrics.pairwise.calculate_distance中指定它。algorithm
: 一個字符串,用於計算兩點距離並找出最近鄰點,可以爲如下: leaf_size
: 一個整數,用於指定當algorithm=ball_tree或者kd_tree時,樹的葉節點大小。該參數會影響構建樹、搜索最近鄰速度,同時影響存儲樹的內存。p
: 閔可夫斯基距離p參數。core_sample_indices_
: 核心樣本在原始訓練集中的位置。components_
: 核心樣本的一份副本。labels_
: 每個樣本所屬的簇的標記。對於噪聲樣本,其簇標記爲-1樣本fit(X,y)
: 訓練模型。fit_predict(X,y)
: 訓練模型並預測每個樣本的所屬簇的標記。AgglomerativeClustering是scikitlearn
提供的層次聚類算法模型。其原型爲:
class sklearn.cluster.AgglomerativeClustering(n_clusters=2, affinity=’euclidean’, memory=Memory(cachedir=None), connectivity=None, compute_full_tree=’auto’, linkage=’ward’, pooling_func=)
n_clusters
: 一個整數,指定分類簇的數量。connectivity
: 一個數組或者可調用對象或者爲None,用於指定連接矩陣,它指出了每個樣本可連接的樣本。affinity
: 一個字符串或者可調用對象,用於計算距離,可以爲:’euclidean’,’l1’,’l2’,’manhattan’,’cosine’,’precomputed’,如果linkage=’ward’,則’affinity’必須是’euclidean’。memory
: 用於緩存輸出結果,默認不緩存。compute_full_tree
: 通常當訓練了n_clusters之後,訓練過程就停止,但是如果爲True則會繼續訓練從而生成一棵完整的樹。linkage
: 一個字符串,用於指定鏈接算法。 pooling_func
: 一個可調用對象,它的輸入是一組特徵值,輸出是一個數值。labels_
: 每個樣本的簇標記。n_leaves_
: 分層樹的葉節點數量。n_components
: 連接圖中聯通分量的估計值。children
: 一個數組,給出了每個非葉節點中的子節點數量。fit(X,y)
: 訓練模型。fit_predict(X,y)
: 訓練模型並預測每個樣本所屬的標記。LinearSVC實現了線性分類支持向量機,它是根據liblinear
實現的,可以用於二分類、也可以用於多分類,其原型爲:
class sklearn.svm.LinearSVC(penalty=’l2’, loss=’squared_hinge’, dual=True, tol=0.0001, C=1.0, multi_class=’ovr’, fit_intercept=True, intercept_scaling=1, class_weight=None, verbose=0, random_state=None, max_iter=1000)
C
: 一個浮點數,罰項係數。C值越大對誤分類的懲罰越大。loss
: 字符串,表示損失函數,可以爲如下值: penalty
:字符串,指定‘l1’或者‘l2’,罰項範數。默認爲‘l2’(他是標準的SVM範數)。dual
:布爾值,如果爲True,則解決對偶問題,如果是False,則解決原始問題。當n_samples>n_features是,傾向於採用False。tol
:浮點數,指定終止迭代的閾值。multi_class
:字符串,指定多分類的分類策略。 fit_intecept
:布爾值,如果爲True,則計算截距,即決策樹中的常數項,否則忽略截距。intercept_scaling
:浮點值,若提供了,則實例X變成向量[X,intercept_scaling]。此時相當於添加一個人工特徵,該特徵對所有實例都是常數值。class_weight
: 可以是個字典或者字符串‘balanced’。指定個各類的權重,若未提供,則認爲類的權重爲1。 verbose
:一個整數,表示是否開啓verbose輸出。random_state
:一個整數或者一個RandomState實例,或者None。 max_iter
:一個整數,指定最大迭代數。coef_
: 一個數組,它給出了各個特徵的權重。intercept_
: 一個數組,它給出了截距。fit(X,y)
:訓練模型。predict(X)
: 用模型進行預測,返回預測值。score(X,y)
: 返回在(X,y)上的預測準確率。SVC實現了非線性分類支持向量機,它是根據libsvm
實現的,可以用於二分類,也可以用於多分類,其原型爲:
class sklearn.svm.SVC(C=1.0, kernel=’rbf’, degree=3, gamma=’auto’, coef0=0.0, shrinking=True, probability=False, tol=0.001, cache_size=200, class_weight=None, verbose=False, max_iter=-1, decision_function_shape=None, random_state=None)
C
: 一個浮點數,罰項係數,C越大懲罰越大。kernel
: 一個字符串,指定核函數。 degree
: 一個整數,指定當核函數是多項式核函數時,多項式的係數。對於其它核函數該參數無效。gamma
:一個浮點數。當核函數是’rbf’,’poly’,’sigmoid’時,核函數的係數。如果爲‘auto’,則表示係數爲
coef0
:浮點數,用於指定核函數中的自由項。只有當核函數是‘poly’和‘sigmoid’時有效。probability
:布爾值。如果爲True,則會進行概率估計。它必須在訓練之前設定好,且會拖慢訓練速度。shrinking
: 布爾值。如果爲True,則使用啓發式收縮。tol
:浮點數,指定終止迭代的閾值。cache_size
:浮點值,指定了kernel cache的大小,單位爲MB。class_weight
: 可以是個字典,或者字符串‘balanced’。指定各個類的權重,若爲提供,則權重均爲1。verbose
:是否開啓verbose輸出。max_iter
:一個整數,指定最大迭代次數。decision_function_shape
:爲字符串或者None,指定決策函數的形狀。 random_state
:一個整數或者一個RandomState實例,或者None。 support_
:一個數組,形狀爲[n_SV],支持向量的下標。support_vectors_
:一個數組,形狀爲[n_SV,n_features],支持向量。n_support_
:一個數組,形狀爲[n_class],每一個分類的支持向量個數。dual_coef_
: 一個數組,形狀爲[n_class-1,n_SV]。對偶問題中,在分類決策函數中每一個支持向量的係數。coef_
:一個數組,形狀爲[n_class-1,n_features]。原始問題中,每個特徵的係數。只有在linear kernel中有效。intercept_
:一個數組,形狀爲[n_class*(n_class-1)/2]。決策函數中的常數項。fit(X,y)
: 訓練模型。predict(X)
: 用模型進行預測,返回預測值。score(X,y)
: 返回在(X,y)上預測的準確度。predict_log_proba(X)
: 返回一個數組,數組的元素依次是X預測爲各個類別的概率的對數值。predict_proba(X)
:返回一個數組,數組的元素依次是X預測爲各個類別的概率。LinearSVR實現了線性迴歸支持向量機,它基於liblinear
實現,其原型爲:
class sklearn.svm.LinearSVR(epsilon=0.0, tol=0.0001, C=1.0, loss=’epsilon_insensitive’, fit_intercept=True, intercept_scaling=1.0, dual=True, verbose=0, random_state=None, max_iter=1000)
C
: 一個浮點值,罰項係數。loss
:字符串,表示損失函數,可以爲: epsilon
:浮點數,用於lose中的
dual
:布爾值。如果爲True,則解決對偶問題,如果是False則解決原始問題。tol
:浮點數,指定終止迭代的閾值。fit_intercept
:布爾值。如果爲True,則計算截距,否則忽略截距。intercept_scaling
:浮點值。如果提供了,則實例X變成向量[X,intercept_scaling]。此時相當於添加了一個人工特徵,該特徵對所有實例都是常數值。verbose
:是否開啓verbose輸出。random_state
:一個整數或者一個RandomState實例,或者None。 max_iter
:一個整數,指定最大迭代次數。coef_
:一個數組,他給出了各個特徵的權重。intercept_
:一個數組,他給出了截距,及決策函數中的常數項。fit(X,y)
:訓練模型。predict(X)
:用模型進行預測,返回預測值。score(X,y)
:返回性能得分。設預測集爲
SVR實現了非線性迴歸支持向量機,它是基於libsvm
實現的,其原型爲:
class sklearn.svm.SVR(kernel=’rbf’, degree=3, gamma=’auto’, coef0=0.0, tol=0.001, C=1.0, epsilon=0.1, shrinking=True, cache_size=200, verbose=False, max_iter=-1)
C
:一個浮點值,罰項係數。epsilon
:浮點數,用於lose中的
kernel
: 一個字符串,指定核函數。 degree
:一個整數,指定當核函數是多項式核函數時,多項式的係數。對於其它核函數該參數無效。gamma
:一個浮點數。當核函數是’rbf’,’poly’,’sigmoid’時,核函數的係數。如果爲‘auto’,則表示係數爲
coef0
:浮點數,用於指定核函數中的自由項。只有當核函數是‘poly’和‘sigmoid’時有效。shrinking
:布爾值。如果爲True,則使用啓發式收縮。tol
:浮點數,指定終止迭代的閾值。cache_size
:浮點值,指定了kernel cache的大小,單位爲MB。verbose
:指定是否開啓verbose輸出。max_iter
:一個整數,指定最大迭代步數。support_
:一個數組,形狀爲[n_SV],支持向量的下標。support_vectors_
:一個數組,形狀爲[n_SV,n_features],支持向量。n_support_
:一個數組,形狀爲[n_class],每一個分類的支持向量個數。dual_coef_
: 一個數組,形狀爲[n_class-1,n_SV]。對偶問題中,在分類決策函數中每一個支持向量的係數。coef_
:一個數組,形狀爲[n_class-1,n_features]。原始問題中,每個特徵的係數。只有在linear kernel中有效。intercept_
:一個數組,形狀爲[n_class*(n_class-1)/2]。決策函數中的常數項。fit(X,y)
: 訓練模型。predict(X)
: 用模型進行預測,返回預測值。score(X,y)
:返回性能得分。設預測集爲
Bagging這個詞是根據BootstrapAggregation這個詞組創造的一個新詞。Bootstrap,是指拔靴帶,是幫助穿靴子時的一個紐帶。統計學上的Bootstrap一般稱爲自助法,是指從m
個訓練樣本中隨機有放回的抽樣m次,重複此過程T次。然後對每個樣本集進行訓練,最後結果由T個訓練器投票表決最終答案。
Bagging典型的代表就是Random Forest
,不過隨機森林與Bagging有點不同:
由於以上兩點,在樣本充足的條件下,隨機森林一般的結果都比任何一個單分類器效果要好。
Boosting就不同了,他是一種串行模型,取的是全部樣本來學習,但是它會進行多次重複學習,並且每次學習都會在之前一步的學習結果上在進行學習和改進,改進的是對上一次分錯的節點的權重,爲的是在本次學習中上次分錯的節點在本次會得到更多關注,進而分類正確。Adaboost是Boosting的一種。
下面給出一個例題,可以對Boosting有一個直觀的認識:
x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|---|
y | 1 | 1 | 1 | -1 | -1 | -1 | 1 | 1 | 1 | -1 |
對於m=2步:
爲何採用加法模型
下面介紹AdaBoost算法的過程:
1. 初始化訓練數據的權值分佈:
2. 對
(a) 使用具有權值分佈
3. 構建基本分類器的線性組合:
1. 先來看基分類器的權值
我們知道AdaBoost是將多個弱分類器組合起來形成一個很強的分類器,但這裏有個隱含條件:弱分類器。什麼叫弱分類器?意思就是在效果上比隨機猜想要好的分類器。比如二分類問題,隨機猜想的正確率是0.5,所以說弱分類器的正確率一定要比0.5高,於是它的錯誤率
2. 再來看訓練數據集分佈的權值分配,公式如下:
由公式可知,對訓練集的樣例正確分類與錯誤分類之間,錯誤分類樣本的權值被放大:
AdaBoost模型是由基本分類器組成的
1. 加法模型:
2. 損失函數:
3. 每次訓練後的基分類器都是乘以
4. 於是,在第
5. 目標是每一次的損失在訓練集上最小,所以最小化目標函數爲:
上式中,將
6. 於是,有:
所以,我們得到了優化的目標函數:
7. 對6中的目標函數關於
等價於:
因爲:
所以有:
8. 由於之前有個假設:
於是,就有了更新公式:
AdaBoostClassifier是scikit-learn
提供的AdaBoost分類器,其原型爲:
class sklearn.ensemble.AdaBoostClassifier(base_estimator=None, n_estimators=50, learning_rate=1.0, algorithm=’SAMME.R’, random_state=None)
base_estimator
:是一個基礎分類器對象。默認爲DecisionTreeClassifier。該基礎分類器必須支持帶權重的學習。n_estimator
:一個整數,指定基礎分類器的數量(默認50)。當然如果訓練集已經完美地訓練好了,可能算法會提前停止。此時基礎分類器的數量少於該值。learning_rate
:爲浮點數。默認爲1.它用於每一步的步長,防止步長太大而跨過了極值點。通常learning_rate越小,則需要的基礎分類器數量就會越多,因此在learning_rate和n_estimators之間會有所折中。learning_rate爲下式中的v。 algorithm
:一個字符串,指定算法,該算法用於多分類問題,默認爲’SAMME.R’。 random_state
:一個整數或者一個RandomState實例,或者None。 estimators_
:所有訓練過的基礎分類器。classes_
:所有類別標籤。n_classes_
:類別數量。estimator_weights_
:每個基礎分類器的權重。estimator_errors_
:每個基礎分類器的分類誤差。feature_importances_
:每個特徵的重要性。fit(X,y)
:訓練模型。predict(X)
:用模型進行預測,返回預測值。predict_log_proba(X)
:返回一個數組,數組的元素依次是X預測爲各個類別的概率的對數值。predict_proba(X)
:返回一個數組,數組的元素依次是X預測爲各個類別的概率值。score(X,y)
:返回在(X,y)上預測的準確率。staged_predict(X)
:返回一個數組,數組元素依次是每一輪迭代結束時尚未完成的集成分類器的預測值。staged_predict_proba(X)
:返回一個二維數組,數組元素依次是每一輪迭代結束時尚未完成的集成分類器預測X爲各個類別的概率值。staged_score(X,y)
:返回一個數組,數組元素依次是每一輪迭代結束時尚未完成的集成分類器的預測準確率。AdaBoostRegressor是scikit-learn
提供的AdaBoost迴歸器,其原型爲:
class sklearn.ensemble.AdaBoostRegressor(base_estimator=None, n_estimators=50, learning_rate=1.0, loss=’linear’, random_state=None)
base_estimator
:是一個基礎迴歸器對象。默認爲DecisionTreeRegressor。該基礎迴歸器必須支持帶權重的學習。 n_estimator
:一個整數,指定基礎迴歸器的數量(默認50)。當然如果訓練集已經完美地訓練好了,可能算法會提前停止。此時基礎迴歸器的數量少於該值。learning_rate
:爲浮點數。默認爲1.它用於每一步的步長,防止步長太大而跨過了極值點。通常learning_rate越小,則需要的基礎迴歸器數量就會越多,因此在learning_rate和n_estimators之間會有所折中。learning_rate爲下式中的v。 loss
:一個字符串,指定了損失函數,可以爲: random_state
:一個整數或者一個RandomState實例,或者None。 estimators_
:所有訓練過的基礎迴歸器。estimator_weights_
:每個基礎迴歸器的權重。estimator_errors_
:每個基礎迴歸器的誤差。feature_importances_
:每個特徵的重要性。fit(X,y)
:訓練模型。predict(X)
:用模型進行預測,返回預測值。score(X,y)
:返回性能得分。設預測集爲
staged_predict(X)
:返回一個數組,數組元素依次是每一輪迭代結束時尚未完成的集成迴歸器的預測值。staged_score(X,y)
:返回一個數組,數組元素依次是每一輪迭代結束時尚未完成的集成迴歸器的預測準確率。GradientBoostingClassifier是scikit-learn
提供的梯度提升決策樹,其原型爲:
class sklearn.ensemble.GradientBoostingClassifier(loss=’deviance’, learning_rate=0.1, n_estimators=100, subsample=1.0, criterion=’friedman_mse’, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_depth=3, min_impurity_split=1e-07, init=None, random_state=None, max_features=None, verbose=0, max_leaf_nodes=None, warm_start=False, presort=’auto’)
loss
:一個字符串,指定損失函數,可以爲: n_estimators
:一個整數,指定基礎決策樹的數量(默認爲100)。GBDT對過擬合有很好的魯棒性,因此該值越大越好。learning_rate
:爲浮點數。默認爲1.它用於每一步的步長,防止步長太大而跨過了極值點。通常learning_rate越小,則需要的基礎分類器數量就會越多,因此在learning_rate和n_estimators之間會有所折中。learning_rate爲下式中的v。 max_depth
:一個整數或者None,指定每一個基礎決策樹模型的最大深度。如果max_leaf_noeds不是None,則忽略此參數。criterion
:字符串。用來衡量切分的質量。默認爲‘friedman_mse’。可以爲: min_samples_split
:一個整數,指定了每個基礎決策樹模型分裂所需最小樣本數。min_samples_leaf
:一個整數,指定了每個基礎決策樹模型葉節點所包含的最小樣本數。min_weight_fraction_leaf
:一個浮點數。葉節點的最小加權權重。當不提供sample_weight時,樣本的權重是相等的。subsample
:一個浮點數,指定了提取原始訓練集中的一個子集用於訓練基礎決策樹,該參數就是子集佔原始訓練集的大小,
max_features
:一個整數,浮點數或者None。代表節點分裂是參與判斷的最大特徵數。整數爲個數,浮點數爲所佔比重。max_leaf_nodes
:爲整數或者None,指定了每個基礎決策樹模型的最大葉節點數量。min_impurity_split
:一個浮點數,指定在樹生長的過程中,節點分裂的閾值,默認爲1e-7。init
:一個基礎分類器對象或者None,該分類器對象用於執行初始的預測。如果爲None,則使用loss.init_estimator。verbose
:一個整數,如果爲0則不輸出日誌,如果爲1,則每隔一段時間輸出日誌,大於1輸出日誌會更頻繁。warm_start
:布爾值。當爲True是,則繼續使用上一次訓練結果。否則重新開始訓練。random_state
:一個整數或者一個RandomState實例,或者None。 presort
:一個布爾值或者‘auto’,是否對數據進行顯示以加速最佳分割的發現。默認情況下,自動模式將在密集的數據上使用presorting,默認爲稀疏數據的正常排序。在稀疏的數據上設置顯示值將會導致錯誤。feature_importance_
:一個數組,給出了每個特徵的重要性(值越高重要性越大)。oob_improvement_
:一個數組,給出了每增加一棵基礎決策樹,在包外估計(即測試集)的損失函數的改善情況。(及損失函數減少值)。train_score_
:一個數組,給出每增加一棵基礎決策樹,在訓練集上的損失函數的值。loss
:具體損失函數對象。init
:初始預測使用的分類器。estimators_
:一個數組,給出了每個基礎決策樹。fit(X,y)
:訓練模型。predict(X)
:用模型進行預測,返回預測值。predict_log_proba(X)
:返回一個數組,數組的元素依次是X預測爲各個類別的概率的對數值。predict_proba(X)
:返回一個數組,數組的元素依次是X預測爲各個類別的概率值。score(X,y)
:返回在(X,y)上預測的準確率。staged_predict(X)
:返回一個數組,數組元素依次是每一輪迭代結束時尚未完成的集成分類器的預測值。staged_predict_proba(X)
:返回一個二維數組,數組元素依次是每一輪迭代結束時尚未完成的集成分類器預測X爲各個類別的概率值。GradientBoostingRegressor是scikit-learn
提供的提升樹迴歸模型,其原型爲:
class sklearn.ensemble.GradientBoostingRegressor(loss=’ls’, learning_rate=0.1, n_estimators=100, subsample=1.0, criterion=’friedman_mse’, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_depth=3, min_impurity_split=1e-07, init=None, random_state=None, max_features=None, alpha=0.9, verbose=0, max_leaf_nodes=None, warm_start=False, presort=’auto’)
loss
:一個字符串,指定損失函數,可以爲: alpha
:一個浮點數,只有當loss=‘huber’或者loss=‘quantile’時纔有效。n_estimators
:一個整數,指定基礎決策樹的數量(默認爲100)。GBRT對過擬合有很好的魯棒性,因此該值越大越好。learning_rate
:爲浮點數。默認爲1.它用於每一步的步長,防止步長太大而跨過了極值點。通常learning_rate越小,則需要的基礎迴歸器數量就會越多,因此在learning_rate和n_estimators之間會有所折中。learning_rate爲下式中的v。 max_depth
:一個整數或者None,指定每一個基礎決策樹模型的最大深度。如果max_leaf_noeds不是None,則忽略此參數。criterion
:字符串。用來衡量切分的質量。默認爲‘friedman_mse’。可以爲: min_samples_split
:一個整數,指定了每個基礎決策樹模型分裂所需最小樣本數。min_samples_leaf
:一個整數,指定了每個基礎決策樹模型葉節點所包含的最小樣本數。min_weight_fraction_leaf
:一個浮點數。葉節點的最小加權權重。當不提供sample_weight時,樣本的權重是相等的。subsample
:一個浮點數,指定了提取原始訓練集中的一個子集用於訓練基礎決策樹,該參數就是子集佔原始訓練集的大小,
max_features
:一個整數,浮點數或者None。代表節點分裂是參與判斷的最大特徵數。整數爲個數,浮點數爲所佔比重。max_leaf_nodes
:爲整數或者None,指定了每個基礎決策樹模型的最大葉節點數量。min_impurity_split
:一個浮點數,指定在樹生長的過程中,節點分裂的閾值,默認爲1e-7。init
:一個基礎迴歸器對象或者None,該回歸器對象用於執行初始的預測。如果爲None,則使用loss.init_estimator。verbose
:一個整數,如果爲0則不輸出日誌,如果爲1,則每隔一段時間輸出日誌,大於1輸出日誌會更頻繁。warm_start
:布爾值。當爲True是,則繼續使用上一次訓練結果。否則重新開始訓練。random_state
:一個整數或者一個RandomState實例,或者None。 presort
:一個布爾值或者‘auto’,是否對數據進行顯示以加速最佳分割的發現。默認情況下,自動模式將在密集的數據上使用presorting,默認爲稀疏數據的正常排序。在稀疏的數據上設置顯示值將會導致錯誤。feature_importance_
:一個數組,給出了每個特徵的重要性(值越高重要性越大)。oob_improvement_
:一個數組,給出了每增加一棵基礎決策樹,在包外估計(即測試集)的損失函數的改善情況。(及損失函數減少值)。train_score_
:一個數組,給出每增加一棵基礎決策樹,在訓練集上的損失函數的值。loss
:具體損失函數對象。init
:初始預測使用的分類器。estimators_
:一個數組,給出了每個基礎決策樹。fit(X,y)
:訓練模型。predict(X)
:用模型進行預測,返回預測值。predict_log_proba(X)
:返回一個數組,數組的元素依次是X預測爲各個類別的概率的對數值。predict_proba(X)
:返回一個數組,數組的元素依次是X預測爲各個類別的概率值。score(X,y)
:返回性能得分。設預測集爲