国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

工具系列:PyCaret介紹_Fugue 集成_Spark、Dask分布式訓(xùn)練

這篇具有很好參考價(jià)值的文章主要介紹了工具系列:PyCaret介紹_Fugue 集成_Spark、Dask分布式訓(xùn)練。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。


Fugue 是一個(gè)低代碼的統(tǒng)一接口,用于不同的計(jì)算框架,如 Spark、Dask。PyCaret 使用 Fugue 來(lái)支持分布式計(jì)算場(chǎng)景。

1、分布式計(jì)算場(chǎng)景

(1)分類

讓我們從最標(biāo)準(zhǔn)的例子開(kāi)始,代碼與本地版本完全相同,沒(méi)有任何魔法。

# 導(dǎo)入所需的庫(kù)
from pycaret.datasets import get_data  # 導(dǎo)入獲取數(shù)據(jù)的函數(shù)
from pycaret.classification import *  # 導(dǎo)入分類模型

# 使用get_data函數(shù)獲取名為"juice"的數(shù)據(jù)集,并設(shè)置verbose參數(shù)為False,表示不顯示詳細(xì)信息
data = get_data("juice", verbose=False)

# 設(shè)置目標(biāo)變量為'Purchase',n_jobs參數(shù)為1表示使用單個(gè)進(jìn)程
setup(data=data, target='Purchase', n_jobs=1)

# 獲取前5個(gè)模型的名稱,并存儲(chǔ)在test_models變量中
test_models = models().index.tolist()[:5]

pycaret怎么用,# PyCaret,分布式,大數(shù)據(jù),數(shù)據(jù)挖掘

compare_model如果您不想使用分布式系統(tǒng),也完全相同。

# 比較模型函數(shù)
compare_models(include=test_models, n_select=2)

pycaret怎么用,# PyCaret,分布式,大數(shù)據(jù),數(shù)據(jù)挖掘

Processing:   0%|          | 0/26 [00:00<?, ?it/s]





[LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
                    intercept_scaling=1, l1_ratio=None, max_iter=1000,
                    multi_class='auto', n_jobs=None, penalty='l2',
                    random_state=4292, solver='lbfgs', tol=0.0001, verbose=0,
                    warm_start=False),
 DecisionTreeClassifier(ccp_alpha=0.0, class_weight=None, criterion='gini',
                        max_depth=None, max_features=None, max_leaf_nodes=None,
                        min_impurity_decrease=0.0, min_samples_leaf=1,
                        min_samples_split=2, min_weight_fraction_leaf=0.0,
                        random_state=4292, splitter='best')]

現(xiàn)在讓我們將其分布式,作為一個(gè)玩具案例,在dask上。唯一改變的是一個(gè)額外的參數(shù)parallel_backend。

# 導(dǎo)入所需的庫(kù)
from pycaret.parallel import FugueBackend

# 使用FugueBackend作為并行計(jì)算的后端

# compare_models函數(shù)用于比較多個(gè)模型的性能
# include參數(shù)指定要比較的模型列表
# n_select參數(shù)指定要選擇的最佳模型數(shù)量
# parallel參數(shù)指定使用的并行計(jì)算后端,這里使用FugueBackend("dask")表示使用Dask作為并行計(jì)算后端

compare_models(include=test_models, n_select=2, parallel=FugueBackend("dask"))

pycaret怎么用,# PyCaret,分布式,大數(shù)據(jù),數(shù)據(jù)挖掘

[LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
                    intercept_scaling=1, l1_ratio=None, max_iter=1000,
                    multi_class='auto', n_jobs=None, penalty='l2',
                    random_state=4292, solver='lbfgs', tol=0.0001, verbose=0,
                    warm_start=False),
 DecisionTreeClassifier(ccp_alpha=0.0, class_weight=None, criterion='gini',
                        max_depth=None, max_features=None, max_leaf_nodes=None,
                        min_impurity_decrease=0.0, min_samples_leaf=1,
                        min_samples_split=2, min_weight_fraction_leaf=0.0,
                        random_state=4292, splitter='best')]

為了使用Spark作為執(zhí)行引擎,您必須能夠訪問(wèn)一個(gè)Spark集群,并且必須擁有一個(gè)SparkSession,讓我們初始化一個(gè)本地的Spark會(huì)話。

# 導(dǎo)入SparkSession模塊
from pyspark.sql import SparkSession

# 創(chuàng)建或獲取SparkSession對(duì)象
spark = SparkSession.builder.getOrCreate()

現(xiàn)在只需將parallel_backend更改為此會(huì)話對(duì)象,即可在Spark上運(yùn)行。您必須明白這只是一個(gè)玩具案例。在實(shí)際情況中,您需要擁有一個(gè)指向真實(shí)Spark集群的SparkSession,才能享受Spark的強(qiáng)大功能。

# 調(diào)用 compare_models 函數(shù),傳入?yún)?shù) include=test_models、n_select=2 和 parallel=FugueBackend(spark)
compare_models(include=test_models, n_select=2, parallel=FugueBackend(spark))

pycaret怎么用,# PyCaret,分布式,大數(shù)據(jù),數(shù)據(jù)挖掘

[LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
                    intercept_scaling=1, l1_ratio=None, max_iter=1000,
                    multi_class='auto', n_jobs=None, penalty='l2',
                    random_state=4292, solver='lbfgs', tol=0.0001, verbose=0,
                    warm_start=False),
 DecisionTreeClassifier(ccp_alpha=0.0, class_weight=None, criterion='gini',
                        max_depth=None, max_features=None, max_leaf_nodes=None,
                        min_impurity_decrease=0.0, min_samples_leaf=1,
                        min_samples_split=2, min_weight_fraction_leaf=0.0,
                        random_state=4292, splitter='best')]

最后,你可以使用pull命令來(lái)獲取指標(biāo)表格。

pull()

pycaret怎么用,# PyCaret,分布式,大數(shù)據(jù),數(shù)據(jù)挖掘

(2)回歸

回歸問(wèn)題與分類問(wèn)題遵循相同的模式。

# 導(dǎo)入所需的庫(kù)
from pycaret.datasets import get_data  # 導(dǎo)入獲取數(shù)據(jù)的函數(shù)
from pycaret.regression import *  # 導(dǎo)入回歸模型

# 設(shè)置數(shù)據(jù)和目標(biāo)變量
setup(data=get_data("insurance", verbose=False), target='charges', n_jobs=1)

# 獲取前5個(gè)模型
test_models = models().index.tolist()[:5]

pycaret怎么用,# PyCaret,分布式,大數(shù)據(jù),數(shù)據(jù)挖掘

compare_model如果您不想使用分布式系統(tǒng),也完全相同。

# 比較模型性能的函數(shù)
# 參數(shù):
# include: 需要比較的模型列表
# n_select: 需要選擇的模型數(shù)量
# sort: 按照哪個(gè)指標(biāo)進(jìn)行排序,默認(rèn)為平均絕對(duì)誤差(MAE)

compare_models(include=test_models, n_select=2, sort="MAE")

pycaret怎么用,# PyCaret,分布式,大數(shù)據(jù),數(shù)據(jù)挖掘

Processing:   0%|          | 0/26 [00:00<?, ?it/s]





[Lars(copy_X=True, eps=2.220446049250313e-16, fit_intercept=True, fit_path=True,
      jitter=None, n_nonzero_coefs=500, normalize='deprecated',
      precompute='auto', random_state=3514, verbose=False),
 LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1,
                  normalize='deprecated', positive=False)]

現(xiàn)在讓我們將其分布式,作為一個(gè)玩具案例,在dask上。唯一改變的是一個(gè)額外的參數(shù)parallel_backend。

# 導(dǎo)入所需的庫(kù)
from pycaret.parallel import FugueBackend

# 使用FugueBackend作為并行計(jì)算的后端

# compare_models函數(shù)用于比較多個(gè)模型的性能,并選擇性能最好的幾個(gè)模型
# include參數(shù)指定要比較的模型列表
# n_select參數(shù)指定要選擇的模型數(shù)量
# sort參數(shù)指定按照哪個(gè)指標(biāo)進(jìn)行排序,這里選擇按照平均絕對(duì)誤差(MAE)進(jìn)行排序
# parallel參數(shù)指定使用的并行計(jì)算后端,這里選擇使用FugueBackend("dask")作為并行計(jì)算的后端
compare_models(include=test_models, n_select=2, sort="MAE", parallel=FugueBackend("dask"))

pycaret怎么用,# PyCaret,分布式,大數(shù)據(jù),數(shù)據(jù)挖掘

[Lars(copy_X=True, eps=2.220446049250313e-16, fit_intercept=True, fit_path=True,
      jitter=None, n_nonzero_coefs=500, normalize='deprecated',
      precompute='auto', random_state=3514, verbose=False),
 LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1,
                  normalize='deprecated', positive=False)]

為了使用Spark作為執(zhí)行引擎,您必須能夠訪問(wèn)一個(gè)Spark集群,并且必須擁有一個(gè)SparkSession,讓我們初始化一個(gè)本地的Spark會(huì)話。

# 導(dǎo)入SparkSession模塊
from pyspark.sql import SparkSession

# 創(chuàng)建或獲取一個(gè)SparkSession對(duì)象
spark = SparkSession.builder.getOrCreate()

現(xiàn)在只需將parallel_backend更改為此會(huì)話對(duì)象,即可在Spark上運(yùn)行。您必須明白這只是一個(gè)玩具案例。在真實(shí)情況下,您需要擁有一個(gè)指向真實(shí)Spark集群的SparkSession,才能享受Spark的強(qiáng)大功能。

# 調(diào)用compare_models函數(shù),傳入?yún)?shù)include=test_models、n_select=2、sort="MAE"和parallel=FugueBackend(spark)
compare_models(include=test_models, n_select=2, sort="MAE", parallel=FugueBackend(spark))

pycaret怎么用,# PyCaret,分布式,大數(shù)據(jù),數(shù)據(jù)挖掘

[Lars(copy_X=True, eps=2.220446049250313e-16, fit_intercept=True, fit_path=True,
      jitter=None, n_nonzero_coefs=500, normalize='deprecated',
      precompute='auto', random_state=3514, verbose=False),
 LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1,
                  normalize='deprecated', positive=False)]

最后,你可以使用pull命令來(lái)獲取指標(biāo)表格。

pull()

pycaret怎么用,# PyCaret,分布式,大數(shù)據(jù),數(shù)據(jù)挖掘

(3)時(shí)間序列

它遵循與分類相同的模式。

# 導(dǎo)入所需的庫(kù)和模塊
from pycaret.datasets import get_data  # 導(dǎo)入獲取數(shù)據(jù)的函數(shù)
from pycaret.time_series import *  # 導(dǎo)入時(shí)間序列模塊

# 創(chuàng)建時(shí)間序列預(yù)測(cè)實(shí)驗(yàn)對(duì)象
exp = TSForecastingExperiment()

# 設(shè)置實(shí)驗(yàn)參數(shù)
exp.setup(
    data=get_data('airline', verbose=False),  # 獲取數(shù)據(jù)集,此處使用航空數(shù)據(jù)集
    fh=12,  # 設(shè)置預(yù)測(cè)的未來(lái)時(shí)間步數(shù)為12
    fold=3,  # 設(shè)置交叉驗(yàn)證的折數(shù)為3
    fig_kwargs={'renderer': 'notebook'},  # 設(shè)置繪圖參數(shù),此處使用notebook作為渲染器
    session_id=42  # 設(shè)置隨機(jī)種子為42,保證實(shí)驗(yàn)的可重復(fù)性
)

# 獲取前5個(gè)模型的名稱
test_models = exp.models().index.tolist()[:5]

pycaret怎么用,# PyCaret,分布式,大數(shù)據(jù),數(shù)據(jù)挖掘

# 比較模型性能并選擇最佳模型

# 使用exp.compare_models函數(shù)比較模型性能,并選擇最佳的3個(gè)模型作為基準(zhǔn)模型
# 參數(shù)include=test_models表示只比較test_models中的模型
# 參數(shù)n_select=3表示選擇性能最好的3個(gè)模型作為最佳基準(zhǔn)模型
best_baseline_models = exp.compare_models(include=test_models, n_select=3)
best_baseline_models

pycaret怎么用,# PyCaret,分布式,大數(shù)據(jù),數(shù)據(jù)挖掘

Processing:   0%|          | 0/27 [00:00<?, ?it/s]





[ARIMA(maxiter=50, method='lbfgs', order=(1, 0, 0), out_of_sample_size=0,
       scoring='mse', scoring_args=None, seasonal_order=(0, 1, 0, 12),
       start_params=None, suppress_warnings=False, trend=None,
       with_intercept=True),
 NaiveForecaster(sp=12, strategy='last', window_length=None),
 PolynomialTrendForecaster(degree=1, regressor=None, with_intercept=True)]
# 導(dǎo)入所需的模塊
from pycaret.parallel import FugueBackend

# 使用FugueBackend作為并行計(jì)算的后端
# FugueBackend是一個(gè)用于分布式計(jì)算的后端,可以使用Dask或Ray來(lái)實(shí)現(xiàn)并行計(jì)算
# 這里使用了"Dask"作為FugueBackend的參數(shù),表示使用Dask來(lái)進(jìn)行并行計(jì)算

# 使用exp.compare_models函數(shù)比較模型性能,并選擇最佳的3個(gè)模型
# include參數(shù)指定要比較的模型列表,test_models是一個(gè)包含待比較模型的列表
# n_select參數(shù)指定要選擇的最佳模型的數(shù)量,這里選擇了3個(gè)最佳模型
# parallel參數(shù)指定并行計(jì)算的后端,這里使用了之前創(chuàng)建的FugueBackend對(duì)象

# 將比較結(jié)果保存在best_baseline_models變量中,該變量將包含最佳的3個(gè)模型
best_baseline_models = exp.compare_models(include=test_models, n_select=3, parallel=FugueBackend("dask"))
best_baseline_models

pycaret怎么用,# PyCaret,分布式,大數(shù)據(jù),數(shù)據(jù)挖掘

[ARIMA(maxiter=50, method='lbfgs', order=(1, 0, 0), out_of_sample_size=0,
       scoring='mse', scoring_args=None, seasonal_order=(0, 1, 0, 12),
       start_params=None, suppress_warnings=False, trend=None,
       with_intercept=True),
 NaiveForecaster(sp=12, strategy='last', window_length=None),
 PolynomialTrendForecaster(degree=1, regressor=None, with_intercept=True)]
# 導(dǎo)入SparkSession模塊
from pyspark.sql import SparkSession

