Данные теста для выпуклой оболочки

ДА.

Используйте опцию многострочного истина

from pyspark.sql.functions import explode, col

val df = spark.read.option("multiline", "true").json("multi.json")

. Вы получите результат ниже.

+--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------------------+----------+
|_id                       |class_id|scores                                                                                                                                            |student_id|
+--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------------------+----------+
|[50b59cd75bed76f46522c34e]|2       |[[57.92947112575566, exam], [21.24542588206755, quiz], [68.1956781058743, homework], [67.95019716560351, homework], [18.81037253352722, homework]]|0         |
+--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------------------+----------+

Добавьте эти строки, чтобы получить

  val df2= df.withColumn("scores",explode(col("scores")))
      .select(col("_id.*"), col("class_id"),col("scores.*"),col("student_id"))

+------------------------+--------+-----------------+--------+----------+
|$oid                    |class_id|score            |type    |student_id|
+------------------------+--------+-----------------+--------+----------+
|50b59cd75bed76f46522c34e|2       |57.92947112575566|exam    |0         |
|50b59cd75bed76f46522c34e|2       |21.24542588206755|quiz    |0         |
|50b59cd75bed76f46522c34e|2       |68.1956781058743 |homework|0         |
|50b59cd75bed76f46522c34e|2       |67.95019716560351|homework|0         |
|50b59cd75bed76f46522c34e|2       |18.81037253352722|homework|0         |
+------------------------+--------+-----------------+--------+----------+

Обратите внимание, что мы используем функции "col" и "explode" из spark, поэтому вам нужно выполнить следующий импорт, чтобы эти функции работали.

из pyspark.sql.functions import explode, col

Подробнее о том, как анализировать файл JSON с многострочным форматом, можно узнать на странице ниже.

https://docs.databricks.com/spark/latest/data-sources/read-json.html

Благодарности

5
задан MvanGeest 28 July 2010 в 12:11
поделиться

1 ответ

Пакет Qhull, включая qhull, qconvex, и rbox должен добиться цели (я использовал их для этой точной цели сам). Например, qconvex страница в качестве примера дает следующее (настроил для большего тестового сценария):

rbox 100 D3 | qconvex s o TO result

Вышеупомянутое вычисляет 3-ю выпуклую оболочку 100 случайных точек, пишет сводка в консоль и пишет точки и фасеты для 'заканчиваний'.

Вот демонстрационный тестовый сценарий для нахождения 3-й выпуклой оболочки 40 точек. Точки:

0.3215426810286406 0.1678336189760208 -0.2203710966001927 
0.2229772524190855 -0.4213242506806965 -0.1966818060695024 
0.3688830163971363 -0.1831502133823468 -0.2056387967482571 
-0.1712592515826777 -0.3542439228428937 0.2223876390814666 
-0.3309556113844324 -0.370961861099081 0.2439994981922204  
-0.1004397059794885 -0.09014152417903909 -0.008600084584765189 
0.458374538420117 -0.09914027349943322 -0.2505798421339875     
-0.4954086979808367 -0.3339869997780649 -0.3195065691317492    
0.053091190339151 0.3036317017894533 0.1380056861210668
0.4615616439483703 0.4665423151725366 0.1766835406205464
-0.4797380864431505 0.0419809916447671 -0.4254776681079321
-0.003168473023146823 -0.2525299883005488 -0.27151530400991
-0.3577162826971303 -0.1375644040643837 -0.04494194644032229
-0.3392973838740004 0.4288679723896719 -0.01599531622230571
0.1667164640191164 0.003605551555385444 -0.4014989499947977
0.00714666676441833 0.1140243407469469 0.407090128778564
-0.03621271768232132 0.3728502838619522 0.4947140370446388
-0.3411871756810576 -0.3328629143842151 -0.4270033635450559
0.3544683273457627 -0.450828987127942 -0.0827870439577727
-0.4018510635028137 0.08917494033386464 -0.2367824197158054
0.3978697768392692 -0.002667689232777493 0.1641431727112673
-0.245701439441835 0.495905311308713 -0.3194406286994373
0.161352035739787 -0.1563404972258401 0.3852604361113724
0.07214279572678994 -0.4960366976410492 0.1112227161519441
0.3201855824516951 0.359077846965825 0.02136723140381946
0.1190541238701475 -0.05734495917087884 0.2032677509852384
0.3210853052521919 0.4807189479290684 0.4433501688235907
0.3862800354941562 0.2085496142586224 0.09336129957191763
0.1233572616459404 0.265491605052251 0.117400122450106
0.1438531872293476 -0.2594872752758556 -0.2026374435076839
0.2724846394476338 -0.3506708492996831 0.2750346518820475
-0.4926118841325975 -0.3279366743079728 0.3683135596740186
0.2459906458351674 0.3647787136629026 -0.1641662355178652
-0.141922976953837 -0.2994764654892278 -0.3009570467294725
-0.1850859398814719 0.2606059478228967 0.004159106876849283
-0.09789466634196664 -0.3156603563722785 -0.303610991503681
0.2100642609503719 -0.4499717643018549 0.3245569875692548
-0.1707163766685095 -0.2301452446078371 -0.05112823569320907
-0.312260808713977 -0.1674135249735914 0.2808831662692904
-0.1966306233747216 0.2291105671125563 -0.3387042454804333

Выпуклая оболочка состоит из следующих моментов:

0.3215426810286406 0.1678336189760208 -0.2203710966001927 
0.2229772524190855 -0.4213242506806965 -0.1966818060695024 
0.458374538420117 -0.09914027349943322 -0.2505798421339875 
-0.4954086979808367 -0.3339869997780649 -0.3195065691317492 
0.4615616439483703 0.4665423151725366 0.1766835406205464 
-0.4797380864431505 0.0419809916447671 -0.4254776681079321 
-0.3392973838740004 0.4288679723896719 -0.01599531622230571 
0.1667164640191164 0.003605551555385444 -0.4014989499947977 
-0.03621271768232132 0.3728502838619522 0.4947140370446388 
-0.3411871756810576 -0.3328629143842151 -0.4270033635450559 
0.3544683273457627 -0.450828987127942 -0.0827870439577727 
0.3978697768392692 -0.002667689232777493 0.1641431727112673 
-0.245701439441835 0.495905311308713 -0.3194406286994373 
0.161352035739787 -0.1563404972258401 0.3852604361113724 
0.07214279572678994 -0.4960366976410492 0.1112227161519441 
0.3210853052521919 0.4807189479290684 0.4433501688235907 
0.2724846394476338 -0.3506708492996831 0.2750346518820475 
-0.4926118841325975 -0.3279366743079728 0.3683135596740186 
0.2459906458351674 0.3647787136629026 -0.1641662355178652 
0.2100642609503719 -0.4499717643018549 0.3245569875692548

Вот 2D тестовый сценарий. Точки:

0.3215348546593775 0.03629583077160248 
0.02402358131857918 -0.2356728797179394 
0.04590851212470659 -0.4156409924995536 
0.3218384001607433 0.1379850698988746   
0.11506479756447 -0.1059521474930943    
0.2622539999543261 -0.29702873322836    
-0.161920957418085 -0.4055339716426413  
0.1905378631228002 0.3698601009043493   
0.2387090918968516 -0.01629827079949742
0.07495888748668034 -0.1659825110491202
0.3319341836794598 -0.1821814101954749
0.07703635755650362 -0.2499430638271785
0.2069242999022122 -0.2232970760420869
0.04604079532068295 -0.1923573186549892
0.05054295812784038 0.4754929463150845
-0.3900589168910486 0.2797829520700341
0.3120693385713448 -0.0506329867529059
0.01138812723698857 0.4002504701728471
0.009645149586391732 0.1060251100976254
-0.03597933197019559 0.2953639456959105
0.1818290866742182 0.001454397571696298
0.444056063372694 0.2502497166863175
-0.05301752458607545 -0.06553921621808712
0.4823896228171788 -0.4776170002088109
-0.3089226845734964 -0.06356112199235814
-0.271780741188471 0.1810810595574612
0.4293626522918815 0.2980897964891882
-0.004796652127799228 0.382663812844701
0.430695573269106 -0.2995073500084759
0.1799668387323309 -0.2973467472915973
0.4932166845474547 0.4928094162538735
-0.3521487911717489 0.4352656197131292
-0.4907368011686362 0.1865826865533206
-0.1047924716070224 -0.247073392148198
0.4374961861758457 -0.001606279519951237
0.003256207800708899 -0.2729194320486108
0.04310378203457577 0.4452604050238248
0.4916198379282093 -0.345391701297268
0.001675087028811806 0.1531837672490476
-0.4404289572876217 -0.2894855991839297

Оболочка:

-0.161920957418085 -0.4055339716426413 
0.05054295812784038 0.4754929463150845 
0.4823896228171788 -0.4776170002088109 
0.4932166845474547 0.4928094162538735 
-0.3521487911717489 0.4352656197131292 
-0.4907368011686362 0.1865826865533206 
0.4916198379282093 -0.345391701297268 
-0.4404289572876217 -0.2894855991839297 
3
ответ дан 14 December 2019 в 13:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: