1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        用 XGBoost 開(kāi)發(fā)隨機(jī)森林集成

        共 15783字,需瀏覽 32分鐘

         ·

        2021-05-16 16:08

        XGBoost庫(kù)提供了梯度增強(qiáng)的有效實(shí)現(xiàn),可以將其配置為訓(xùn)練隨機(jī)森林集成。隨機(jī)森林是比梯度增強(qiáng)更簡(jiǎn)單的算法。XGBoost庫(kù)允許以重新利用和利用庫(kù)中實(shí)現(xiàn)的計(jì)算效率來(lái)訓(xùn)練隨機(jī)森林模型的方式來(lái)訓(xùn)練模型。
        在本教程中,您將發(fā)現(xiàn)如何使用XGBoost庫(kù)來(lái)開(kāi)發(fā)隨機(jī)森林集成。完成本教程后,您將知道:
        • XGBoost提供了梯度增強(qiáng)的有效實(shí)現(xiàn),可以將其配置為訓(xùn)練隨機(jī)森林集成。
        • 如何使用XGBoost API訓(xùn)練和評(píng)估隨機(jī)森林集成模型以進(jìn)行分類(lèi)和回歸。
        • 如何調(diào)整XGBoost隨機(jī)森林集成模型的超參數(shù)。
        教程概述
        本教程分為五個(gè)部分。他們是:
        • XGBoost的隨機(jī)森林
        • 隨機(jī)森林的XGBoost API
        • XGBoost分類(lèi)隨機(jī)森林
        • XGBoost回歸隨機(jī)森林
        • XGBoost隨機(jī)森林超參數(shù)
        XGBoost的隨機(jī)森林
        XGBoost是一個(gè)開(kāi)放源代碼庫(kù),它提供了梯度增強(qiáng)集成算法的有效實(shí)現(xiàn),該算法簡(jiǎn)稱(chēng)為Extreme Gradient Boosting或XGBoost。因此,XGBoost指的是項(xiàng)目,庫(kù)和算法本身。梯度提升是分類(lèi)和回歸預(yù)測(cè)建模項(xiàng)目的首選算法,因?yàn)樗ǔ?梢詫?shí)現(xiàn)最佳性能。梯度提升的問(wèn)題在于訓(xùn)練模型通常非常慢,并且大型數(shù)據(jù)集激怒了這個(gè)問(wèn)題。XGBoost通過(guò)引入許多技術(shù)來(lái)極大地加速模型的訓(xùn)練,并常常導(dǎo)致更好的模型整體性能,從而解決了梯度增強(qiáng)的速度問(wèn)題。
        您可以在本教程中了解有關(guān)XGBoost的更多信息:

        XGBoost的實(shí)用機(jī)器學(xué)習(xí)簡(jiǎn)介

        https://machinelearningmastery.com/gentle-introduction-xgboost-applied-machine-learning/

        除了支持梯度增強(qiáng)之外,還可以將核心XGBoost算法配置為支持其他類(lèi)型的樹(shù)集成算法,例如隨機(jī)森林。隨機(jī)森林是決策樹(shù)算法的集合。每個(gè)決策樹(shù)都適合訓(xùn)練數(shù)據(jù)集的引導(dǎo)樣本。這是訓(xùn)練數(shù)據(jù)集的樣本,其中可以多次選擇給定的示例(行),稱(chēng)為替換樣本。重要的是,要考慮樹(shù)中每個(gè)分割點(diǎn)的輸入變量(列)的隨機(jī)子集。這樣可以確保添加到合奏中的每棵樹(shù)都是熟練的,但是在隨機(jī)方式上是不同的。在每個(gè)分割點(diǎn)考慮的特征數(shù)量通常只是一小部分。例如,在分類(lèi)問(wèn)題上,一種常見(jiàn)的啟發(fā)式方法是選擇特征數(shù)量等于特征總數(shù)的平方根,例如如果數(shù)據(jù)集具有20個(gè)輸入變量,則為4。您可以在本教程中了解有關(guān)隨機(jī)森林集成算法的更多信息:

        如何使用Python開(kāi)發(fā)隨機(jī)森林集成體

        https://machinelearningmastery.com/random-forest-ensemble-in-python/

        使用XGBoost庫(kù)訓(xùn)練隨機(jī)森林集成的主要好處是速度。與其他實(shí)現(xiàn)(例如本機(jī)scikit-learn實(shí)現(xiàn))相比,預(yù)期使用起來(lái)會(huì)更快?,F(xiàn)在我們知道XGBoost提供了相對(duì)于基準(zhǔn)性能而言是已知的。
        隨機(jī)森林的XGBoost API
        第一步是安裝XGBoost庫(kù)。我建議從命令行使用以下命令來(lái)使用pip軟件包管理器:
        sudo pip install xgboost
        安裝完成后,我們可以加載該庫(kù)并使用Python腳本打印版本,以確認(rèn)它已正確安裝。
        # check xgboost version
        import xgboost
        # display version
        print(xgboost.__version__)
        運(yùn)行腳本將加載XGBoost庫(kù)并打印該庫(kù)的版本號(hào)。
        您的版本號(hào)應(yīng)該相同或更高。
        1.0.2
        XGBoost庫(kù)提供了兩個(gè)包裝器類(lèi),這些包裝器類(lèi)允許該庫(kù)提供的隨機(jī)森林實(shí)現(xiàn)與scikit-learn機(jī)器學(xué)習(xí)庫(kù)一起使用。
        它們分別是用于分類(lèi)和回歸的XGBRFClassifier和XGBRFRegressor類(lèi)。
        # define the model
        model = XGBRFClassifier()
        可以通過(guò)“ n_estimators”自變量設(shè)置集合中使用的樹(shù)數(shù),并且通常會(huì)增加該樹(shù)數(shù),直到模型未觀察到性能進(jìn)一步提高為止。通常使用數(shù)百或數(shù)千棵樹(shù)。
        # define the model
        model = XGBRFClassifier(n_estimators=100)
        XGBoost不支持為每個(gè)決策樹(shù)繪制引導(dǎo)程序樣本。這是庫(kù)的限制。取而代之的是,可以通過(guò)“子樣本”參數(shù)將訓(xùn)練數(shù)據(jù)集的子樣本指定為0.0到1.0(訓(xùn)練數(shù)據(jù)集中的行的100%)之間的百分比,而無(wú)需替換。建議使用0.8或0.9的值,以確保數(shù)據(jù)集足夠大以訓(xùn)練熟練的模型,但又足夠不同以將整體引入某種多樣性。
        # define the model
        model = XGBRFClassifier(n_estimators=100, subsample=0.9)
        訓(xùn)練模型時(shí),每個(gè)分割點(diǎn)使用的特征數(shù)量可以通過(guò)“ colsample_bynode”參數(shù)指定,并采用數(shù)據(jù)集中列數(shù)的百分比(從0.0到1.0)(訓(xùn)練數(shù)據(jù)集中輸入行的100%)。
        如果我們?cè)谟?xùn)練數(shù)據(jù)集中有20個(gè)輸入變量,并且分類(lèi)問(wèn)題的啟發(fā)式是要素?cái)?shù)量的平方根,則可以將其設(shè)置為sqrt(20)/ 20,或大約4/20或0.2。
        # define the model
        model = XGBRFClassifier(n_estimators=100, subsample=0.9, colsample_bynode=0.2)
        您可以在此處了解更多有關(guān)如何為隨機(jī)森林合奏配置XGBoost庫(kù)的信息:

        XGBoost中的隨機(jī)森林

        https://xgboost.readthedocs.io/en/latest/tutorials/rf.html

        現(xiàn)在,我們已經(jīng)熟悉了如何使用XGBoost API定義隨機(jī)森林集合,讓我們來(lái)看一些可行的示例。
        XGBoost分類(lèi)隨機(jī)森林
        在本節(jié)中,我們將研究為分類(lèi)問(wèn)題開(kāi)發(fā)XGBoost隨機(jī)森林集合。
        首先,我們可以使用make_classification()函數(shù)創(chuàng)建具有1,000個(gè)示例和20個(gè)輸入特征的綜合二進(jìn)制分類(lèi)問(wèn)題。
        下面列出了完整的示例。
        # test classification dataset
        from sklearn.datasets import make_classification
        # define dataset
        X, y = make_classification(n_samples=1000, n_features=20, n_informative=15, n_redundant=5, random_state=7)
        # summarize the dataset
        print(X.shape, y.shape)
        運(yùn)行示例將創(chuàng)建數(shù)據(jù)集并總結(jié)輸入和輸出組件的形狀。
        (1000, 20) (1000,)
        接下來(lái),我們可以在該數(shù)據(jù)集上評(píng)估XGBoost隨機(jī)森林算法。
        我們將使用重復(fù)的分層k折交叉驗(yàn)證(具有3個(gè)重復(fù)和10折)對(duì)模型進(jìn)行評(píng)估。我們將報(bào)告所有重復(fù)和折疊中模型準(zhǔn)確性的均值和標(biāo)準(zhǔn)差。
        # evaluate xgboost random forest algorithm for classification
        from numpy import mean
        from numpy import std
        from sklearn.datasets import make_classification
        from sklearn.model_selection import cross_val_score
        from sklearn.model_selection import RepeatedStratifiedKFold
        from xgboost import XGBRFClassifier
        # define dataset
        X, y = make_classification(n_samples=1000, n_features=20, n_informative=15, n_redundant=5, random_state=7)
        # define the model
        model = XGBRFClassifier(n_estimators=100, subsample=0.9, colsample_bynode=0.2)
        # define the model evaluation procedure
        cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1)
        # evaluate the model and collect the scores
        n_scores = cross_val_score(model, X, y, scoring='accuracy', cv=cv, n_jobs=-1)
        # report performance
        print('Mean Accuracy: %.3f (%.3f)' % (mean(n_scores), std(n_scores)))
        運(yùn)行示例將報(bào)告模型的均值和標(biāo)準(zhǔn)差準(zhǔn)確性。
        注意:由于算法或評(píng)估程序的隨機(jī)性,或者數(shù)值精度的差異,您的結(jié)果可能會(huì)有所不同。考慮運(yùn)行該示例幾次并比較平均結(jié)果。
        在這種情況下,我們可以看到XGBoost隨機(jī)森林集成實(shí)現(xiàn)了大約89.1%的分類(lèi)精度。
        Mean Accuracy: 0.891 (0.036)
        我們還可以將XGBoost隨機(jī)森林模型用作最終模型,并進(jìn)行分類(lèi)預(yù)測(cè)。
        首先,將XGBoost隨機(jī)森林集合適合所有可用數(shù)據(jù),然后可以調(diào)用prepare()函數(shù)對(duì)新數(shù)據(jù)進(jìn)行預(yù)測(cè)。
        下面的示例在我們的二進(jìn)制分類(lèi)數(shù)據(jù)集中展示了這一點(diǎn)。
        # make predictions using xgboost random forest for classification
        from numpy import asarray
        from sklearn.datasets import make_classification
        from xgboost import XGBRFClassifier
        # define dataset
        X, y = make_classification(n_samples=1000, n_features=20, n_informative=15, n_redundant=5, random_state=7)
        # define the model
        model = XGBRFClassifier(n_estimators=100, subsample=0.9, colsample_bynode=0.2)
        # fit the model on the whole dataset
        model.fit(X, y)
        # define a row of data
        row = [0.2929949,-4.21223056,-1.288332,-2.17849815,-0.64527665,2.58097719,0.28422388,-7.1827928,-1.91211104,2.73729512,0.81395695,3.96973717,-2.66939799,3.34692332,4.19791821,0.99990998,-0.30201875,-4.43170633,-2.82646737,0.44916808]
        row = asarray([row])
        # make a prediction
        yhat = model.predict(row)
        # summarize the prediction
        print('Predicted Class: %d' % yhat[0])
        運(yùn)行示例將XGBoost隨機(jī)森林集成模型適合整個(gè)數(shù)據(jù)集,然后將其用于對(duì)新的數(shù)據(jù)行進(jìn)行預(yù)測(cè),就像我們?cè)趹?yīng)用程序中使用模型時(shí)一樣。
        Predicted Class: 1
        既然我們熟悉如何使用隨機(jī)森林進(jìn)行分類(lèi),那么讓我們看一下用于回歸的API。
        XGBoost回歸隨機(jī)森林
        在本節(jié)中,我們將研究為回歸問(wèn)題開(kāi)發(fā)XGBoost隨機(jī)森林集合。首先,我們可以使用make_regression()函數(shù)創(chuàng)建具有1000個(gè)示例和20個(gè)輸入要素的綜合回歸問(wèn)題。下面列出了完整的示例。
        # test regression dataset
        from sklearn.datasets import make_regression
        # define dataset
        X, y = make_regression(n_samples=1000, n_features=20, n_informative=15, noise=0.1, random_state=7)
        # summarize the dataset
        print(X.shape, y.shape)
        運(yùn)行示例將創(chuàng)建數(shù)據(jù)集并總結(jié)輸入和輸出組件的形狀。
        (1000, 20) (1000,)
        接下來(lái),我們可以在該數(shù)據(jù)集上評(píng)估XGBoost隨機(jī)森林集合。
        正如我們?cè)谏弦还?jié)所做的那樣,我們將使用重復(fù)的k倍交叉驗(yàn)證(三個(gè)重復(fù)和10倍)來(lái)評(píng)估模型。
        我們將報(bào)告所有重復(fù)和折疊過(guò)程中模型的平均絕對(duì)誤差(MAE)。scikit-learn庫(kù)使MAE變?yōu)樨?fù)數(shù),從而使其最大化而不是最小化。這意味著較大的負(fù)MAE會(huì)更好,并且理想模型的MAE為0。
        下面列出了完整的示例。
        # evaluate xgboost random forest ensemble for regression
        from numpy import mean
        from numpy import std
        from sklearn.datasets import make_regression
        from sklearn.model_selection import cross_val_score
        from sklearn.model_selection import RepeatedKFold
        from xgboost import XGBRFRegressor
        # define dataset
        X, y = make_regression(n_samples=1000, n_features=20, n_informative=15, noise=0.1, random_state=7)
        # define the model
        model = XGBRFRegressor(n_estimators=100, subsample=0.9, colsample_bynode=0.2)
        # define the model evaluation procedure
        cv = RepeatedKFold(n_splits=10, n_repeats=3, random_state=1)
        # evaluate the model and collect the scores
        n_scores = cross_val_score(model, X, y, scoring='neg_mean_absolute_error', cv=cv, n_jobs=-1)
        # report performance
        print('MAE: %.3f (%.3f)' % (mean(n_scores), std(n_scores)))
        運(yùn)行示例將報(bào)告模型的均值和標(biāo)準(zhǔn)差MAE。
        注意:由于算法或評(píng)估程序的隨機(jī)性,或者數(shù)值精度的差異,您的結(jié)果可能會(huì)有所不同。考慮運(yùn)行該示例幾次并比較平均結(jié)果。
        在這種情況下,我們可以看到具有默認(rèn)超參數(shù)的隨機(jī)森林集合達(dá)到了約108的MAE。
        MAE: -108.290 (5.647)
        我們還可以將XGBoost隨機(jī)森林集合用作最終模型,并進(jìn)行回歸預(yù)測(cè)。
        首先,將隨機(jī)森林集合適合所有可用數(shù)據(jù),然后可以調(diào)用predict()函數(shù)對(duì)新數(shù)據(jù)進(jìn)行預(yù)測(cè)。
        下面的示例在我們的回歸數(shù)據(jù)集中展示了這一點(diǎn)。
        # gradient xgboost random forest for making predictions for regression
        from numpy import asarray
        from sklearn.datasets import make_regression
        from xgboost import XGBRFRegressor
        # define dataset
        X, y = make_regression(n_samples=1000, n_features=20, n_informative=15, noise=0.1, random_state=7)
        # define the model
        model = XGBRFRegressor(n_estimators=100, subsample=0.9, colsample_bynode=0.2)
        # fit the model on the whole dataset
        model.fit(X, y)
        # define a single row of data
        row = [0.20543991,-0.97049844,-0.81403429,-0.23842689,-0.60704084,-0.48541492,0.53113006,2.01834338,-0.90745243,-1.85859731,-1.02334791,-0.6877744,0.60984819,-0.70630121,-1.29161497,1.32385441,1.42150747,1.26567231,2.56569098,-0.11154792]
        row = asarray([row])
        # make a prediction
        yhat = model.predict(row)
        # summarize the prediction
        print('Prediction: %d' % yhat[0])
        運(yùn)行示例將XGBoost隨機(jī)森林集成模型適合整個(gè)數(shù)據(jù)集,然后將其用于對(duì)新的數(shù)據(jù)行進(jìn)行預(yù)測(cè),就像我們?cè)趹?yīng)用程序中使用模型時(shí)一樣。
        Prediction: 17
        現(xiàn)在,我們已經(jīng)熟悉了如何開(kāi)發(fā)和評(píng)估XGBoost隨機(jī)森林集成,讓我們來(lái)看一下配置模型。
        XGBoost隨機(jī)森林超參數(shù)
        在本節(jié)中,我們將仔細(xì)研究一些您應(yīng)該考慮針對(duì)隨機(jī)森林集合進(jìn)行調(diào)優(yōu)的超參數(shù)及其對(duì)模型性能的影響。
        探索樹(shù)木數(shù)量
        樹(shù)的數(shù)量是為XGBoost隨機(jī)森林配置的另一個(gè)關(guān)鍵超參數(shù)。通常,增加樹(shù)的數(shù)量,直到模型性能穩(wěn)定為止。直覺(jué)可能表明,更多的樹(shù)木將導(dǎo)致過(guò)度擬合,盡管事實(shí)并非如此??紤]到學(xué)習(xí)算法的隨機(jī)性,裝袋算法和隨機(jī)森林算法似乎都不太適合過(guò)度擬合訓(xùn)練數(shù)據(jù)集??梢酝ㄟ^(guò)“ n_estimators”參數(shù)設(shè)置樹(shù)的數(shù)量,默認(rèn)為100。下面的示例探討值在10到1,000之間的樹(shù)木數(shù)量的影響。
        # explore xgboost random forest number of trees effect on performance
        from numpy import mean
        from numpy import std
        from sklearn.datasets import make_classification
        from sklearn.model_selection import cross_val_score
        from sklearn.model_selection import RepeatedStratifiedKFold
        from xgboost import XGBRFClassifier
        from matplotlib import pyplot
         
        # get the dataset
        def get_dataset():
         X, y = make_classification(n_samples=1000, n_features=20, n_informative=15, n_redundant=5, random_state=7)
         return X, y
         
        # get a list of models to evaluate
        def get_models():
         models = dict()
         # define the number of trees to consider
         n_trees = [105010050010005000]
         for v in n_trees:
          models[str(v)] = XGBRFClassifier(n_estimators=v, subsample=0.9, colsample_bynode=0.2)
         return models
         
        # evaluate a give model using cross-validation
        def evaluate_model(model, X, y):
         # define the model evaluation procedure
         cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1)
         # evaluate the model
         scores = cross_val_score(model, X, y, scoring='accuracy', cv=cv, n_jobs=-1)
         return scores
         
        # define dataset
        X, y = get_dataset()
        # get the models to evaluate
        models = get_models()
        # evaluate the models and store results
        results, names = list(), list()
        for name, model in models.items():
         # evaluate the model and collect the results
         scores = evaluate_model(model, X, y)
         # store the results
         results.append(scores)
         names.append(name)
         # summarize performance along the way
         print('>%s %.3f (%.3f)' % (name, mean(scores), std(scores)))
        # plot model performance for comparison
        pyplot.boxplot(results, labels=names, showmeans=True)
        pyplot.show()
        首先運(yùn)行示例將報(bào)告每個(gè)已配置數(shù)量的樹(shù)的平均準(zhǔn)確性。
        注意:由于算法或評(píng)估程序的隨機(jī)性,或者數(shù)值精度的差異,您的結(jié)果可能會(huì)有所不同??紤]運(yùn)行該示例幾次并比較平均結(jié)果。
        在這種情況下,我們可以看到性能在大約500棵樹(shù)之后上升并保持穩(wěn)定。平均準(zhǔn)確度分?jǐn)?shù)在500棵,1,000棵和5,000棵樹(shù)上波動(dòng),這可能是統(tǒng)計(jì)噪聲。
        >10 0.868 (0.030)
        >50 0.887 (0.034)
        >100 0.891 (0.036)
        >500 0.893 (0.033)
        >1000 0.895 (0.035)
        >5000 0.894 (0.036)
        創(chuàng)建箱須圖以分配每種配置數(shù)量的樹(shù)的準(zhǔn)確性得分。

        探索特征數(shù)量
        為每個(gè)分割點(diǎn)隨機(jī)采樣的要素?cái)?shù)量可能是為隨機(jī)森林配置的最重要的要素。通過(guò)“ colsample_bynode”參數(shù)進(jìn)行設(shè)置,該參數(shù)占輸入要素?cái)?shù)量(從0到1)的百分比。下面的示例探討了在每個(gè)分割點(diǎn)隨機(jī)選擇的特征數(shù)量對(duì)模型準(zhǔn)確性的影響。我們將嘗試從0.0到1.0的值以0.1的增量進(jìn)行嘗試,盡管我們期望低于0.2或0.3的值會(huì)產(chǎn)生良好或最佳的性能,因?yàn)檫@可以轉(zhuǎn)換為輸入要素?cái)?shù)量的平方根,這是常見(jiàn)的 啟發(fā)式。
        # explore xgboost random forest number of features effect on performance
        from numpy import mean
        from numpy import std
        from numpy import arange
        from sklearn.datasets import make_classification
        from sklearn.model_selection import cross_val_score
        from sklearn.model_selection import RepeatedStratifiedKFold
        from xgboost import XGBRFClassifier
        from matplotlib import pyplot
         
        # get the dataset
        def get_dataset():
         X, y = make_classification(n_samples=1000, n_features=20, n_informative=15, n_redundant=5, random_state=7)
         return X, y
         
        # get a list of models to evaluate
        def get_models():
         models = dict()
         for v in arange(0.11.10.1):
          key = '%.1f' % v
          models[key] = XGBRFClassifier(n_estimators=100, subsample=0.9, colsample_bynode=v)
         return models
         
        # evaluate a give model using cross-validation
        def evaluate_model(model, X, y):
         # define the model evaluation procedure
         cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1)
         # evaluate the model
         scores = cross_val_score(model, X, y, scoring='accuracy', cv=cv, n_jobs=-1)
         return scores
         
        # define dataset
        X, y = get_dataset()
        # get the models to evaluate
        models = get_models()
        # evaluate the models and store results
        results, names = list(), list()
        for name, model in models.items():
         # evaluate the model and collect the results
         scores = evaluate_model(model, X, y)
         # store the results
         results.append(scores)
         names.append(name)
         # summarize performance along the way
         print('>%s %.3f (%.3f)' % (name, mean(scores), std(scores)))
        # plot model performance for comparison
        pyplot.boxplot(results, labels=names, showmeans=True)
        pyplot.show()
        首先運(yùn)行示例將報(bào)告每種功能集大小的平均準(zhǔn)確性。
        注意:由于算法或評(píng)估程序的隨機(jī)性,或者數(shù)值精度的差異,您的結(jié)果可能會(huì)有所不同??紤]運(yùn)行該示例幾次并比較平均結(jié)果。
        在這種情況下,隨著集成成員使用更多輸入功能,我們可以看到平均模型性能下降的總體趨勢(shì)。
        結(jié)果表明,在這種情況下,建議值為0.2將是一個(gè)不錯(cuò)的選擇。
        >0.1 0.889 (0.032)
        >0.2 0.891 (0.036)
        >0.3 0.887 (0.032)
        >0.4 0.886 (0.030)
        >0.5 0.878 (0.033)
        >0.6 0.874 (0.031)
        >0.7 0.869 (0.027)
        >0.8 0.867 (0.027)
        >0.9 0.856 (0.023)
        >1.0 0.846 (0.027)
        創(chuàng)建箱須圖以分配每種功能集大小的準(zhǔn)確性得分。
        我們可以看到性能的趨勢(shì)隨著決策樹(shù)考慮的功能數(shù)量的減少而降低。


        者:沂水寒城,CSDN博客專(zhuān)家,個(gè)人研究方向:機(jī)器學(xué)習(xí)、深度學(xué)習(xí)、NLP、CV

        Blog: http://yishuihancheng.blog.csdn.net


        贊 賞 作 者



        更多閱讀



        用 XGBoost 進(jìn)行時(shí)間序列預(yù)測(cè)


        5分鐘掌握 Python 隨機(jī)爬山算法


        5分鐘完全讀懂關(guān)聯(lián)規(guī)則挖掘算法

        特別推薦




        點(diǎn)擊下方閱讀原文加入社區(qū)會(huì)員

        瀏覽 108
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            成人免费黄色视频 | 高端极品外围女酒店啪啪 | 中文字幕国产乱伦 | 成人片免费观看在线毛片 | 亚洲AV激情无码专区在线播放 | 国产寡妇婬乱A毛片91精品 | 日逼视频网 | 国產一級片麻豆傳媒 | 国产精品探花视频 | aa久久 |