Data Science ist ein interdisziplinärer Bereich. Da braucht man Kenntnisse nicht nur in Mathematik/Statistik, sondern auch in Softwareentwicklung. Deswegen ist es wichtig, bis Jobsuche Mathematik/Statistik und Softwareentwicklung zu beherrschen.

Wenn du schon sehr gute Kenntnisse in Softwareentwicklung oder Computer Science hast, dann kann Master in Mathematik eine gute Auswahl sein. Vor allem sind Stochastischer Prozess, bayesianische Analyse, Finanz und Aktur mit Data Science verbunden. Master in diesen Gebieten ist meiner Meinung nach ein guter Vorteil.

Wenn du Angst vor Softwareentwicklung hast oder nicht alleine Softwareentwicklung lernen kannst, dann ist Master in Data Science eine sichere Option.

...zur Antwort

Hallo,

hast du schon Learning Tensorflow.js von Gant Laborde ausprobiert? Das Buch erklärt die praktischen Konzepten und Theorie ohne Mathematik.

...zur Antwort

Soweit ich das Foto sehe, ist die Kaffeemaschine KAM400? Wenn ja, kannst du auf dieser Seite die Bedienungsanleitung herunterladen. (Ungefähr in der Mitte, in der PDF-Format.)

Wenn die Maschine nicht KAM400, dann kannst du einfach auf der Webseite von AEG das Modell suchen und wahrscheinlich kannst du die Anleitung finden.

...zur Antwort

Das Output kann man nicht als eine numpy array darstellen, weil numpy array hat eine bestimmte Form wie Skalar, Vektor, Matrix, ....

Was man mit Numpy machen kann, ist

import numpy as np

v = np.zeros((3,4))
v[0] = [1,2,3,4]
print(v)

Das Ergebnis ist

[[1. 2. 3. 4.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]]
...zur Antwort

Während man sowohl R als auch Python für Datenauswertung verwenden kann, gibt es eine klare "Straßengabelung".

Statistische Modellierung: Da viele Statistiker R verwenden, gibt es viele Bibliotheken für statistische Modellierung, die von sehr guter Qualität sind. Eine bekanntes Beispiel ist EpiEstim. Damit kann man die Ansteckungsrate berechnen. Scipy stellt nur fundamentale statistische Funktionen. Wenn es um ein fortgeschrittenes Thema geht, ist Python gar nicht bequem.

Visualisierung: ggplot2, Rmarkdown, flexdashboard, (gg)plotly, Shiny, ... Für R steht viele praktische Bibliotheken für Visualisierung und Reporting. Man kann richtig einfach einen schönen Report mit R erstellen. David Robinson, ein Data Scientist, macht fast jede Woche ein screen cast. Er erstellt viele schöne Diagramme richtig schnell. Leider kann man mit Python nicht so schnell Daten analysieren.

Deep Learning: Wenn Deep Learning benötigt ist, beziehungsweise, du Fotos, Videos, Signals oder Texten verarbeiten und auswerten möchtest, ist Python De-Facto-Standard wegen PyTorch und TensorFlow. Leider ist R immer in der zweiten Klasse in der Welt von Deep Learning.

ML in der Produktion: Da Python eine allgemeine Programmiersprache ist, gibt es viele Software-Entwickler und DevOps Engineers, die Python verstehen können. Deswegen ist Python besser, wenn man ein trainiertes Modell in Produktion verwenden möchte. R in der Produktion wollte ich nicht überlegen...

Diese vier Punkte sind meiner Meinung nach das Urteilsmaterial.

Aber wenn du eine Programmiersprache für Masterarbeit brauchst, solltest du einmal die Frage an den Mitgliedern oder dem Professor vom Lab (von deiner Fachrichtung) stellen. Was für eine Programmiersprache man für Datenauswertung verwendet, ist nämlich abhängig vom Community. Es ist auch möglich, dass du eigentlich MATLAB verwendest.

Übrigens, wenn deine Fachrichtung Data Science ist, dann solltest du auf jeden Fall die beiden Programmiersprachen lernen.

...zur Antwort

Laut Encyclopedia of Machine Learning von Springer, ist "Topology of a Neural Network" ein Synonym von "neural network architecture". Deswegen gibt es keinen Unterschied zwischen den genannten Begriffen.

Aber "Topology of a neural network" kann sich auch auf den topologischen Aspekt eines neuronalen Netzes bzw. der Daten beziehen. Beispielsweise behandelt dieser Forschungsartikel algebraische Topologie, ein Gebiet in Mathematik.

Also, im Grunde gibt es keinen Unterschied, aber man muss manchmal auf dem Begriff "Topologie" achten.

...zur Antwort

Was du mit deinem Python-Skript machst, ist es, den folgenden Befehl auf command line (cmd.exe oder PowerShell) auszuführen.

start Opera www.google.com

Dann bekommst du dieselbe Fehlermeldung.

Was für einen Befehl du brauchst, kannst du finden unter https://www.deskmodder.de/wiki/index.php?title=Opera_mit_Command_Lines_starten . Dieser Eintrag ist zwar ein bisschen alt, aber der gleiche Methode sollte noch gelten. Also aus Opera Icon richts anklicken -> Properties / Eigenschaften. Dann kannst du den Befehl finden.

Dann versuche mal den Befehl + URL auf command line

der_befehl_den_du_gefunden_hast www.google.com

Wenn der Befehl Opera startet und Google öffnet, dann der Reste ist einfach: den Befehl mit Leerzeichen zu teilen und damit eine Liste zu schreiben. Die Liste kannst du einfach in subprocess.call eingeben. Also dein Code ist richtig nur außer dem Inhalt von der Liste.

Leider habe ich gerade kein Windows, aber meine Erklärung sollte gehen.

...zur Antwort

Deep Learning, a.k.a. neuronales Netz, gehört zu maschinellem Lernen und das Ziel vom DL ist gleich wie ML: mathematische Modellierung.

Der größte Unterschied zwischen DL und anderen ML Algorithmen ist die Flexibilität. Mit DL kann man extrem ein komplexes Modell bauen. Vor allem kann man mit DL ein Modell von den Daten bauen, die nicht tabellarisch ist. Z.B. Bilder, Texts, Signal Daten (Audio, usw).

(Man kann solche Daten zuerst durch Feature Extraction tabellarische Daten konvertieren und danach ML dafür verwenden. Aber das ist gar nicht einfach. DL hat das komplett geändert.)

Eine der typischen Eigenschaften der Daten, mit denen DL gut umgehen kann, ist ein großer Raum der Darstellung. Zum Beispiel ist der Raum vom 1024x768 Bilder 1024x768x3 dimensional. Der Raum der Darstellung von Texten ist natürlich riesig. Um ein Muster solcher Daten mit DL zu erkennen, braucht man einen großen Datensatz.

Also für eine typische Anwendung vom DL (Bilder, Texte, Signal, usw) braucht man oft einen großen Datensatz, um ein gutes Modell zu bauen.

Aber "Big Data" bezieht normalerweise Hadoop Cluster/Ökosystem, verteilte Filesystem. Also "Big Data" ist nicht gleich wie "großer Datensatz". Deswegen gibt es keine direkte Beziehung zwischen "Big Data" und "großen Datensatz". Aber manchmal sieht man die Kombination von DL und Big Data, weil Hadoop System sehr gut mit den unstrukturierten Daten (wie. Texten) umgehen kann.

...zur Antwort

Das liegt daran, dass smtplib eine der Standard-Bibliotheken ist. Sieh https://docs.python.org/3/library/smtplib.html . Deshalb gibt es smtplib nicht in PyPI, sondern kann man smtplib verwenden, ohne eine weitere Bibliothek zu installieren.

...zur Antwort

Um das genaue Algorithmus zu verstehen, muss man die Dokumentation lesen, aber es ist etwas leichter zu verstehen, was die Funktion macht.

