Linearregression von zwei DataFrames

MisterY

Urgestein
Thread Starter
Mitglied seit
17.03.2007
Beiträge
2.711
Ich habe zwei DataFrames:

Code:
import numpy as np
from sklearn.metrics import mean_squared_error, r2_score
from sklearn.linear_model import LinearRegression
np.random.seed(12)
import pandas as pd

df = pd.DataFrame(np.random.randint(0,100,size=(3, 4)), columns=list('ABCD'), index=['Tokyo', 'New York', 'Ontario'])
df2 = pd.DataFrame([{'A': -4, 'B': -3, 'C': -2, 'D': 8}])

ich möchte für jede Zeile von "df" eine Lineare Regression mit df2 als Basis (X-Achse) erstellen. Also ähnlich wie hier:


qVlTzHw.png



Ich möchte dann die Slope getrennt nach "m" und "n" in separate Spalten in einem neuen DataFrame einfügen, genau wie R².



Mein Ansatz wäre gewesen:

Code:
    for index, row in df.iterrows():
        reg = np.polyfit(df2, row, 1)
        predict = np.poly1d(reg) # Slope and intercept
        trend = np.polyval(reg, df2)
        std = row() # Standard deviation
        r2 = np.round(r2_score(row, predict(df2)), 5) #R-squared
        r2string = str(r2)

Das resultiert aber in einem "TypeError: can only concatenate str (not "float") to str". Mag das daran liegen, dass in der ersten Spalte von "df" noch Bezeichnungen für die Spalte stehen? Also neben "0.4238227" steht noch ein "Stadt A" oder sowas. Dieser String ist aber wichtig und muss in df3 übertragen werden.

Hat einer eine Idee, wie ich das anstellen könnte?
 
Zuletzt bearbeitet:
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh