Ich habe die symbolische Regression ausprobiert und mich gefragt, wie ich damit beispielsweise eine Reihe des Pascalschen Dreiecks annähern kann. Ich erstelle die Daten mit:
import math
def print_pascals_triangle_row(n):
row = []
for k in range(n + 1):
coefficient = math.comb(n, k)
row.append(coefficient)
return row
n = 20
pascals_triangle_row = print_pascals_triangle_row(n)
Das ergibt:
[1,
20,
190,
1140,
4845,
15504,
38760,
77520,
125970,
167960,
184756,
167960,
125970,
77520,
38760,
15504,
4845,
1140,
190,
20,
1]
y = pascals_triangle_row
X = np.array(range(len(y))).reshape(-1, 1)
Richten Sie das Modell ein:
from pysr import PySRRegressor
model = PySRRegressor(
maxsize=15,
niterations=5000, # < Increase me for better results
binary_operators=["+", "*"],
unary_operators=[
"log",
"exp",
"inv",
"square",
"sqrt",
"sign",
# ^ Custom operator (julia syntax)
],
# ^ Define operator for SymPy as well
elementwise_loss="loss(prediction, target) = (prediction - target)^2",
# ^ Custom loss function (julia syntax)
)
Und schließlich das Modell anpassen:
model.fit(X, y)
Dies ergibt kein annähernd genaues Modell. Ich vermute, dass der Hauptgrund darin besteht, dass x**x nicht ausgeführt werden kann, was einer faktoriellen Annäherung erforderlich ist.
Gibt es eine Möglichkeit, die symbolische Regression zu ermöglichen, um das zu verwenden? binärer Operator **?
Wie verwende ich die symbolische Regression mit dem Pascalschen Dreieck? ⇐ Python
-
- Similar Topics
- Replies
- Views
- Last post