Das folgende Bild zeigt ein Heatmap der Abbildung



Bild zum Beitrag

Du wolltest dieses Bild haben, aber du hast jetzt nur die Werte auf den 1000 Punkten.

points = np.random.rand(1000, 2) ## x und y
values = func(points[:,0], points[:,1])

Also deine Daten sehen wie folgend aus.

Bild zum Beitrag

Die Scipy Funktion griddata ergänzt die Werte auf den Punkten, wo wir keine Daten haben. Das Ergebnis ist folgend:

Bild zum Beitrag

Natürlich ist das Ergebnis nicht perfekt, aber mehr oder weniger können wir das erste Bild reproduzieren.

...zur Antwort
Python to GeoJSON: Wieso bekomme ich einen Bereich und keinen Einzelwert?

Hallo,

ich soll folgenden Python code auf unser Seminarprojekt übertragen. Es geht darum eine dataframe in GeoJson zu konvertieren und daraus eine Heatmap zu erstellen. Ich habe leider große Probleme den Code zu verstehen und hoffe, dass mir jemand helfen kann.

#Extrating x,y and values (z)
z=df_map.Price
y=df_map.lat_mod
x=df_map.lon_mod

x und y bekommen die Koordinaten und z bekommt die Werte aus dem DataFrame.

#Interpolating values to get better coverage
xi = linspace(x.min(),x.max(),100);
yi = linspace(y.min(),y.max(),100);
zi = griddata((x, y), z, (xi[None,:], yi[:,None]), method='linear')

Hier werden die Werte interpoliert und in ein Gitter gepackt.

step_size = 1000
cs = plt.contourf(xi, yi, zi, range(5000, int(np.nanmax(zi)) + step_size, step_size), cmap=plt.cm.jet)

contourf() macht aus den Quadraten Kontourlinien und füllt die Flächen zwischen den Linien. Ich habe leider nicht verstanden wie die range() funktion in diesem Beispiel funktioniert. Eine Erklärung wäre super, aber nicht das entscheidende.

geojson = geojsoncontour.contourf_to_geojson(
    contourf=cs,
    ndigits=3,
) 

Die Konvertierung der Konturflächen in GeoJSON.

price_geojson=eval(geojson)
price_geojson["features"][0]["properties"]["title"]

Das ist glaube ich der entscheidende Teil. Im Tutorial kommt hier '5000.00 ' raus.
ich bekomme mit meinen angepassten Werten ' 80.00 - 160.00 ' raus. Das ist ein Problem weil ich diesen String später in float umrechnen muss.

Ich kann den letzten Teil:

price_geojson["features"][0]["properties"]["title"]

leider gar nicht lesen und würde mich da über Hilfe freuen. Und wenn mir jemand erklären kann wieso ich einen Bereich bekomme und das Tutorial einen konkreten Wert wäre das noch besser.

Ich erkläre mir den Bereich dadurch, dass das 'der Wert' zwischen den Kontourlinien ist, also der Wert der Fläche. Aber wieso ist es im Tutorial nur ein Wert?

...zum Beitrag

Angenommen, dass das "Tutorial" dieses Notebook ist. Leider kann ich das Ergebnis vom Notebook wieder produzieren. Sondern bekomme ich auch einen Bereich '5000.00-6000.00 '.

Aber das liegt vermutlich daran, dass man im Tutorial "contourf" verwendet. Wenn du "contour" verwendest, bekommst du eine Zahl mit einem Leerzeichen '5000.00 '.

Der Unterschied zwischen Tutorial und meinem Code liegt wahrscheinlich an der Version von einer Bibliothek. Aber welche Bibliothek weiß ich nicht.

Bild zum Beitrag

...zur Antwort
Warum Trainings Instanzen in Deep Learning?

