フッターコンテンツにスキップ
PYTHONヘルプ

Stellargraph Python(開発者向けのしくみ)

現実において千里眼に最も近いものは何ですか? それは、グラフに構造化されたデータに基づいて予測を行う能力です。基本的には、情報をノードやエッジとして解釈し、グラフ内の関係や相互作用が貴重な洞察を提供することを含んでいます。 通常の表形式や順序データ表現に焦点を当てる方法とは異なり、グラフ機械学習ワークフローではこれらの接続を活用して隠れたパターンを発見します。

このため、グラフ畳み込みニューラルネットワーク(GCN)やグラフ注意に基づく手法がグラフデータに適応され、ノード分類やシーケンス予測、リンク予測、グラフカテゴリ化などのタスクに機械学習モデルが取り組むことができるようになりました。 これらの技術は、特にソーシャルネットワークや推薦システムのような、複雑な関係の微妙な理解を必要とする分野において、システムが正確な予測を行ったり、深い洞察を得たりすることができるようにするため、特に有益です。

この記事では、StellarGraphを使用してグラフを生成し、IronPDFを使用してそれをPDFファイルに変換します。

StellarGraphとは?

StellarGraphは、グラフ構造のデータを使用した機械学習用に設計されたPythonライブラリです。 グラフの作成、操作、視覚化のための包括的なツールを提供し、さらに複雑なグラフデータ、知識グラフの完成を含むグラフベースの高度な機械学習アルゴリズムを提供します。

StellarGraphは、ノード分類、リンク予測、グラフ分類などのタスクをサポートし、グラフ畳み込みネットワークやグラフアテンションネットワークのモデルを実装しています。

Stellargraph Python (開発者向け: 図1 - StellarGraphウェブサイト)

また、TensorFlowやKerasのような人気のあるグラフ機械学習ワークフローと統合されており、ソーシャルネットワークやバイオインフォマティクス、推薦システムなどの多くの分野での複雑なネットワークの分析や洞察の発見に適したソリューションです。

主要機能

  • 簡略化されたグラフ機械学習ワークフロー: StellarGraphは、データ読み込みから埋め込みベクトル計算、ニューラル予測まで、グラフ機械学習パイプラインを簡略化し、ユーザーをガイドします。 Deep Graph CNNやInductive Graph Convolutional Networksを含む様々なグラフ畳み込み技術をサポートし、ノード特徴を強化し、強力なノード分類を可能にします。
  • 高度な手法とモデル:このライブラリは、シーケンス グラフ アテンション ネットワークや時系列 GCN などの洗練されたモデルを含み、時空間データとシーケンス予測を効率的に処理するように設計されています。 これらのモデルは、時間的なノード属性や異種のエッジの重みを利用して、予測の精度と関連性を向上させます。
  • 包括的なドキュメントとローカルデモ:StellarGraphは、アルゴリズムのドキュメンテーションとデモノートブックを提供し、ローカルで実行できる実用的な洞察を提供します。 これらのリソースは、グラフベースの機械学習とその応用の理解を深めるのに役立ちます。

StellarGraphを始める

StellarGraph を使用してグラフを生成するには、ライブラリのインストール、グラフの作成、ノードとエッジの特徴の定義、機械学習モデルのセットアップのプロセスをガイドします。 以下は、開始するためのステップバイステップガイドです:

StellarGraphとその他の関連ライブラリのインストール

まず、以下のライブラリが正しくインストールされていることを確認してください。まだインストールしていない場合は、以下のコマンドを使用してインストールします。

pip install stellargraph 
pip install tensorflow 
pip install pandas 
pip install numpy
pip install stellargraph 
pip install tensorflow 
pip install pandas 
pip install numpy
SHELL

PythonでStellarGraphを使用する

StellarGraphに含まれる多数のアルゴリズムを使用して、グラフを定義し、エッジとノードの特徴を追加する簡単な例:

import pandas as pd
import numpy as np
from stellargraph import StellarGraph
import matplotlib.pyplot as plt
import networkx as nx

# Step 1: Create Sample Graph Data
# Generating random feature values for 5 nodes
nodes = pd.DataFrame({
    "feature1": np.random.randn(5),
    "feature2": np.random.randn(5)
}, index=[f"node{i}" for i in range(5)])

# Defining edges in the graph
edges = pd.DataFrame({
    "source": ["node0", "node1", "node2", "node3"],
    "target": ["node1", "node2", "node3", "node4"]
})

# Step 2: Create StellarGraph Object
G = StellarGraph(nodes=nodes, edges=edges)

# Step 3: Define and Visualize the Graph
# Plot the graph
fig, ax = plt.subplots(figsize=(8, 6))

# Compute positions for each node in a circular layout
pos = {node: (np.cos(2 * np.pi * i / len(G.nodes())), np.sin(2 * np.pi * i / len(G.nodes())))
       for i, node in enumerate(G.nodes())}

# Draw the graph using NetworkX
nx.draw(G.to_networkx(), pos, with_labels=True, node_color='lightblue', edge_color='grey', node_size=500, font_size=10, ax=ax)

# Add a title for the graph
plt.title('StellarGraph Visualization')

# Save the visualization as an image
plt.savefig('graph.png')
plt.close()
import pandas as pd
import numpy as np
from stellargraph import StellarGraph
import matplotlib.pyplot as plt
import networkx as nx

# Step 1: Create Sample Graph Data
# Generating random feature values for 5 nodes
nodes = pd.DataFrame({
    "feature1": np.random.randn(5),
    "feature2": np.random.randn(5)
}, index=[f"node{i}" for i in range(5)])

# Defining edges in the graph
edges = pd.DataFrame({
    "source": ["node0", "node1", "node2", "node3"],
    "target": ["node1", "node2", "node3", "node4"]
})

# Step 2: Create StellarGraph Object
G = StellarGraph(nodes=nodes, edges=edges)

# Step 3: Define and Visualize the Graph
# Plot the graph
fig, ax = plt.subplots(figsize=(8, 6))

# Compute positions for each node in a circular layout
pos = {node: (np.cos(2 * np.pi * i / len(G.nodes())), np.sin(2 * np.pi * i / len(G.nodes())))
       for i, node in enumerate(G.nodes())}

# Draw the graph using NetworkX
nx.draw(G.to_networkx(), pos, with_labels=True, node_color='lightblue', edge_color='grey', node_size=500, font_size=10, ax=ax)

# Add a title for the graph
plt.title('StellarGraph Visualization')

# Save the visualization as an image
plt.savefig('graph.png')
plt.close()
PYTHON

この例では、StellarGraphライブラリをMatplotlibおよびNetworkXライブラリと併用して、グラフを構築し、その簡単なビジュアライゼーションを実現する方法を示しています。 例は、必要なライブラリをインポートすることから始めます:データ処理のためのpandasとNumpy; グラフ構造そのものを作成するためのStellarGraph; そして可視化のためのMatplotlibとNetworkX。

まず、サンプルのグラフデータが生成されます。 この例では、5つのノード(ノードIDがnode0からnode4)のランダムな特徴値を持つノードデータフレームがあります。エッジデータフレームはエッジを記述します; 接続されたノードを記述するソースターゲットペアを含みます。

次に、ノードとエッジのデータを持つStellarGraphクラスのインスタンスが作成され、この構造がグラフに保存されます。

最後に、このグラフを可視化します。 ノードの配置のために極座標に基づいて配置する円形レイアウトを計算する関数を提供します。 NetworkXライブラリはこのStellarGraphオブジェクトをNetworkXグラフに変換し、Matplotlibによってプロットされます。 ノードは淡い青、エッジはグレー、グラフはラベル付けされ、最後にサイズとフォントのカスタマイズが行われます。 最後に、プロットはgraph.pngという名前の画像ファイルとして保存され、プロットウィンドウは閉じられます。

出力

Stellargraph Python (開発者向け: 図2 - 出力されたグラフの可視化)

このワークフローにより、グラフの作成、表現学習、および視覚化が可能になります。 これにより、グラフに基づいたデータを分析し、提示することがはるかに簡単になります。

IronPDFの紹介

Stellargraph Python (開発者向け: 図3 - IronPDFウェブページ)

IronPDFモジュールは、PDFのプログラムによる作成と編集を可能にします。 HTMLからPDFを生成したり、複数のPDFファイルを1つに結合したり、既存のPDFにテキスト、写真、注釈を追加して使用することができます。 一方で、IronPDFは以前にスタイル設定されたレポートや請求書、その他のドキュメントを作成する際に、HTMLやその他のインターネットコンテンツからの品質PDFを生成することができます。

高度な機能の一部には、ページレイアウト編集、ドキュメントの暗号化、PDFからのコンテンツ抽出などがあります。 あなたの製品がPDFをどのように扱うかを改善することで、開発者がそのユーティリティ全体を改善することができます。

IronPDFライブラリのインストール

以下は、PythonでIronPDFをプロジェクトで使用できるようにするためのパッケージインストールコマンドです。

pip install ironpdf
pip install ironpdf
SHELL

StellarGraphをIronPDFと組み合わせる

以下は、StellarGraphで作成されたグラフ画像からPDFを生成するコードです。

import pandas as pd
import numpy as np
from stellargraph import StellarGraph
import matplotlib.pyplot as plt
import networkx as nx
from ironpdf import ImageToPdfConverter, License

import warnings
warnings.filterwarnings('ignore')

# Replace "YOUR LICENSE KEY GOES HERE" with your IronPDF license key
License.LicenseKey = "YOUR LICENSE KEY GOES HERE"

