Գրաֆիկի տեսքով ներկայացված տվյալները հեշտ է հասկանալ, քան աղյուսակների տեսքով առկա տվյալները: Stellar Graph Library-ն առաջարկում է գերժամանակակից ալգորիթմներ գրաֆիկական մեքենայական ուսուցման համար: Հանգույցների և եզրերի ներկայացման ուսուցման հետ մեկտեղ, որը պետք է օգտագործվի վիզուալիզացիայի համար, այն կարող է օգտագործվել նաև մեքենայական ուսուցման տարբեր առաջադրանքների համար:
Ներածություն.
Գրաֆիկի կառուցվածքային տվյալները ներկայացված են հանգույցների և եզրերի ձևերով: Հանգույցները ներկայացնում են սուբյեկտները կամ գագաթները, իսկ ծայրերը՝ տարբեր հանգույցների միջև: Օրինակ, գրաֆիկը կարող է պարունակել մարդկանց որպես հանգույցներ և հարաբերություններ ընկերությունում, ինչպիսիք են մենեջերը, ստաժորը և այլն, որպես եզրեր նրանց միջև: Այստեղ մենք կսովորենք միայն միատարր գրաֆիկների մասին: Օգտագործելով StellarGraph-ը, մենք կարող ենք բեռնել տվյալներ բազմաթիվ աղբյուրներից, ինչպիսիք են Pandas DataFrames, NumPy զանգվածները, Neo4j և NetworkX գրաֆիկները:
Համասեռ գրաֆիկներ
Համասեռ գրաֆիկները ամենատարրական գրաֆիկն են, որը կարող է մտածել յուրաքանչյուր ոք: Ինչպես անունն է հուշում, միատարր գրաֆիկներն ունեն միայն մեկ տեսակի հանգույցներ և հղումներ:
Կան միատարր գրաֆիկների տարբեր տեսակներ, որոնք մենք կարող ենք կառուցել՝ օգտագործելով Stellargraph գրադարանը
- Միատարր գրաֆիկ առանց առանձնահատկությունների
- Հատկանիշներով միատարր գրաֆիկ
- Եզրային կշիռներով համասեռ գրաֆիկ
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())
Հղումներ