Zenon  Pruschke

Zenon Pruschke

1658478540

Grundlagen der Programmiersprache Julia für Data Scientists

Lernen Sie die Power von Julia Hochleistungsprogrammierung für Data Scientists kennen. Dieses Tutorial gibt einen kurzen Überblick über die Grundlagen von Julia; seine Syntax und Funktionen.

Julia ist eine relativ neue, schnelle, dynamische Programmiersprache auf hohem Niveau. Obwohl es sich um eine Allzwecksprache handelt, mit der alle Arten von Anwendungen geschrieben werden können, ist ein Großteil ihres Paket-Ökosystems und ihrer Funktionen für numerische Berechnungen auf hohem Niveau konzipiert. Julia schöpft aus verschiedenen Sprachen, von eher einfachen Systemprogrammiersprachen wie C bis hin zu höheren dynamischen Typisierungssprachen wie Python, R und MATLAB. Und dies spiegelt sich in seiner optionalen Typisierung, seiner Syntax und seinen Funktionen wider. 

Julia hat keinen Unterricht; Dies wird umgangen, indem die schnelle Erstellung benutzerdefinierter Typen und Methoden für diese Typen unterstützt wird. Diese Funktionen sind jedoch nicht auf die Typen beschränkt, für die sie erstellt wurden, und können viele Versionen haben, eine Funktion, die als Mehrfachzuteilung bezeichnet wird. Es unterstützt direkte Aufrufe von C-Funktionen ohne Wrapper-API, z. B. das Schlüsselwort struct, das zum Definieren benutzerdefinierter Typen verwendet wird. Und anstatt den Bereich auf der Grundlage von Einrückungen wie Python zu definieren, verwendet Julia das Schlüsselwort end, ähnlich wie bei MATLAB. 

Es wäre lächerlich, alle seine Merkmale und Eigenheiten zusammenzufassen; Eine umfassendere Beschreibung von Julia finden Sie auf der Wiki- oder Dokumenten-Willkommensseite . Lassen Sie uns damit beginnen, die Grundlagen von Julia zu lernen und sie dann zum Erstellen von Lösungen für maschinelles Lernen zu verwenden. Aber bevor wir das tun, müssen Sie Julia installieren und eine Entwicklungsumgebung einrichten. Obwohl Julia mit einer eigenen REPL kommt, ähnlich wie Python IDLE, werden wir Jupyter-Notebooks verwenden. So richten Sie Julia für die Ausführung in Jupyter-Notebooks ein:

  1. Laden Sie Julia von ihrer Website herunter und installieren Sie sie .
  2. Öffnen Sie die Julia-Befehlszeile.
  3. Führen Sie den Befehl using Pkgaus (dazu erfahren Sie später mehr).
  4. Installieren Sie den Julia-Kernel für Jupyter mit  Pkg.add("IJulia").
  5. Wenn Sie jetzt ein Jupiter-Notizbuch erstellen, haben Sie die Möglichkeit, Julia auszuwählen.

Grundlagen von Julia

IO, Variablen und Arithmetik 

Input-Output

Wir beginnen wie jedes Programmier-Tutorial mit dem vertrauenswürdigen „Hello World“-Statement. Zum Drucken von Dingen zum Terminal stellt Julia die println()Methode zur Verfügung.

 println("Hello World")
 Hello World 

Um Eingaben von der Befehlszeile zu übernehmen, können Sie die (von Java inspirierten?) Methoden readline()und readlines()verwenden.

Betreiber

Alle arithmetischen Operatoren verhalten sich ähnlich wie ihre Gegenstücke in Python, mit Ausnahme des Exponentenoperators **, der ^in Julia durch ersetzt wird.  

 println(6 + 5)
 println(3 - 8)
 println(5 * 7)
 println(666 / 11)
 println(666 % 11)
 println(2 ^ 10)

 11
 -5
 35
 60.54545454545455
 6
 1024 

Variablen

Variablennamen in Julia müssen mit einem Unterstrich, einem Alphabet oder einer Teilmenge von Unicode-Codepunkten größer als 00A0 beginnen. Die folgenden Zeichen können auch !und Ziffern enthalten. Seltsamerweise unterstützt Julia auch die Verwendung von Emojis und Operatoren wie +als Identifikator; Beachten Sie, dass sich das Verhalten der Operatoren ändert, nachdem sie als Identifikator verwendet wurden. Dies liegt daran, dass das +Symbol ursprünglich ein Bezeichner ist, der sich auf eine Summenfunktion bezieht. 

 best_num = 73
 println(typeof(best_num))
 π = 3.1415
 println(typeof(π))
 ????  = "Like a boss"
 println(typeof( ???? ))
 # doesn't work in Jupyter notebooks, try in Julia  CLI
 # + = "Do you know the way?"
 # print(+)

 Int64
 Float64
 String 

Weitere Informationen zu Julias Namens- und Stilkonventionen für Variablen finden Sie hier .

Kommentare & Zeichenfolgen

Einzeilige Kommentare können in Julia wie in Python mit dem #Symbol gemacht werden, bei mehrzeiligen Kommentaren wird die #=  =#Syntax verwendet.

 # One line comment

 #= Multiple
 line 
 comment=# 

Es gibt zwei Möglichkeiten, einen String in Julia zu definieren; Wir haben bereits einfache Anführungszeichen verwendet, “ ”, das andere sind dreifache Anführungszeichen, “”” “””. Es gibt einige funktionale Unterschiede zwischen Zeichenfolgen, die in einfache und dreifache Anführungszeichen eingeschlossen sind. Das Größte ist, dass Sie Anführungszeichen innerhalb von dreifachen Anführungszeichen verwenden können, ohne sie maskieren zu müssen.

 "This is a string."
 """Look, Ma! No "errors"! """ 

Strings sind indizierbar und aufteilbar, aber die Indizierung beginnt bei eins. Ja, Julia verwendet eine 1-basierte Indizierung, nicht eine 0-basierte wie Python. Kriege werden wegen geringerer Probleme geführt. Zusätzlich stellt Julia Schlüsselwörter zur Verfügung, die als Abkürzung für den ersten und letzten Index verwendet werden können begin.end

 println(s[end])
 println(s[begin])
 println(s[begin + 2])
 println(s[2:5])

 .
 T
 i
 his  

Eine weitere zu beachtende Sache ist die ‘ ‘Definition eines Zeichens, nicht einer Zeichenfolge.

 typeof('a')

 Char 

In Julia wird das $Symbol verwendet, um Variablen in einen String einzufügen und Ausdrücke innerhalb eines Strings auszuwerten. 

 name = "Aditya"
 num_articles = 40
 num_papers = 18
 println("Hello, my name is $name.")
 println("I have written $num_articles articles and covered $num_papers research papers.")

 Hello, my name is Aditya.
 I have written 40 articles and covered 18 research papers. 

Es gibt drei Möglichkeiten, Strings in Julia zu verketten. Die erste besteht darin, die Zeichenfolgeninterpolation zu verwenden. 

 s1 = "How many cats "
 s2 = "is too many cats?"
 ???? = 3
 println("$s1$s2")

 "How many cats is too many cats?" 

Eine andere Möglichkeit besteht darin, die string()-Methode zu verwenden, die auch verwendet werden kann, um andere Nicht-String-Eingaben in Strings umzuwandeln.

 string("I don't know, but ", ????, " is too few.")
 "I don't know, but 3 is too few." 

Oder verwenden Sie den *Operator. 

s1*s2

Hier erfahren Sie mehr über Strings in Julia .

Datenstrukturen 

Julia bietet drei Datenstrukturen an, Tuple, Arrays und Dictionaries. Funktional verhalten sich alle wie ihre Python-Pendants; nur die Syntax ist etwas anders.

Tupel

Ähnlich wie Python sind Tupel unveränderlich und haben auch eine wörterbuchähnliche Variante. Um ein Tupel zu definieren, ist eine geordnete Sammlung von Elementen eingeschlossen in ( )

 animals = ("penguins", "cats", " kangaroo")
 animals[1]

 "penguins" 

NamedTuples wurden in Julia 1.0 eingeführt und verhalten sich wie Tupel, außer dass jedem Element ein Name zugeordnet ist. Sie verwenden eine spezielle Syntax =innerhalb eines Tupels.

 animals = (bird = "ducks", mammal = "cats", marsupial = "kangaroo")
 animals.bird # animals[1] 

Wörterbücher

Wörterbücher dienen zum Speichern von Datensätzen, die zueinander in Beziehung stehen, und können mithilfe der Dict()Funktion und der =>Syntax erstellt werden.

 contacts  = Dict("Sheldon" => "732-1371", "Ghostbusters" => "555-2368")
 contacts["Elliot"] = "127-0001"
 contacts 

 Dict{String, String} with 2 entries:
   "Sheldon"      => "732-1371"
   "Ghostbusters" => "555-2368" 

Die pop!()Methode kann verwendet werden, um Elemente aus einem Wörterbuch zu löschen.

 pop!(contacts , "Elliot")  #we'll learn about the ! later  
 contacts 

 Dict{String, String} with 2 entries:
   "Sheldon"      => "732-1371"
   "Ghostbusters" => "555-2368" 

Arrays

Arrays in Julia sind geordnete veränderliche Sammlungen, die gemischte Typen speichern können. Sie können mit den push!()& pop!()-Methoden indiziert, in Scheiben geschnitten und bearbeitet werden. 

 HIMYM = ["Ted", "Barney", "Lily", "Marshall", "Robin"]
 fibonacci = [1, 1, 2, 3, 5, 8, 13]
 mix = [7, 3, "Ted", "Robyn"]
 HIMYM[2] = "The Lengend Himself"
 println(HIMYM)

 ["Ted", "The Lengend Himself", "Lily", "Marshall", "Robin"]

 push!(fibonacci, 21)
 push!(fibonacci, 34)
 pop!(fibonacci)
 println(fibonacci)

 9-element Vector{Int64}:
   1
   1
   2
   3
   5
   8
  13
  21

Das Konzept der flachen und tiefen Kopien bleibt auch in Julia bestehen, und um ein Array zu kopieren, können Sie die bekannte copy()Methode verwenden. 

 numbers = fibonacci
 numbers[1] = 404
 println(fibonacci)

 [404, 1, 2, 3, 5, 8, 13, 21]
 fibonacci[1] = 1
 numbers = copy(fibonacci)
 numbers[1] = 404
 println(fibonacci)

 [1, 1, 2, 3, 5, 8, 13, 21] 

Hier können Sie mehr über Datenstrukturen in Julia lesen .

Schleifen & Bedingungen

While-Schleifen

 HIMYM = ["Ted", "Barney", "Lily", "Marshall", "Robin"]
 i = 1
 while i <= length(HIMYM)
     friend = myfriends[i]
     println("Have you met $friend?")
     global i += 1
 end

 Have you met Ted?
 Have you met Robin?
 Have you met Barney?
 Have you met Lily?
 Have you met Marshall? 

für Schleifen

Das obige Beispiel kann mit for-Schleifen als neu erstellt werden

 for friend in HIMYM
     println("Have you met $friend?")
 end 

Die wahre Stärke von for-Schleifen zeigt sich bei der Arbeit mit mehrdimensionalen Daten. Lassen Sie uns zusätzliche Tabellen erstellen, um dies zu veranschaulichen.

 m, n = 5, 5
 A = fill(0, (m, n))
 for j in 1:n
     for i in 1:m
         A[i, j] = i + j
     end
 end
 println(A) 

Hier ist eine relativ kompaktere Julia-Syntax zum Schreiben von verschachtelten for-Schleifen.

 B = fill(0, (m, n))
 for j in 1:n, i in 1:m
     B[i, j] = i + j
 end
 println(B) 

Und schließlich der „Julia“-Weg, der ein Array-Verständnis verwendet.

C = [i + j for i in 1:m, j in 1:n]

Hier erfahren Sie mehr über Schleifen in Julia .

Bedingungen 

Julia bietet nicht nur die if-else-Syntax, sondern unterstützt auch die viel vermisste ternäre Operatorsyntax zum Schreiben von bedingten Anweisungen. 

 x = 7
 y = 3

 if x > y
     x
 else
     y
 end 

ist äquivalent zu 

(x > y) ? x : y

Hier erfahren Sie mehr über Ablaufsteuerungsanweisungen .

Funktionen

Julia unterstützt drei Möglichkeiten, Funktionen zu deklarieren. Die erste verwendete die Schlüsselwörter functionund end:

 function sayhi(name)
     println("Hi $name, it's great to see you!")
 end
 function f(x)
     x^2
 end 

Diese Funktionen können auch als einzeilige Funktionen geschrieben werden:

 sayhi2(name) = println("Hi $name, it's great to see you!")
 f2(x) = x^2 

oder als „anonyme“ Funktionen 

 sayhi3 = name -> println("Hi $name, it's great to see you!")
 f3 = x -> x^2 

Duck-Typing in Julia

In Julia versuchen Funktionen, mit dem Argumenttyp auszukommen, der ihnen übergeben wird. Zum Beispiel funktioniert hallo mit einer ganzen Zahl und f mit einer Matrix oder einem String.

 println(hello(55595472))
 A = rand(3, 3)
 println(f(A))
 println(f("hi"))

 Hello 55595472, it's great to see you!
 [1.098291594301114 0.5733286686511377 1.2973169349506042; 1.5089880137440685 1.0767547143728742 1.7354001978884117; 0.6092825261800483 0.5512628958029917 0.958821963007823]
 "hihi" 

Mutierende und nicht mutierende Funktionen

Per Konvention !ändern Funktionen gefolgt von einem ihre Argumente und Funktionen ohne !don't. Dies ist keine feste Regel für alle Funktionen; Es ist nur eine bessere und einfachere Möglichkeit, mutierende Funktionen zu unterscheiden.

 v = [3, 5, 2]
 sort(v)
 println(v)

 [3, 5, 2] 

sort(v)gibt ein sortiertes Array zurück, vbleibt aber unverändert. Andererseits sort!(vmodifiziert ) den Inhalt von v, der nun innerhalb des Arrays sortiert istv

 sort!(v)
 println(v)

 [2, 3, 5] 

Funktionen höherer Ordnung

Funktionen höherer Ordnung sind Funktionen, die eine andere Funktion als Argument annehmen. Lassen Sie uns zwei der von Julia angebotenen Funktionen höherer Ordnung durchgehen: Karte und Übertragung.

map()wendet die Funktion auf jedes Element der ihr übergebenen Datenstruktur an.

 println(map(x -> x^3, [1, 2, 3]))

 [1, 8, 27]

broadcast()ist eine allgemeinere Version von map(); es kann alles map()kann und mehr. Beide Funktionen wenden eine Funktion auf eine Datenstruktur an. Der Unterschied zwischen den beiden besteht darin, wie sie mehrdimensionale Arrays behandeln. 

 println(map(+, 9, [2,2,2]))
 println(broadcast(+, 9, [2,2,2]))

 [11]
 [11, 11, 11] 

map()kombiniert zuerst die Spalten, die dann als Argumente für die angegebene Funktion verwendet werden; dagegen broadcast()eine elementweise Anwendung der gegebenen Funktion. Darüber broadcast()hinaus hat auch eine prägnantere Syntax mit dem .Operator, der es uns ermöglicht, komplexe elementweise Ausdrücke natürlicher zu schreiben.  

 A = [i + 3*j for j in 0:2, i in 1:3]
 println(A .+ 2 .* f.(A) ./ A)
 # instead of
 println(broadcast(x -> x + 2 * f(x) / x, A))


 [3.0 6.0 9.0; 12.0 15.0 18.0; 21.0 24.0 27.0]
 [3.0 6.0 9.0; 12.0 15.0 18.0; 21.0 24.0 27.0] 

Hier können Sie mehr über Funktionen in Julia lesen .

Arbeiten mit Paketen in Julia

Julia hat über 2000 Pakete, was nach viel klingt, aber im Vergleich zu Pythons satten 1.37.000 muss das Paket-Ökosystem noch wachsen. Abgesehen davon hat Julia erstklassige Funktionsaufrufe in andere Sprachen; diese stellen Fremdfunktionsschnittstellen bereit. Sie können beispielsweise einfach mit PyCalloder in Python oder R aufrufen Rcall. Dies ermöglicht Entwicklern, ihre vertrauenswürdigen bevorzugten Pakete/Bibliotheken aus anderen Sprachen zu verwenden. Um alle verfügbaren Pakete zu sehen, besuchen Sie:

Um ein Paket in einer Julia-Installation zu verwenden, müssen Sie den Paketmanager verwenden Pkg, um es explizit hinzuzufügen. Das Paket „IJulia“ haben Sie bereits zu Beginn des Artikels installiert. Sehen wir uns nun kurz eines der besten Julia-Pakete an, auf die ich in meiner begrenzten Erfahrung gestoßen bin: das Plots.jl-Paket, das es Entwicklern ermöglicht, zwischen Backends zu wechseln und gleichzeitig dieselbe API nahtlos zu verwenden.

Wir werden dies anhand von GR- und Plotly-Backends veranschaulichen, aber zuerst fügen wir das Paket hinzu und „importieren“ es mit dem usingBefehl „ “.  

 using Pkg
 Pkg.add("Plots")
 using Plots 

und erstellen Sie einige Dummy-Daten zum Plotten.

 price = [14.4, 14.5, 14.8, 15.2, 15.5, 15.8]
 quantity = [45000, 20000, 15000, 5000, 400, 17]
 Pkg.add("GR")
 gr() #switching backend
 plot(quantity, price, label="line")  
 scatter!(quantity, price, label="points")  

Beachten Sie, wie wir scatter!()and not verwenden scatter(); Wenn wir die nicht-mutierende Variante verwenden würden, würde dies ein neues Diagramm nur mit dem Streudiagramm erstellen.

 Pkg.add("PlotlyJS")
 plotlyjs() #switching backend 

Sie können das Jupyter-Notebook mit dem obigen Code hier erhalten . Ich konnte Julia nicht dazu bringen, an Colab zu arbeiten; lass es mich wissen, wenn du Glück hast.

Letzte Epoche

Dieser Artikel gab einen kurzen Überblick über die grundlegende Syntax und Funktionen von Julia. Unter den behandelten sind einige Dinge äußerst nützlich und intuitiv. Wie die Verwendung von !Symbolen zur Anzeige mutierender Funktionen oder des Kompaktzeichens . Symbolsyntax der Methode broadcast(). Andererseits gibt es auch einige eklige Entscheidungen wie die Verwendung von *zum Verketten von Zeichenfolgen oder die Verwendung von umständlich =>in Wörterbüchern. (Dies alles kommt aus einer sehr Python-voreingenommenen Perspektive.) Abgesehen davon ist Julia sehr vielversprechend in seiner Fähigkeit, nahtlos mit anderen Sprachen zu interagieren und sogar devektorisierten Code so schnell wie C auszuführen. Außerdem steckt es noch in den Kinderschuhen Entwicklungsprozess, es ist nicht einmal ein Jahrzehnt alt. Es wird sich in den nächsten zehn Jahren oder so weiterentwickeln. 

Quelle des Originalartikels unter https://analyticsindiamag.com

#julia #datascience #machinelearning

What is GEEK

Buddha Community

Grundlagen der Programmiersprache Julia für Data Scientists
 iOS App Dev

iOS App Dev

1620466520

Your Data Architecture: Simple Best Practices for Your Data Strategy

If you accumulate data on which you base your decision-making as an organization, you should probably think about your data architecture and possible best practices.

If you accumulate data on which you base your decision-making as an organization, you most probably need to think about your data architecture and consider possible best practices. Gaining a competitive edge, remaining customer-centric to the greatest extent possible, and streamlining processes to get on-the-button outcomes can all be traced back to an organization’s capacity to build a future-ready data architecture.

In what follows, we offer a short overview of the overarching capabilities of data architecture. These include user-centricity, elasticity, robustness, and the capacity to ensure the seamless flow of data at all times. Added to these are automation enablement, plus security and data governance considerations. These points from our checklist for what we perceive to be an anticipatory analytics ecosystem.

#big data #data science #big data analytics #data analysis #data architecture #data transformation #data platform #data strategy #cloud data platform #data acquisition

Java Questions

Java Questions

1599137520

50 Data Science Jobs That Opened Just Last Week

Our latest survey report suggests that as the overall Data Science and Analytics market evolves to adapt to the constantly changing economic and business environments, data scientists and AI practitioners should be aware of the skills and tools that the broader community is working on. A good grip in these skills will further help data science enthusiasts to get the best jobs that various industries in their data science functions are offering.

In this article, we list down 50 latest job openings in data science that opened just last week.

(The jobs are sorted according to the years of experience r

1| Data Scientist at IBM

**Location: **Bangalore

Skills Required: Real-time anomaly detection solutions, NLP, text analytics, log analysis, cloud migration, AI planning, etc.

Apply here.

2| Associate Data Scientist at PayPal

**Location: **Chennai

Skills Required: Data mining experience in Python, R, H2O and/or SAS, cross-functional, highly complex data science projects, SQL or SQL-like tools, among others.

Apply here.

3| Data Scientist at Citrix

Location: Bangalore

Skills Required: Data modelling, database architecture, database design, database programming such as SQL, Python, etc., forecasting algorithms, cloud platforms, designing and developing ETL and ELT processes, etc.

Apply here.

4| Data Scientist at PayPal

**Location: **Bangalore

Skills Required: SQL and querying relational databases, statistical programming language (SAS, R, Python), data visualisation tool (Tableau, Qlikview), project management, etc.

Apply here.

5| Data Science at Accenture

**Location: **Bibinagar, Telangana

Skills Required: Data science frameworks Jupyter notebook, AWS Sagemaker, querying databases and using statistical computer languages: R, Python, SLQ, statistical and data mining techniques, distributed data/computing tools such as Map/Reduce, Flume, Drill, Hadoop, Hive, Spark, Gurobi, MySQL, among others.


#careers #data science #data science career #data science jobs #data science news #data scientist #data scientists #data scientists india

Gerhard  Brink

Gerhard Brink

1620629020

Getting Started With Data Lakes

Frameworks for Efficient Enterprise Analytics

The opportunities big data offers also come with very real challenges that many organizations are facing today. Often, it’s finding the most cost-effective, scalable way to store and process boundless volumes of data in multiple formats that come from a growing number of sources. Then organizations need the analytical capabilities and flexibility to turn this data into insights that can meet their specific business objectives.

This Refcard dives into how a data lake helps tackle these challenges at both ends — from its enhanced architecture that’s designed for efficient data ingestion, storage, and management to its advanced analytics functionality and performance flexibility. You’ll also explore key benefits and common use cases.

Introduction

As technology continues to evolve with new data sources, such as IoT sensors and social media churning out large volumes of data, there has never been a better time to discuss the possibilities and challenges of managing such data for varying analytical insights. In this Refcard, we dig deep into how data lakes solve the problem of storing and processing enormous amounts of data. While doing so, we also explore the benefits of data lakes, their use cases, and how they differ from data warehouses (DWHs).


This is a preview of the Getting Started With Data Lakes Refcard. To read the entire Refcard, please download the PDF from the link above.

#big data #data analytics #data analysis #business analytics #data warehouse #data storage #data lake #data lake architecture #data lake governance #data lake management

Ian  Robinson

Ian Robinson

1623175620

Data Science: Advice for Aspiring Data Scientists | Experfy Insights

Around once a month, I get emailed by a student of some type asking how to get into Data Science, I’ve answered it enough that I decided to write it out here so I can link people to it. So if you’re one of those students, welcome!

I’ll segment this into basic advice, which can be found quite easily if you just google ‘how to get into data science’ and advice that is less common, but advice that I’ve found very useful over the years. I’ll start with the latter, and move on to basic advice. Obviously take this with a grain of salt as all advice comes with a bit of survivorship bias.

Less Basic Advice:

1. Find a solid community

2. Apply Data Science to Things you Enjoy

3. Minimize the ‘Clicks to Proof of Competence’

4. Learn Through Research or Entry Level Jobs

#big data & cloud #data science #data scientist #statistics #aspiring data scientist #advice for aspiring data scientists

5 Indian Companies Recruiting Data Scientists In Large Numbers

According to a recent study on analytics and data science jobs, the number of vacancies for data science-related jobs in India has increased by 53 per cent, since India eased the lockdown restrictions. Moreover, India’s share of open data science jobs in the world has seen a steep rise from 7.2 per cent in January to 9.8 per cent in August.

Here is a list of 5 such companies, in no particular order, in India that are currently recruiting Data Scientists in bulk.

#careers #data science #data science career #data science jobs #data science recruitment #data scientist #data scientist jobs