# 創(chuàng)建或獲取SparkSession對(duì)象
spark = SparkSession.builder.getOrCreate()
# 導(dǎo)入所需的模塊
from pycaret.parallel import FugueBackend

# 使用FugueBackend作為并行計(jì)算的后端

# 使用exp.compare_models函數(shù)來(lái)比較模型性能并選擇最佳模型
# include參數(shù)指定要比較的模型列表,這里選擇了test_models列表的前兩個(gè)模型
# n_select參數(shù)指定要選擇的最佳模型數(shù)量,這里選擇了3個(gè)最佳模型
# parallel參數(shù)指定并行計(jì)算的后端,這里使用了FugueBackend(spark)

# 將比較結(jié)果保存在best_baseline_models變量中
best_baseline_models = exp.compare_models(include=test_models[:2], n_select=3, parallel=FugueBackend(spark))
best_baseline_models

pycaret怎么用,# PyCaret,分布式,大數(shù)據(jù),數(shù)據(jù)挖掘

[NaiveForecaster(sp=1, strategy='last', window_length=None),
 NaiveForecaster(sp=1, strategy='mean', window_length=None)]
# 從exp對(duì)象中調(diào)用pull()方法
exp.pull()

pycaret怎么用,# PyCaret,分布式,大數(shù)據(jù),數(shù)據(jù)挖掘

2、分布式應(yīng)用技巧

(1)一個(gè)更實(shí)際的案例

上面的例子都是純粹的玩具,為了在分布式系統(tǒng)中使事情完美運(yùn)行,你必須注意一些事情

(2) 在設(shè)置中使用lambda而不是dataframe

如果你直接在setup中提供一個(gè)dataframe,這個(gè)數(shù)據(jù)集將需要發(fā)送到所有的工作節(jié)點(diǎn)。如果dataframe是1G,你有100個(gè)工作節(jié)點(diǎn),那么你的驅(qū)動(dòng)機(jī)器可能需要發(fā)送高達(dá)100G的數(shù)據(jù)(取決于具體框架的實(shí)現(xiàn)),這個(gè)數(shù)據(jù)傳輸本身就成為了一個(gè)瓶頸。相反,如果你提供一個(gè)lambda函數(shù),它不會(huì)改變本地計(jì)算的情況,但驅(qū)動(dòng)程序只會(huì)將函數(shù)引用發(fā)送給工作節(jié)點(diǎn),每個(gè)工作節(jié)點(diǎn)將負(fù)責(zé)自己加載數(shù)據(jù),因此驅(qū)動(dòng)程序端沒(méi)有大量的流量。

(3) 保持確定性

你應(yīng)該始終使用session_id來(lái)使分布式計(jì)算具有確定性。

(4) 設(shè)置n_jobs

在想要分布式運(yùn)行某些任務(wù)時(shí),明確設(shè)置n_jobs非常重要,這樣它就不會(huì)過(guò)度使用本地/遠(yuǎn)程資源。這也可以避免資源爭(zhēng)用,并加快計(jì)算速度。

# 導(dǎo)入所需的庫(kù)
from pycaret.datasets import get_data  # 導(dǎo)入獲取數(shù)據(jù)的函數(shù)
from pycaret.classification import *  # 導(dǎo)入分類模塊

# 設(shè)置函數(shù),用于獲取數(shù)據(jù)
# 使用get_data函數(shù)獲取名為"juice"的數(shù)據(jù)集,關(guān)閉冗長(zhǎng)輸出(verbose=False),關(guān)閉數(shù)據(jù)集的概要信息(profile=False)
# 設(shè)置目標(biāo)變量為'Purchase'
# 設(shè)置會(huì)話ID為0,以確保結(jié)果的可重復(fù)性
# 設(shè)置使用的CPU核心數(shù)為1
setup(data_func=lambda: get_data("juice", verbose=False, profile=False), target='Purchase', session_id=0, n_jobs=1);

pycaret怎么用,# PyCaret,分布式,大數(shù)據(jù),數(shù)據(jù)挖掘

(4)設(shè)置適當(dāng)?shù)呐看笮?/h3>

batch_size參數(shù)有助于在負(fù)載均衡和開(kāi)銷之間進(jìn)行調(diào)整。對(duì)于每個(gè)批次,設(shè)置將只調(diào)用一次。所以

選擇 負(fù)載均衡 開(kāi)銷 最佳情況
較小的批量大小 更好 更差 訓(xùn)練時(shí)間 >> 數(shù)據(jù)加載時(shí)間 或者 模型數(shù)量 ~= 工作進(jìn)程數(shù)量
較大的批量大小 更差 更好 訓(xùn)練時(shí)間 << 數(shù)據(jù)加載時(shí)間 或者 模型數(shù)量 >> 工作進(jìn)程數(shù)量

默認(rèn)值設(shè)置為1,表示我們希望獲得最佳的負(fù)載均衡。

(5) 顯示進(jìn)度

在開(kāi)發(fā)中,您可以通過(guò)display_remote=True啟用可視效果,但同時(shí)您還必須啟用Fugue回調(diào),以便驅(qū)動(dòng)程序可以監(jiān)視工作進(jìn)度。但建議在生產(chǎn)環(huán)境中關(guān)閉顯示。

# 導(dǎo)入所需的模塊
from pycaret.parallel import FugueBackend

# 定義配置參數(shù)
fconf = {
    "fugue.rpc.server": "fugue.rpc.flask.FlaskRPCServer",  # 保持該值不變
    "fugue.rpc.flask_server.host": "0.0.0.0",  # 驅(qū)動(dòng)程序的 IP 地址,工作節(jié)點(diǎn)可以訪問(wèn)
    "fugue.rpc.flask_server.port": "3333",  # 驅(qū)動(dòng)程序上的開(kāi)放端口
    "fugue.rpc.flask_server.timeout": "2 sec",  # 工作節(jié)點(diǎn)與驅(qū)動(dòng)程序通信的超時(shí)時(shí)間
}

# 創(chuàng)建 FugueBackend 對(duì)象
be = FugueBackend("dask", fconf, display_remote=True, batch_size=3, top_only=False)

# 使用 FugueBackend 對(duì)象進(jìn)行模型比較
compare_models(n_select=2, parallel=be)

pycaret怎么用,# PyCaret,分布式,大數(shù)據(jù),數(shù)據(jù)挖掘

Processing:   0%|          | 0/14 [00:00<?, ?it/s]















[RidgeClassifier(alpha=1.0, class_weight=None, copy_X=True, fit_intercept=True,
                 max_iter=None, normalize='deprecated', positive=False,
                 random_state=0, solver='auto', tol=0.001),
 LinearDiscriminantAnalysis(covariance_estimator=None, n_components=None,
                            priors=None, shrinkage=None, solver='svd',
                            store_covariance=False, tol=0.0001)]

(6)自定義指標(biāo)

您可以像以前一樣添加自定義指標(biāo)。但是為了使評(píng)分器可分發(fā),它必須是可序列化的。一個(gè)常見(jiàn)的函數(shù)應(yīng)該沒(méi)問(wèn)題,但是如果在函數(shù)內(nèi)部使用了一些不可序列化的全局變量(例如一個(gè)RLock對(duì)象),可能會(huì)引發(fā)問(wèn)題。因此,請(qǐng)盡量使自定義函數(shù)獨(dú)立于全局變量。

# 定義一個(gè)名為score_dummy的函數(shù),用于計(jì)算模型的得分
# 參數(shù)y_true表示真實(shí)值,y_pred表示預(yù)測(cè)值,axis表示計(jì)算得分的軸
def score_dummy(y_true, y_pred, axis=0):
    return 0.0

# 添加一個(gè)名為'mydummy'的指標(biāo)
# 參數(shù)id表示指標(biāo)的唯一標(biāo)識(shí)符
# 參數(shù)name表示指標(biāo)的名稱
# 參數(shù)score_func表示計(jì)算指標(biāo)得分的函數(shù),這里使用之前定義的score_dummy函數(shù)
# 參數(shù)target表示指標(biāo)的計(jì)算目標(biāo),這里是預(yù)測(cè)值
# 參數(shù)greater_is_better表示得分是否越大越好,這里設(shè)置為False,表示得分越小越好
add_metric(id='mydummy',
           name='DUMMY',
           score_func=score_dummy,
           target='pred',
           greater_is_better=False)
Name                                                             DUMMY
Display Name                                                     DUMMY
Score Function                <function score_dummy at 0x7f8aa0dc0ca0>
Scorer               make_scorer(score_dummy, greater_is_better=False)
Target                                                            pred
Args                                                                {}
Greater is Better                                                False
Multiclass                                                        True
Custom                                                            True
Name: mydummy, dtype: object

在類實(shí)例中添加一個(gè)函數(shù)也是可以的,但是請(qǐng)確保類中的所有成員變量都是可序列化的。

# 獲取模型列表的前5個(gè)模型
test_models = models().index.tolist()[:5]

# 比較模型
# include參數(shù)指定要比較的模型列表
# n_select參數(shù)指定要選擇的模型數(shù)量
# sort參數(shù)指定排序方式,這里使用"DUMMY"表示不進(jìn)行排序
# parallel參數(shù)指定使用的并行計(jì)算后端,這里使用Dask作為后端
compare_models(include=test_models, n_select=2, sort="DUMMY", parallel=FugueBackend("dask"))

pycaret怎么用,# PyCaret,分布式,大數(shù)據(jù),數(shù)據(jù)挖掘

[DecisionTreeClassifier(ccp_alpha=0.0, class_weight=None, criterion='gini',
                        max_depth=None, max_features=None, max_leaf_nodes=None,
                        min_impurity_decrease=0.0, min_samples_leaf=1,
                        min_samples_split=2, min_weight_fraction_leaf=0.0,
                        random_state=0, splitter='best'),
 LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
                    intercept_scaling=1, l1_ratio=None, max_iter=1000,
                    multi_class='auto', n_jobs=None, penalty='l2',
                    random_state=0, solver='lbfgs', tol=0.0001, verbose=0,
                    warm_start=False)]
pull()

pycaret怎么用,# PyCaret,分布式,大數(shù)據(jù),數(shù)據(jù)挖掘

# 定義一個(gè)Scores類
class Scores:
    # 定義一個(gè)名為score_dummy2的方法,用于計(jì)算得分
    # 參數(shù)y_true表示真實(shí)標(biāo)簽,y_prob表示預(yù)測(cè)概率,axis表示軸
    def score_dummy2(self, y_true, y_prob, axis=0):
        return 1.0

# 創(chuàng)建一個(gè)Scores對(duì)象
scores = Scores()

# 添加一個(gè)指標(biāo)
add_metric(
    id='mydummy2',  # 指標(biāo)的唯一標(biāo)識(shí)符
    name='DUMMY2',  # 指標(biāo)的名稱
    score_func=scores.score_dummy2,  # 指標(biāo)的計(jì)算函數(shù)
    target='pred_proba',  # 指標(biāo)的目標(biāo)值,這里是預(yù)測(cè)概率
    greater_is_better=True,  # 指標(biāo)的得分越大越好
)
Name                                                            DUMMY2
Display Name                                                    DUMMY2
Score Function       <bound method Scores.score_dummy2 of <__main__...
Scorer               make_scorer(score_dummy2, needs_proba=True, er...
Target                                                      pred_proba
Args                                                                {}
Greater is Better                                                 True
Multiclass                                                        True
Custom                                                            True
Name: mydummy2, dtype: object

# 調(diào)用compare_models函數(shù),傳入?yún)?shù)include=test_models、n_select=2、sort="DUMMY2"和parallel=FugueBackend("dask")
compare_models(include=test_models, n_select=2, sort="DUMMY2", parallel=FugueBackend("dask"))

pycaret怎么用,# PyCaret,分布式,大數(shù)據(jù),數(shù)據(jù)挖掘

[DecisionTreeClassifier(ccp_alpha=0.0, class_weight=None, criterion='gini',
                        max_depth=None, max_features=None, max_leaf_nodes=None,
                        min_impurity_decrease=0.0, min_samples_leaf=1,
                        min_samples_split=2, min_weight_fraction_leaf=0.0,
                        random_state=0, splitter='best'),
 LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
                    intercept_scaling=1, l1_ratio=None, max_iter=1000,
                    multi_class='auto', n_jobs=None, penalty='l2',
                    random_state=0, solver='lbfgs', tol=0.0001, verbose=0,
                    warm_start=False)]
# 這是一個(gè)函數(shù)定義,函數(shù)名為pull
def pull():
    # 這是一個(gè)空函數(shù),沒(méi)有任何代碼
    pass

pycaret怎么用,# PyCaret,分布式,大數(shù)據(jù),數(shù)據(jù)挖掘

(7) Spark設(shè)置

強(qiáng)烈建議每個(gè)Spark執(zhí)行器上只有一個(gè)worker,這樣worker可以充分利用所有的CPU(設(shè)置spark.task.cpus)。當(dāng)你這樣做時(shí),你應(yīng)該明確地在setup中設(shè)置n_jobs為每個(gè)執(zhí)行器的CPU數(shù)量。

executor_cores = 4

spark = SparkSession.builder.config("spark.task.cpus", executor_cores).config("spark.executor.cores", executor_cores).getOrCreate()

setup(data=get_data("juice", verbose=False, profile=False), target = 'Purchase', session_id=0, n_jobs=executor_cores)

compare_models(n_select=2, parallel=FugueBackend(spark))

(8) Dask

Dask有假分布式模式,例如默認(rèn)的(多線程)和多進(jìn)程模式。默認(rèn)模式可以正常工作(但實(shí)際上是按順序運(yùn)行的),而多進(jìn)程模式目前對(duì)PyCaret不起作用,因?yàn)樗鼤?huì)干擾PyCaret的全局變量。另一方面,任何Spark執(zhí)行模式都可以正常工作。

(9) 本地并行化

對(duì)于嘗試非平凡數(shù)據(jù)和模型的實(shí)際用途,本地并行化(最簡(jiǎn)單的方法是使用上面顯示的本地Dask作為后端)通常沒(méi)有性能優(yōu)勢(shì)。因?yàn)樵谟?xùn)練過(guò)程中很容易超載CPU,增加資源爭(zhēng)用。本地并行化的價(jià)值在于驗(yàn)證代碼,并讓你相信分布式環(huán)境將在更短的時(shí)間內(nèi)提供預(yù)期的結(jié)果。

(10) 如何開(kāi)發(fā)

