Գրաֆիկի տեսքով ներկայացված տվյալները հեշտ է հասկանալ, քան աղյուսակների տեսքով առկա տվյալները: Stellar Graph Library-ն առաջարկում է գերժամանակակից ալգորիթմներ գրաֆիկական մեքենայական ուսուցման համար: Հանգույցների և եզրերի ներկայացման ուսուցման հետ մեկտեղ, որը պետք է օգտագործվի վիզուալիզացիայի համար, այն կարող է օգտագործվել նաև մեքենայական ուսուցման տարբեր առաջադրանքների համար:

Ներածություն.

Գրաֆիկի կառուցվածքային տվյալները ներկայացված են հանգույցների և եզրերի ձևերով: Հանգույցները ներկայացնում են սուբյեկտները կամ գագաթները, իսկ ծայրերը՝ տարբեր հանգույցների միջև: Օրինակ, գրաֆիկը կարող է պարունակել մարդկանց որպես հանգույցներ և հարաբերություններ ընկերությունում, ինչպիսիք են մենեջերը, ստաժորը և այլն, որպես եզրեր նրանց միջև: Այստեղ մենք կսովորենք միայն միատարր գրաֆիկների մասին: Օգտագործելով StellarGraph-ը, մենք կարող ենք բեռնել տվյալներ բազմաթիվ աղբյուրներից, ինչպիսիք են Pandas DataFrames, NumPy զանգվածները, Neo4j և NetworkX գրաֆիկները:

Համասեռ գրաֆիկներ

Համասեռ գրաֆիկները ամենատարրական գրաֆիկն են, որը կարող է մտածել յուրաքանչյուր ոք: Ինչպես անունն է հուշում, միատարր գրաֆիկներն ունեն միայն մեկ տեսակի հանգույցներ և հղումներ:

Կան միատարր գրաֆիկների տարբեր տեսակներ, որոնք մենք կարող ենք կառուցել՝ օգտագործելով Stellargraph գրադարանը

  1. Միատարր գրաֆիկ առանց առանձնահատկությունների
  2. Հատկանիշներով միատարր գրաֆիկ
  3. Եզրային կշիռներով համասեռ գրաֆիկ

1. Միատարր գրաֆիկ առանց հատկանիշների

Միատարր Գրաֆ առանց որևէ հատկանիշի նշանակում է, որ գրաֆիկը պարունակում է միայն հանգույցներ և եզրեր՝ առանց դրանց փոխհարաբերությունների մասին որևէ տեղեկատվության

Քայլ 1. Պահանջվող գրադարանների ներմուծում

Սկզբում մենք պետք է տեղադրենք աստղագրության գրադարանը

! pip install stellargraph

Stellargraph գրադարանը տեղադրելուց հետո հիմա մենք կներմուծենք այն և կաշխատենք դրա վրա:

# Importing Libraries
from stellargraph import StellarGraph
import pandas as pd

Քայլ 2. տվյալների բազայի ներմուծում

տվյալների բազան ներմուծելու համար մենք կարող ենք օգտագործել pandas գրադարանը: Csv ֆայլի ներմուծման համար օգտագործվող կոդը կլինի հետևյալը.

df=pd.read_csv("file.csv")

Ես այստեղ կստեղծեմ պարզ տվյալների բազա՝ օգտագործելով պանդաների գրադարանը:

data = pd.DataFrame({"source": ["a", "b", "c", "d", "a"],
                   "target": ["b", "c", "d", "a", "c"]})

Լռելյայնորեն, StellarGraph գրադարանում օգտագործվող սյունակի անունը «աղբյուր» և«թիրախ» է:

3. Գրաֆիկի ստեղծումը

Մենք կարող ենք ստեղծել գրաֆիկը՝ օգտագործելով ստորև բերված կոդը, իսկ գրաֆիկի բարձր մակարդակի ամփոփում ստանալու համար կարող ենք օգտագործել «info» մեթոդը:

graph = StellarGraph(edges=data)
print(graph.info())

Եթե ​​դուք չունեք նույն սյունակների անունները, ինչ «աղբյուրը» և «թիրախը», կարող եք ստանալ ստորև տրված կոդը՝ գրաֆիկը կարդալու համար:

graph_first_second = StellarGraph(edges=data, 
     source_column="first_column_name", target_column="second_column_name")
print(graph_first_second.info())

2. Հատկություններով միատարր գրաֆիկ

Իրական աշխարհի խնդիրների դեպքում մենք ունենք ավելին, քան պարզապես գրաֆիկի կառուցվածքը. մենք ունենք տեղեկատվություն հանգույցների և եզրերի մասին: Stellargraph դասը աջակցում է դրան՝ օգտագործելով Pandas DataFrame. յուրաքանչյուր տող համապատասխանում է հանգույցի կամ եզրի հատկանիշի վեկտորին:

Հանգույցի առանձնահատկությունները

Ասենք, որ վերը նշված տվյալների մեջ մենք ցանկանում ենք ներկայացնել յուրաքանչյուր հանգույցին համապատասխան որոշ առանձնահատկություններ: Այսպիսով, մենք արդեն ունենք տվյալների բազա, մենք պարզապես պետք է տեսնենք, թե ինչպես ենք ավելացնելու հնարավորությունները

node_features = pd.DataFrame({"x": [1, 2, 3, 4], 
                "y": [-0.1, 0.2, 0.0, -0.4]}, index=["a", "b", "c", "d"])
node_features

Այժմ մենք ստացել ենք հանգույցների պահանջվող բոլոր տվյալները եզրերի հետ միասին, ուստի այժմ մենք կօգտագործենք աստղային գրադարանը՝ գրաֆիկի տվյալները սնելու համար:

square_node_features_graph = StellarGraph(node_features, data)
print(square_node_features_graph.info())

Edge-ի առանձնահատկությունները

Հանգույցներին առանձնահատկություններ ավելացնելուց հետո ժամանակն է եզրերում հնարավորություններ ավելացնելու համար: Ըստ Stellargraph գրադարանի «Ցանկացած սյունակ, որը հատուկ նշանակություն չունի, ընդունվում է որպես հատկանիշի վեկտորի տարրեր: Սա նշանակում է, որ աղբյուրը և թիրախային սյունակները ներառված չեն հատկանիշի վեկտորներում»: Եկեք պատկերացնենք, որ եզրերն ունեն յուրաքանչյուրը 3 հատկանիշ:

edge_features= pd.DataFrame({"source": ["a", "b", "c", "d", "a"],
        "target": ["b", "c", "d", "a", "c"],"A": [-1, 2, -3, 4, -5],
        "B": [0.4, 0.1, 0.9, 0, 0.9],"C": [12, 34, 56, 78, 90],})
edge_features

Այժմ ներկայացնում ենք վերը նշված աղյուսակը որպես գրաֆիկ

square_named_features = StellarGraph({"corner": node_features}, 
                                     {"line": edge_features})
print(square_named_features.info())

3. Եզրային քաշով համասեռ գրաֆիկ

Լինում են դեպքեր, երբ մենք ցանկանում ենք ավելի մեծ կշիռ տալ որոշ հարաբերությունների։ Նման դեպքերում մենք պետք է սահմանենք եզրերի կշիռները գրաֆիկի համար և կտեսնենք, թե ինչպես կարող ենք եզրերի քաշը կապել գրաֆիկի հետ: Եզրային կշիռները օգտագործվում են որպես կապի ուժի չափում կամ հանգույցների միջև հեռավորության չափում:

Սկսած պարզ տվյալների բազայից և աղբյուրը, թիրախը և կշիռները

square_weighted_edges = pd.DataFrame(
    {"source": ["a", "b", "c", "d", "a"],
        "target": ["b", "c", "d", "a", "c"],
        "weight": [0.5,0.3,0.2,0.1,0.4],})
square_weighted_edges

եկեք տեսնենք, թե ինչպես է ստեղծվելու գրաֆիկը աստղային գրաֆի միջոցով

square_weighted = StellarGraph(edges=square_weighted_edges)
print(square_weighted.info())

Հղումներ

1.https://stellargraph.readthedocs.io/en/stable/README.html