ホームページ > バックエンド開発 > Python チュートリアル > Amway は誰もが Python ビッグデータ分析アーティファクトを持っています

Amway は誰もが Python ビッグデータ分析アーティファクトを持っています

coldplay.xixi
リリース: 2020-12-30 17:41:36
転載
3318 人が閲覧しました

Python ビデオ チュートリアルこのコラムではビッグ データ分析成果物を紹介します

Amway は誰もが Python ビッグデータ分析アーティファクトを持っています

推奨 (無料) ) : python ビデオ チュートリアル

Pandas の実行速度を向上させる方法は、これまでに何度も紹介されており、その中で頻繁に言及されていますDask、これに接したことがなければ、多くの友人はそれについてあまり知らないかもしれません。今日はこのアーティファクトをお勧めしたいと思います。

1.ダスクとは何ですか?

PandasNumpy はすべて誰もがよく知っています。コードの実行後、データは RAM にロードされます。データ セットが特に大きい場合は、 、メモリの急上昇に注目します。しかし、処理対象のデータが RAM に適していない場合があり、今回は Dask が来ます。

Dask はオープンソースで無料です。これは、Numpy、Pandas、Scikit-Learn などの他のコミュニティ プロジェクトと連携して開発されています。

公式: https://dask.org/

Dask PandasDataFrameNumpyArray をサポート データ構造であり、ローカル コンピューター上で実行することも、クラスター上で実行するように拡張することもできます。

基本的には、コードを 1 回記述するだけで、通常の Pythonic 構文を使用して、ローカルで実行するか、マルチノード クラスターにデプロイします。これ自体は素晴らしい機能ですが、最も素晴らしい機能ではありません。

Dask の最も素晴らしい機能は次のとおりです。 これは、私たちがすでに使用しているほとんどのツールと互換性があり、わずかな量で独自のノートブックを使用できます。コンピュータですでに利用可能な処理能力により、コードが並列実行されます。データを並列処理すると、実行時間、待ち時間が減り、分析時間が長くなります。

Dask におけるデータ処理の一般的なプロセスは次のとおりです。
Amway は誰もが Python ビッグデータ分析アーティファクトを持っています

#2. Dask はどのような既存のツールをサポートしていますか?

これも私が気に入っている点です。DaskPython データ処理およびモデリング ライブラリ パッケージと互換性があり、ライブラリ パッケージの API に従っているからです。 , Python ユーザーにとって学習コストが非常に低くなります。 HadoopSpark などのビッグ データ処理には、高い学習しきい値と時間コストがかかります。

現在、DaskpandasNumpySklearnXGBoost、# をサポートできます。 ##XArrayRAPIDS など、少なくとも一般的なデータ処理、モデリング分析については、これらだけで十分だと思います。これらは完全にカバーされています。
Amway は誰もが Python ビッグデータ分析アーティファクトを持っています

3. Dask のインストール

conda または pip を使用するか、ソースコード daskをインストールします。

conda install dask
ログイン後にコピー

dask には多くの依存関係があるため、次のコードをクイック インストールに使用することもできます。これにより、Dask の実行に必要な最小限の依存関係のセットがインストールされます。

conda install dask-core
ログイン後にコピー
もう 1 つのオプションは、ソースからインストールすることです。

git clone https://github.com/dask/dask.git
cd dask
python -m pip install .
ログイン後にコピー

4. Dask の使い方は?

Numpy、pandas

DaskRAM を超えるデータを保存できる 3 つの並列コレクションを紹介します。これらのコレクションはDataFrame バッグ配列。これらの各コレクション タイプは、RAM とハード ディスク間で分割されたデータや、クラスター内の複数のノードに分散されたデータを処理できます。

Dask の使用法は非常に明確です。NumPy 配列を使用する場合は、Dask 配列から開始し、 Pandas を使用する場合は、 DataFrameDask DataFrame などで開始します。

import dask.array as da
x = da.random.uniform(low=0, high=10, size=(10000, 10000),  # normal numpy code
                      chunks=(1000, 1000))  # break into chunks of size 1000x1000

y = x + x.T - x.mean(axis=0)  # Use normal syntax for high level algorithms

# DataFrames
import dask.dataframe as dd
df = dd.read_csv('2018-*-*.csv', parse_dates='timestamp',  # normal Pandas code
                 blocksize=64000000)  # break text into 64MB chunks

s = df.groupby('name').balance.mean()  # Use normal syntax for high level algorithms

# Bags / lists
import dask.bag as db
b = db.read_text('*.json').map(json.loads)
total = (b.filter(lambda d: d['name'] == 'Alice')
          .map(lambda d: d['balance'])
          .sum())
ログイン後にコピー
これらの高レベル インターフェイスは、わずかな変更を加えて標準インターフェイスを複製します。元のプロジェクトのほとんどの API では、これらのインターフェイスは大きなデータ セットを自動的に並行して処理します。実装はそれほど複雑ではありません。

Dask## の doc ドキュメントを参照して、段階的に完了できます。 #。

Delayed

非常に強力な

Dask

Delay 関数について話しましょう。

Dask.layed

は、既存のコードを並列化するためのシンプルかつ強力な方法です。結果をすぐに計算せず、後で並列ハードウェアで実行されるタスクとして計算結果をグラフに記録するため、遅延と呼ばれます。 既存の

dask.array

または dask.dataframe が問題に適していない場合があります。その場合は、より単純な dask を使用できます。遅延インターフェイスはカスタム アルゴリズムを並列化します。たとえば、次の例を考えてみましょう。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">def inc(x):     return x + 1 def double(x):     return x * 2 def add(x, y):     return x + y data = [1, 2, 3, 4, 5] output = [] for x in data:     a = inc(x)     b = double(x)     c = add(a, b)     output.append(c) total = sum(output) 45</pre><div class="contentsignin">ログイン後にコピー</div></div> <p>上面代码在单个线程中按顺序运行。但是,我们看到其中很多可以并行执行。<code>Dask delayed函数可修饰incdouble这些函数,以便它们可延迟运行,而不是立即执行函数,它将函数及其参数放入计算任务图中。

我们简单修改代码,用delayed函数包装一下。

import dask

output = []
for x in data:
    a = dask.delayed(inc)(x)
    b = dask.delayed(double)(x)
    c = dask.delayed(add)(a, b)
    output.append(c)

total = dask.delayed(sum)(output)
ログイン後にコピー

代码运行后incdoubleaddsum都还没有发生,而是生成一个计算的任务图交给了total。然后我们用visualizatize看下任务图。

total.visualize()
ログイン後にコピー

Amway は誰もが Python ビッグデータ分析アーティファクトを持っています

上图明显看到了并行的可能性,所以毫不犹豫,使用compute进行并行计算,这时才完成了计算。

>>> total.compute()
45
ログイン後にコピー

由于数据集较小无法比较时间,这里只介绍下使用方法,具体可自己动手实践下。

Sklearn机器学习

关于机器学习的并行化执行,由于内容较多,东哥会在另一篇文章展开。这里简单说下一下dask-learn

dask-learn项目是与Sklearn开发人员协作完成的。现在可实现并行化有Scikit-learnPipelineGridsearchCVRandomSearchCV以及这些的变体,它们可以更好地处理嵌套的并行操作。

因此,如果你将sklearn替换为dklearn,那么速度将会提升很多。

# from sklearn.grid_search import GridSearchCV
  from dklearn.grid_search import GridSearchCV
# from sklearn.pipeline import Pipeline
  from dklearn.pipeline import Pipeline
下面是一个使用Pipeline的示例,其中应用了PCA和逻辑回归。
from sklearn.datasets import make_classification

X, y = make_classification(n_samples=10000,
                           n_features=500,
                           n_classes=2,
                           n_redundant=250,
                           random_state=42)

from sklearn import linear_model, decomposition
from sklearn.pipeline import Pipeline
from dklearn.pipeline import Pipeline

logistic = linear_model.LogisticRegression()
pca = decomposition.PCA()
pipe = Pipeline(steps=[('pca', pca),
                       ('logistic', logistic)])


grid = dict(pca__n_components=[50, 100, 150, 250],
            logistic__C=[1e-4, 1.0, 10, 1e4],
            logistic__penalty=['l1', 'l2'])

# from sklearn.grid_search import GridSearchCV
from dklearn.grid_search import GridSearchCV

estimator = GridSearchCV(pipe, grid)

estimator.fit(X, y)
ログイン後にコピー

结果是:sklearn会在40秒钟左右执行此计算,而dask-learn替代品大约需要10秒钟。
另外,如果添加以下代码可以连接到集群,通过Client可以展示整个计算过程的dashboard,由Bokeh实现。

from dask.distributed import Client
c = Client('scheduler-address:8786')
ログイン後にコピー

Amway は誰もが Python ビッグデータ分析アーティファクトを持っています

5、总结

以上就是Dask的简单介绍,Dask的功能是非常强大的,且说明文档也非常全,既有示例又有解释。感兴趣的朋友可以自行去官网或者GitHub学习,东哥下次分享使用Dask进行机器学习的一些实例。

以上がAmway は誰もが Python ビッグデータ分析アーティファクトを持っていますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート