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

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

Dec 30, 2020 pm 05:41 PM
python ビッグデータ データ分析

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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ランプアーキテクチャの下でnode.jsまたはPythonサービスを効率的に統合する方法は? ランプアーキテクチャの下でnode.jsまたはPythonサービスを効率的に統合する方法は? Apr 01, 2025 pm 02:48 PM

多くのウェブサイト開発者は、ランプアーキテクチャの下でnode.jsまたはPythonサービスを統合する問題に直面しています:既存のランプ(Linux Apache MySQL PHP)アーキテクチャWebサイトのニーズ...

Scapy Crawlerを使用するときにパイプラインの永続的なストレージファイルを書き込めない理由は何ですか? Scapy Crawlerを使用するときにパイプラインの永続的なストレージファイルを書き込めない理由は何ですか? Apr 01, 2025 pm 04:03 PM

Scapy Crawlerを使用する場合、パイプラインの永続的なストレージファイルを書くことができない理由は?ディスカッションデータクローラーにScapy Crawlerを使用することを学ぶとき、あなたはしばしば...

Pythonクロスプラットフォームデスクトップアプリケーション開発:どのGUIライブラリが最適ですか? Pythonクロスプラットフォームデスクトップアプリケーション開発:どのGUIライブラリが最適ですか? Apr 01, 2025 pm 05:24 PM

Pythonクロスプラットフォームデスクトップアプリケーション開発ライブラリの選択多くのPython開発者は、WindowsシステムとLinuxシステムの両方で実行できるデスクトップアプリケーションを開発したいと考えています...

PythonプロセスプールがTCPリクエストを同時に処理し、クライアントが立ち往生する理由は何ですか? PythonプロセスプールがTCPリクエストを同時に処理し、クライアントが立ち往生する理由は何ですか? Apr 01, 2025 pm 04:09 PM

Python Process Poolは、クライアントが立ち往生する原因となる同時TCP要求を処理します。ネットワークプログラミングにPythonを使用する場合、同時のTCP要求を効率的に処理することが重要です。 ...

Python functools.partialオブジェクトによって内部的にカプセル化された元の関数を表示する方法は? Python functools.partialオブジェクトによって内部的にカプセル化された元の関数を表示する方法は? Apr 01, 2025 pm 04:15 PM

python functools.partialオブジェクトのpython functools.partialを使用してPythonを使用する視聴方法を深く探索します。

Python hourglassグラフ図面:可変未定義エラーを避ける方法は? Python hourglassグラフ図面:可変未定義エラーを避ける方法は? Apr 01, 2025 pm 06:27 PM

Python:Hourglassグラフィック図面と入力検証この記事では、Python NoviceがHourglass Graphic Drawingプログラムで遭遇する可変定義の問題を解決します。コード...

Pythonの高解像度画像の処理を最適化して、正確な白い円形領域を見つける方法は? Pythonの高解像度画像の処理を最適化して、正確な白い円形領域を見つける方法は? Apr 01, 2025 pm 06:12 PM

白い領域を見つけるためにPythonで高解像度の画像を処理する方法は? 9000x7000ピクセルの高解像度画像の処理、2つの写真を正確に見つける方法...

Pythonで大規模な製品データセットを効率的にカウントしてソートするにはどうすればよいですか? Pythonで大規模な製品データセットを効率的にカウントしてソートするにはどうすればよいですか? Apr 01, 2025 pm 08:03 PM

データの変換と統計:大規模なデータセットの効率的な処理この記事では、製品情報を含むデータリストを別の含有しているものに変換する方法を詳細に紹介します...

See all articles