I am running the Wolfram Language inside a Jupyter Notebook. Since Wolfram Research made the Wolfram Engine free last month, and since there is now a respectable Jupyter client for the Wolfram Engine (https://github.com/WolframResearch/WolframLanguageForJupyter), one can do a whole lot of computation for free. I've found bugs and limitations, yes, but it makes the many capabilities of the Wolfram Language, including its knowledgebase, available to a huge audience. Plus, although the Mathematica Front End is much more sophisticated than Jupyter, the latter has some nifty features and, above all, is free.

PlotsΒΆ

In [18]:
Plot[Sin[x],{x,0,7},PlotLabel->"2D Plots Work Pretty Well!",PlotLegends->"I'm missing something"]
Out[18]:
Output
In [15]:
Framed[Plot3D[Sin[Cos[x+2y]-x],{x,0,6},{y,0,2\[Pi]},ColorFunction->(Hue[#]&),
    MeshFunctions->{#3&},PlotLabel->"3D Plots work!"]]
Out[15]:
Output

Recurrence equations with plotsΒΆ

In [7]:
With[{mortgageExpression=k/.First@Solve[0==x[t]/.First@RSolve[{x[0]==1,x[t+1]==(1+r)x[t]-k},x[t],t]/.t->30,k]},
     Plot[mortgageExpression,{r,0.01,0.09},AxesLabel->{"Interest Rate","Yearly Payment Fraction"},
          PlotLabel->Style["Mortgage Amortization Payments\n
    as Function of Interest Rate",14]]
    ]
Out[7]:
Output

Neural NetworksΒΆ

Takes categorical data on the Titanic and uses automated machine learning to build a classifier that will predict whether a person survives.

In [25]:
cl=Classify[titanic];
cmo=ClassifierMeasurements[cl,ExampleData[{"MachineLearning", "Titanic"}, "TestData"]];
cmo["ConfusionMatrixPlot"]
 | Time elapsed: | Training example used: | Current best method: | Current\
 
>   accuracy: | Current loss: | 
 |    0.767s     |        150/916         |  LogisticRegression  |      \
 
>   0.773       |     0.506     | 
 |     1.3s      |        733/916         |  LogisticRegression  |      \
 
>   0.775       |     0.502     | 
Out[25]:
Output

Now build a custom neural network to do the same thing.

In [12]:
data = ExampleData[{"Dataset", "Titanic"}];
data = DeleteMissing[data, 1, 2];
{trainingData, testData} = TakeDrop[RandomSample[data], 800];
classEncoder = 
 NetEncoder[{"Class", {"1st", "2nd", "3rd"}, "UnitVector"}];
genderEncoder = 
 NetEncoder[{"Class", {"male", "female"}, "UnitVector"}];
    net = NetGraph[{CatenateLayer[], LinearLayer[], 
   LogisticSigmoid}, {{NetPort["class"], NetPort["age"], 
     NetPort["sex"]} -> 1, 1 -> 2 -> 3 -> NetPort["survived"]}, 
  "class" -> classEncoder, "age" -> "Scalar", "sex" -> genderEncoder, 
  "survived" -> "Boolean"];
    results = NetTrain[net, trainingData, All, MaxTrainingRounds -> 50];
trained = results["TrainedNet"];
Starting training.
Optimization Method: ADAM
Device: CPU
Batch Size: 64
Batches Per Round: 13
Training Examples: 800
Training complete.
In [20]:
trained[<|"class" -> "2nd", "age" -> 24, "sex" -> "female"|>]
Out[20]:
Output

KnowledgebaseΒΆ

In [21]:
Entity["DogBreed", "SiberianHusky"]["Image"]
Out[21]:
Output
In [23]:
CombinedEntityClass[FilteredEntityClass["Isotope", 
   EntityFunction[i, i["Element"] == Entity["Element", "Hydrogen"] || 
     i["Element"] == Entity["Element", "Lithium"]]], EntityClass["Element", "Period1"], 
  "Element" -> "Entity", "Left"][{EntityProperty["Isotope", "Name"], 
  EntityProperty["Element", "Name"]}]
Out[23]:
Output
In [7]:
ResourceFunction[
 "MapAtKey"][{"a" -> (#^2 &), "b" -> (#/2 &)}, <|"a" -> 10, "b" -> 2, "c" -> 3|>]
Out[7]:
<|a -> 100, b -> 1, c -> 3|>

Datasets but no formattingΒΆ

In [10]:
Dataset[{{3,4},{5,6}}]
Out[10]:
Dataset[{{3, 4}, {5, 6}}, TypeSystem`Vector[TypeSystem`Vector[TypeSystem`Atom[Integer], 2], 2], <|ID -> 122071731521774|>]

Network Analysis and VisualizationΒΆ

In [21]:
CommunityGraphPlot[
 ExampleData[{"NetworkGraph", "DolphinSocialNetwork"}]]
Installing data from Wolfram Research data server ....
Installing data from Wolfram Research data server ....
Out[21]:
Output

Running Python within Wolfram within JupyterΒΆ

In [29]:
ExternalEvaluate["Python", "[i**2 for i in range(10)]"]
Out[29]:
{0, 1, 4, 9, 16, 25, 36, 49, 64, 81}
In [31]:
ExternalEvaluate["Python","import calendar
[calendar.day_name[i] for i in range(7)]"](* can even do imports!!*)
Out[31]:
{Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday}