# Untitled

unknown
plain_text
7 months ago
1.5 kB
3
Indexable
Never
```import scipy.odr as o
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

def r_squared(y_true, y_pred):
mean_y = np.mean(y_true)
ss_total = np.sum((y_true - mean_y) ** 2)
ss_residual = np.sum((y_true - y_pred) ** 2)
r2 = 1 - (ss_residual / ss_total)
return r2

exceldata = r'C:\Users\AhmadJami\Desktop\Neuer Ordner\Test - Kopie.xlsx'

# Work with the subset of data starting from row 13
data = data_full.iloc[12:].copy()

x = data["Messzeitpunkt"]
y = data["Wert"]

xy = o.Data(x, y)
r2_list = {}

for n in range(len(x)):
model = o.polynomial(n)
odr_obj = o.ODR(xy, model)
output = odr_obj.run()
poly = np.poly1d(output.beta[::-1])
poly_y = poly(x)
r2 = r_squared(y, poly_y)
r2_list[n] = [r2, output]

key_max = max(r2_list, key=lambda k: r2_list[k][0])

poly = np.poly1d(r2_list[key_max][1].beta[::-1])
poly_y = poly(x)
plt.plot(x, y, label="input data")
plt.plot(x, poly_y, label="polynomial ODR")
plt.title(key_max)
plt.legend()
plt.show()

koeff_list = np.polyfit(x, y, key_max)[::-1]

func_str = "f(x) = "

for i in range(0, key_max + 1):
if i == key_max:
func_str = func_str + str(koeff_list[i])
else:
func_str = func_str + str(koeff_list[i]) + "x^{" + str(key_max - i) + "} + "

print(func_str)

# Write the entire DataFrame (including the first 12 rows) back to Excel
data_full.to_excel(exceldata, index=False)
```