Ich habe die folgende Methode get_train_instances. Dies erfordert eine Matrix (train_mat), eine One-Hot-Matrix, die aus Benutzern und Elementen besteht. Außerdem sind mehrere negative (num_negatives) Elemente erforderlich, z. B. 4. Ich möchte dies verstehen Methode im Detail und bin daher auf der Suche nach einer Erklärung, warum diese Methode ausgeführt wird. Gibt es Bücher, Schriften, Papiere, Zeitungsartikel, über die ich mehr darüber erfahren könnte, warum diese Methode durchgeführt werden sollte und was genau sie bewirkt?

def get_train_instances(train_mat, num_negatives):
    user_input, item_input, labels = [], [], []
    num_user, num_item = train_mat.shape
    for (u, i) in train_mat.keys():
        user_input.append(u)
        item_input.append(i)
        labels.append(1)
        # negative instances
        for t in range(num_negatives):
            j = np.random.randint(num_item)
            while (u, j) in train_mat.keys():
                j = np.random.randint(num_item)
            user_input.append(u)
            item_input.append(j)
            labels.append(0)
    return user_input, item_input, labels

Diese Methode wird in einem tief lernenden neuronalen Netzwerk verwendet. Ich habe dies so verstanden, dass diese Methode verwendet wird, um Trainingsmuster zu erstellen, damit sich das Modell dann verbessern kann. Ich bin mir jedoch nicht sicher und suche daher nach einer guten Erklärung mit einer Empfehlung für ein Buch, ein Papier, einen Zeitungsartikel, .... über die ich mehr darüber erfahren kann, warum und wie ich vorgehen soll.

...zum Beitrag

Vermutlich bist du beschäftigt mit einem Recommender System und das ML Problem ist die Vorhersage, ob ein Benutzer (user) ein Produkt (item) bestellt/angeschaut.

Der Datensatz hat nur die Information darüber, wer (user) was (item) bestellt/angeschaut hat. Wenn du nur diese Information zum Training verwendest, ist die Zielvariable deines Datensatzes immer 1. Infolgedessen wird das trainiertes Modell nur 1 ergeben. Deswegen braucht man zum Training auch die Information, wer was nicht bestellt/angeschaut hat. Die zweite for-Schleife ist dafür nötig.

Das ist keine besondere Theorie, zum binary classification problem braucht man die Information über positive Instanzen (1) und negative Instanzen (0). Das was.

...zur Antwort

Grob gesagt, gibt es zwei Teilen in einer E-Mail: Header und Body

key1: value1
key2: value2

body

Die genaue Darstellung musst du selbst im Internet finden: Schlüsselwörter: RFC 822, RFC 2822, S/MIME, .... Wenn du solche Informationen in einer tabellarischen Format darstellen möchtest, musst du dich zuerst entscheiden, welches Feld du nimmst. Beispielsweise From, To, Message-ID, Date, Subject, .... und wahrscheinlich den Haupttext.

Python stellt eine Bibliothek als Default zur Verfügung, mit der man eine E-Mail als ein Python-Objekt bearbeiten kann: https://docs.python.org/3.7/library/email.parser.html Ich weiß nicht, ob du direkt die Bibliothek für die Zeile verwenden kannst. Aber wahrscheinlich hilft dir die Bibliothek.

...zur Antwort

Auch wenn "Deep Learning" ein Bereich ist, wo man oft/tatsächlich (künstliche) neuronales Netz erforscht, ist der Begriff nicht fest.

Im bekannten Buch "Deep Learning" steht nur eine unklare Darstellung. (Seite 1-2.) Im Artikel Deep Learning: Methods and Applications enthält Deep Learning auch hierarchical probabilistic models (Table 3.1).

Aber man kann einfach verstehen, dass in Deep Learning ein neuronales Netz wichtig ist, wenn man einen von den genannten Artikel liest. Also wenn du auf jeden Fall ein Zitat (beispielsweise für deinen wissenschaftlichen Artikel) brauchst, kannst du einfach einen von den genannten Artikel nennen. Aber ich bin der Meinung, dass du kein Zitat brauchst.

...zur Antwort
LSTM neuronales Netz Python Programmierfehler?

Hallo Liebe Python Community,

im Rahmen eines Programmiervorhabens bin ich auf ein Hindernis gestoßen, dass ich mit eurer Hilfe lösen möchte.

Ich generiere als erstes mit Hilfe eine PT1 Funktion den input Datensatz. Der generierte Datensatz enthält Insgesamt 50 float Daten. Die ersten 30 sollen zum Training des neuronalen Netzes verwendet werden. Anschließend sollen die letzten 20 Daten von 30 bis 50 mithilfe der Prediction Funktion vorhergesagt werden, was zur Zeit nicht funktioniert. Die Fehlermeldung habe ich unten eingeblendet.

Der Programmcode sieht folgendermaßen aus:

# Vanilla PT1 LSTM
import matplotlib.pyplot as plt
import numpy as np
from numpy import array
from keras.models import Sequential
from keras.layers import LSTM
from keras.layers import Dense
#################PT1 Datensatz###############
K=2
T=1
t=np.linspace(0,50)
a=K*(1-np.expm1(-t/T))
Zeitschiene = a.tolist()
plt.plot(t,a,'g')
plt.xlabel('Time')
plt.ylabel('Amplitude')
plt.legend()
plt.show()
#############################################
# split a univariate sequence into samples
def split_sequence(sequence, n_steps):
X, y = list(), list()
for i in range(len(sequence)):
# find the end of this pattern
end_ix = i + n_steps
# check if we are beyond the sequence
if end_ix > len(sequence)-1:
break
# gather input and output parts of the pattern
seq_x, seq_y = sequence[i:end_ix], sequence[end_ix]
X.append(seq_x)
y.append(seq_y)
return array(X), array(y)
# define input sequence
#raw_seq = [10, 20, 30, 40, 50, 60, 70, 80, 90]
raw_seq = Zeitschiene
# choose a number of time steps
n_steps = 3
# split into samples
X, y = split_sequence(raw_seq, n_steps)
# reshape from [samples, timesteps] into [samples, timesteps, features]
n_features = 1
X = X.reshape((X.shape[0], X.shape[1], n_features))
# define model
model = Sequential()
model.add(LSTM(50, activation='relu', input_shape=(n_steps, n_features)))
model.add(Dense(1))
model.compile(optimizer='adam', loss='mse')
# fit model
model.fit(X, y, epochs=200, verbose=0)
# demonstrate prediction
for item in Zeitschiene[27:29]:
  x_input = array([Zeitschiene[int(item)]])
x_input = x_input.reshape((1, n_steps, n_features))
for i in Zeitschiene[30:]:
  yhat = model.predict(
  x_input, batch_size=None, verbose=0, steps=None, callbacks=None, max_queue_size=10,
  workers=1, use_multiprocessing=False)
  #print(yhat)
  plt.xlabel('Time')
  plt.ylabel('Amplitude')
  plt.legend()
  plt.show(t,yhat,'r')

Die Fehlermeldung sieht folgendermaßen aus:

ValueError: cannot reshape array of size 1 into shape (1,3,1)

Meine Vermutung liegt nahe das der Fehler sich in dieser Umgebung befindet, nur kann ich in eine for Schleife keine drei Zahlen aufeinmal weitergeben. Vielleicht hat jemand von euch eine bessere Idee....

...zum Beitrag

Der Teil

# demonstrate prediction
for item in Zeitschiene[27:29]:
  x_input = array([Zeitschiene[int(item)]])
x_input = x_input.reshape((1, n_steps, n_features))

sollte

x_input = np.array(Zeitschiene[27:30]).reshape((1,n_steps, n_features))

sein, oder?

Aber vielleicht solltest du die Logik nach model.fit() nochmal überprüfen. Beispielsweise benutzt du "i" gar nicht in der Logik der letzten for Schleife.

...zur Antwort

Wenn du die Spalte "Anzahl" durch die Zahlen der ersten Tabelle ersetzen möchtest, musst du einfach die originelle Tabelle (df) und die erste Tabelle mergen:

df.drop("Anzahl", axis=1).merge(df_count_fclass, on="fclass")

Dann die Anzahl der Tabelle (df) verändert sich nicht, und die Spalte "Anzahl" zeigt die Anzahl der entsprechenden "fclass" in der originellen Tabelle.

Der Grund für die komischen Werte in der Spalte "Anzahl" ist, dass du eine Spalte (df["Anzahl"]) ein DataFrame zuordnest. Das Ergebnis der folgenden Zeile ist nämlich keine Series, sondern ein DataFrame mit zwei Spalten.

df.groupby('fclass', as_index=False).count()[["fclass", "Anzahl"]].sort_values(by="Anzahl",ascending=False)
...zur Antwort

Wenn ich richtig verstehe, fragst du, warum die Summe der Höhe von Säulen im ersten Histogramm nicht 1 ist, oder?

Dann was du berechnen sollst, ist nicht die Summe der Höhe, sondern die Summe der Fläche der Säulen. Die Fläche muss 1 sein.

NB: "density" Option von plt.hist: https://matplotlib.org/api/_as_gen/matplotlib.pyplot.hist.html?highlight=hist#matplotlib.pyplot.hist

...zur Antwort

An deiner Stelle würde ich mal überprüfen, ob ich dieselbe Umgebung verwenden würde. Führe mal die folgenden Zeilen in deiner conda Umgebung und auf PyCharm aus.

import sys
print(sys.executable)

Vermutlich bekommst du unterschiedliche Ergebnisse.

Wenn das der Fall ist, musst du PyTorch (mit CUDA Support) nochmal installieren, aber auf Terminal von PyCharm.

...zur Antwort

Wenn das Problem eine Hausaufgabe oder eine Übung eines Buchs ist, hast du wahrscheinlich eine Anweisung, wie du das Gleichungssystem darstellen solltest. Es gibt nämlich keine Standard-Darstellung eines Gleichungssystems. Vor allem ist die Darstellung von der unbekannten Variable x gar nicht klar. (Es gibt keine "unbekannte Variable" in Python, es sei denn, du temporäre Zahlen verwendest. Z.B. der Nullvektor.)

Wenn das Problem dein persönliches Projekt ist, solltest du etwas überlegen, was für dich am besten ist. An deiner Stelle würde ich einfach NumPy verwenden, weil man damit einfach lineare Algebra machen kann. Aber leider habe ich keine Ahnung, ob NumPy für dein Zweck geeignet ist.

...zur Antwort

Hast du beispielsweise bei stepstone oder monster den Job-Titel gesucht? Dann kannst du wahrscheinlich ein Kriterium wie folgend finden.

Erfolgreich abgeschlossenes Hochschulstudium in der Fachrichtung Wirtschaftswissenschaften, (Wirtschafts-) Informatik, (Wirtschafts-) Ingenieurwesen, (Wirtschafts-) Mathematik oder eines vergleichbaren Studienganges

Das ist typisch und im Grunde ist es ziemlich egal, was du studierst. Eins von MINT (bzw. STEM) ist passend. Auch wenn viele Data Scientists MSc oder PhD haben, braucht man solchen Titel nicht, um Data Scientist zu werden. (Ich kenne viele Data Scientist ohne PhD oder MSc. Die Mehrheit hat MSc.)

Wichtig ist, dass du proaktiv etwas lernen musst, was zu deinem Studiengang nicht gehört. Das liegt daran, dass die benötigen Fähigkeiten für Data Scientist in der Schnittmenge von Mathematik/Statistik, Softwareentwicklung und Domain Knowledge liegen. Es gibt keinen Studiengang, wo man alles für Data Science lernen kann. Also wenn du Statistik studierst, musst du zumindest Computer Science lernen. (Es gibt aber mehre Master Courses für Data Science.)

Meine Empfehlung ist, etwas (in MINT) zu lernen, was dich interessiert und was zusätzlich für Data Science benötigt ist. Deine Motivation ist am wichtigsten.

...zur Antwort