# Step 1: Create Sample Graph Data
nodes = pd.DataFrame({
    "feature1": np.random.randn(5),
    "feature2": np.random.randn(5)
}, index=[f"node{i}" for i in range(5)])

edges = pd.DataFrame({
    "source": ["node0", "node1", "node2", "node3"],
    "target": ["node1", "node2", "node3", "node4"]
})

# Step 2: Create StellarGraph Object
G = StellarGraph(nodes=nodes, edges=edges)

# Step 3: Define and Visualize the Graph
fig, ax = plt.subplots(figsize=(8, 6))
pos = {node: (np.cos(2 * np.pi * i / len(G.nodes())), np.sin(2 * np.pi * i / len(G.nodes())))
       for i, node in enumerate(G.nodes())}

nx.draw(G.to_networkx(), pos, with_labels=True, node_color='lightblue', edge_color='grey', node_size=500, font_size=10, ax=ax)
plt.title('StellarGraph Visualization')
plt.savefig('graph.png')
plt.close()

# Step 4: Convert the image to PDF using IronPDF
ImageToPdfConverter.ImageToPdf('graph.png').SaveAs("result.pdf")
import pandas as pd
import numpy as np
from stellargraph import StellarGraph
import matplotlib.pyplot as plt
import networkx as nx
from ironpdf import ImageToPdfConverter, License

import warnings
warnings.filterwarnings('ignore')

# Replace "YOUR LICENSE KEY GOES HERE" with your IronPDF license key
License.LicenseKey = "YOUR LICENSE KEY GOES HERE"

# Step 1: Create Sample Graph Data
nodes = pd.DataFrame({
    "feature1": np.random.randn(5),
    "feature2": np.random.randn(5)
}, index=[f"node{i}" for i in range(5)])

edges = pd.DataFrame({
    "source": ["node0", "node1", "node2", "node3"],
    "target": ["node1", "node2", "node3", "node4"]
})

# Step 2: Create StellarGraph Object
G = StellarGraph(nodes=nodes, edges=edges)

# Step 3: Define and Visualize the Graph
fig, ax = plt.subplots(figsize=(8, 6))
pos = {node: (np.cos(2 * np.pi * i / len(G.nodes())), np.sin(2 * np.pi * i / len(G.nodes())))
       for i, node in enumerate(G.nodes())}

nx.draw(G.to_networkx(), pos, with_labels=True, node_color='lightblue', edge_color='grey', node_size=500, font_size=10, ax=ax)
plt.title('StellarGraph Visualization')
plt.savefig('graph.png')
plt.close()

# Step 4: Convert the image to PDF using IronPDF
ImageToPdfConverter.ImageToPdf('graph.png').SaveAs("result.pdf")
PYTHON

これは、StellarGraphライブラリを介してグラフを作成して視覚化し、その描画された視覚化をIronPDFを使用してPDFに変換するコードの一部です。 必要なライブラリをインポートし、IronPDFのライセンスキーを設定することから始まります。 ノードのランダムな特徴と指定されたエッジを持つサンプルのグラフデータが生成されます。 このデータを使用してStellarGraphオブジェクトが作成されます。 NetworkXライブラリがグラフを円形レイアウトで可視化し、PNG画像として保存します。 その後、このPNG画像はImageToPdfConverterのIronPDFによってPDFドキュメントに変換されます。

出力

Stellargraph Python (開発者向け: 図4 - グラフ可視化を含む出力されたPDF)

ライセンス

コードが透かしなしで動作するには、ライセンスキーが必要です。 このリンクで無料の試用ライセンスに登録できます。 私たちは、身元を明かすことなく登録できます。 無料試用版を入手するために、単に電子メールアドレスを入力するだけでサインアップできます。

Stellargraph Python (開発者向け: 図5 - IronPDFライセンスプラン)

結論

StellarGraphとIronPDFの統合により、データを評価し、文書を処理するための高度かつ強力な手段が開かれます。 StellarGraphは、相互接続されたデータの分析のための強力なグラフ機械学習技術を提供し、IronPDFは、PDFドキュメントを処理および操作するための包括的なツールを提供します。 これらの相互作用により、PDFドキュメント内の複雑なデータ構造から有意義な洞察を抽出できるようになります。

これらの組み合わせは、グラフベースの分析の力を高度な文書処理と融合させることで、はるかに効率的で洞察に富んだデータ処理ワークフローを確立します。 この統合により、PDF形式に封入されたデータの完全な活用に大きな1歩を踏み出し、非常に異なる領域での革新と最適化の新たな道を開きました。 Iron Softwareでは、Windows、Android、MAC、Linuxなどの多くのプラットフォームやオペレーティングシステムでアプリを作成することも可能で、多くのライブラリを使用することができます。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。