分布式系統(tǒng)很強(qiáng)大,但你必須遵循一些良好的實(shí)踐來(lái)使用它們:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-760410.html

  1. 從小到大: 最初,你必須從一小組數(shù)據(jù)開(kāi)始,例如在compare_model中將你想嘗試的模型限制為一小組廉價(jià)模型,當(dāng)你驗(yàn)證它們工作正常后,可以切換到更大的模型集合。
  2. 從本地到分布式: 你應(yīng)該按照這個(gè)順序進(jìn)行:先在本地驗(yàn)證小數(shù)據(jù),然后在分布式環(huán)境下驗(yàn)證小數(shù)據(jù),最后在分布式環(huán)境下驗(yàn)證大數(shù)據(jù)。當(dāng)前的設(shè)計(jì)使過(guò)渡無(wú)縫。你可以按順序進(jìn)行這些操作:parallel=None -> parallel=FugueBackend() -> parallel=FugueBackend(spark)。在第二步中,你可以替換為本地的SparkSession或本地的dask。

到了這里,關(guān)于工具系列:PyCaret介紹_Fugue 集成_Spark、Dask分布式訓(xùn)練的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • PyCaret 3.0介紹 -- Python中的開(kāi)源、低代碼機(jī)器學(xué)習(xí)庫(kù)

    PyCaret 3.0介紹 -- Python中的開(kāi)源、低代碼機(jī)器學(xué)習(xí)庫(kù)

    PyCaret是一個(gè)Python中的開(kāi)源、低代碼機(jī)器學(xué)習(xí)庫(kù),可以自動(dòng)化機(jī)器學(xué)習(xí)工作流。它是一個(gè)端到端的機(jī)器學(xué)習(xí)和模型管理工具,可以成倍地加快實(shí)驗(yàn)周期,提高工作效率。 與其他開(kāi)源機(jī)器學(xué)習(xí)庫(kù)相比,PyCaret是一個(gè)替代的低代碼庫(kù),可以用幾行代碼替換數(shù)百行代碼。這使得實(shí)驗(yàn)以

    2024年02月06日
    瀏覽(16)
  • Apache SeaTunnel:新一代高性能、分布式、海量數(shù)據(jù)集成工具從入門到實(shí)踐

    Apache SeaTunnel:新一代高性能、分布式、海量數(shù)據(jù)集成工具從入門到實(shí)踐

    Apache SeaTunnel 原名 Waterdrop,在 2021 年 10 月更名為 SeaTunnel 并申請(qǐng)加入 Apache孵化器。目前 Apache SeaTunnel 已發(fā)布 40+個(gè)版本,并在大量企業(yè)生產(chǎn)實(shí)踐中使用,包括 J.P.Morgan、字節(jié)跳動(dòng)、Stey、中國(guó)移動(dòng)、富士康、騰訊云、國(guó)雙、中科大數(shù)據(jù)研究院、360、Shoppe、Bilibili、新浪、搜狗、唯

    2024年02月03日
    瀏覽(24)
  • 【大數(shù)據(jù)】什么是數(shù)據(jù)集成?(SeaTunnel 集成工具介紹)

    【大數(shù)據(jù)】什么是數(shù)據(jù)集成?(SeaTunnel 集成工具介紹)

    數(shù)據(jù)集成是指將來(lái)自不同數(shù)據(jù)源的數(shù)據(jù)整合到一起形成一個(gè)統(tǒng)一的數(shù)據(jù)集 。這個(gè)過(guò)程包括從不同的數(shù)據(jù)源中收集數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行清洗、轉(zhuǎn)換、重構(gòu)和整合,以便能夠在一個(gè)統(tǒng)一的數(shù)據(jù)倉(cāng)庫(kù)或數(shù)據(jù)湖中進(jìn)行存儲(chǔ)和管理。 數(shù)據(jù)集成可以幫助企業(yè)更好地理解和利用他們的數(shù)據(jù),

    2024年02月08日
    瀏覽(26)
  • 【Java系列】SpringBoot 集成MongoDB 詳細(xì)介紹

    【Java系列】SpringBoot 集成MongoDB 詳細(xì)介紹

    目錄 寫在前面 一、步驟介紹 步驟 1: 添加 MongoDB 依賴 步驟 2: 配置 MongoDB 連接信息 步驟 3: 創(chuàng)建實(shí)體類 步驟 4: 創(chuàng)建 Repository 接口 步驟 5: 使用 Repository 進(jìn)行操作 二、特殊處理 在Spring Boot中集成MongoDB的過(guò)程相對(duì)簡(jiǎn)單,以下是一個(gè)基本的步驟指南。確保項(xiàng)目已經(jīng)使用了Spring Boo

    2024年02月04日
    瀏覽(22)
  • 【AIGC調(diào)研系列】AIGC大模型如何與sonar等工具集成

    AIGC大模型與Sonar等工具集成的方式主要體現(xiàn)在通過(guò)自動(dòng)化和智能化的方式提升代碼質(zhì)量檢測(cè)、內(nèi)容生成和SEO優(yōu)化等方面。具體來(lái)說(shuō),可以通過(guò)以下幾種方式實(shí)現(xiàn)集成: 這表明AIGC大模型可以通過(guò)集成現(xiàn)有的自動(dòng)化工具(如Sonar)來(lái)提高軟件開(kāi)發(fā)過(guò)程中的代碼質(zhì)量控制。 內(nèi)容生

    2024年03月18日
    瀏覽(24)
  • 結(jié)合云計(jì)算的最新技術(shù)和現(xiàn)狀,介紹云計(jì)算基礎(chǔ)知識(shí)、開(kāi)源分布式數(shù)據(jù)庫(kù)Clickhouse、可視化數(shù)據(jù)分析工具、分布式鏈路跟蹤系統(tǒng)Pinpoint、數(shù)據(jù)湖存儲(chǔ)系統(tǒng)Pulsar等

    作者:禪與計(jì)算機(jī)程序設(shè)計(jì)藝術(shù) 2019年,“云計(jì)算”將成為“經(jīng)濟(jì)全球化”的熱門詞匯之一,2020年全球云計(jì)算市場(chǎng)規(guī)模預(yù)計(jì)達(dá)到1萬(wàn)億美元。中國(guó)是繼美國(guó)、英國(guó)之后,成為全球第四大云服務(wù)提供商。華為、騰訊、阿里巴巴等互聯(lián)網(wǎng)巨頭紛紛布局云計(jì)算領(lǐng)域,各家公司紛紛推出

    2024年02月08日
    瀏覽(29)
  • 【Rust教程 | 基礎(chǔ)系列2 | Cargo工具】Cargo介紹及使用

    【Rust教程 | 基礎(chǔ)系列2 | Cargo工具】Cargo介紹及使用

    在編程世界中,工具的選擇與使用同樣重要,甚至有時(shí)候比編程語(yǔ)言本身更為重要。對(duì)于Rust來(lái)說(shuō),Cargo就是這樣一款強(qiáng)大的工具。本文將詳細(xì)介紹Cargo的各項(xiàng)功能,并通過(guò)實(shí)例演示如何使用這些功能。希望通過(guò)本文,讀者能夠熟練掌握Cargo的使用,從而更好地進(jìn)行Rust開(kāi)發(fā)。

    2024年02月15日
    瀏覽(70)
  • 【Spark分布式內(nèi)存計(jì)算框架——Spark 基礎(chǔ)環(huán)境】1. Spark框架概述

    【Spark分布式內(nèi)存計(jì)算框架——Spark 基礎(chǔ)環(huán)境】1. Spark框架概述

    第一章 說(shuō)明 整個(gè)Spark 框架分為如下7個(gè)部分,總的來(lái)說(shuō)分為Spark 基礎(chǔ)環(huán)境、Spark 離線分析和Spark實(shí)時(shí)分析三個(gè)大的方面,如下圖所示: 第一方面、Spark 基礎(chǔ)環(huán)境 主要講述Spark框架安裝部署及開(kāi)發(fā)運(yùn)行,如何在本地模式和集群模式運(yùn)行,使用spark-shell及IDEA開(kāi)發(fā)應(yīng)用程序,測(cè)試及

    2024年02月11日
    瀏覽(92)
  • Spark單機(jī)偽分布式環(huán)境搭建、完全分布式環(huán)境搭建、Spark-on-yarn模式搭建

    Spark單機(jī)偽分布式環(huán)境搭建、完全分布式環(huán)境搭建、Spark-on-yarn模式搭建

    搭建Spark需要先配置好scala環(huán)境。三種Spark環(huán)境搭建互不關(guān)聯(lián),都是從零開(kāi)始搭建。 如果將文章中的配置文件修改內(nèi)容復(fù)制粘貼的話,所有配置文件添加的內(nèi)容后面的注釋記得刪除,可能會(huì)報(bào)錯(cuò)。保險(xiǎn)一點(diǎn)刪除最好。 上傳安裝包解壓并重命名 rz上傳 如果沒(méi)有安裝rz可以使用命

    2024年02月06日
    瀏覽(105)
  • Hadoop(偽分布式)+Spark(local模式)搭建Hadoop和Spark組合環(huán)境

    Hadoop(偽分布式)+Spark(local模式)搭建Hadoop和Spark組合環(huán)境

    環(huán)境 使用 Ubuntu 14.04 64位 作為系統(tǒng)環(huán)境(Ubuntu 12.04,Ubuntu16.04 也行,32位、64位均可),請(qǐng)自行安裝系統(tǒng)。 Hadoop版本 : Hadoop 2.7.4 創(chuàng)建hadoop用戶 如果你安裝 Ubuntu 的時(shí)候不是用的 \\\"hadoop\\\" 用戶,那么需要增加一個(gè)名為 hadoop 的用戶。 首先按 ctrl+alt+t 打開(kāi)終端窗口,輸入如下命令創(chuàng)

    2023年04月08日
    瀏覽(38)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包