Mit scikit-learn LinearRegression in den plot ein linearer fit
Ich versuche, lineares Regressionsmodell für die Vorhersage der Sohn die Länge seines Vaters, Länge
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
import seaborn as sns
%matplotlib inline
from sklearn.linear_model import LinearRegression
Headings_cols = ['Father', 'Son']
df = pd.read_csv('http://www.math.uah.edu/stat/data/Pearson.txt',
delim_whitespace=True, names=Headings_cols)
X = df['Father']
y = df['Son']
model2 = LinearRegression()
model2.fit(y, X)
plt.scatter(X, y,color='g')
plt.plot(X, model.predict(X),color='g')
plt.scatter(y, X, color='r')
plt.plot(y, X, color='r')
Bekomme ich Fehler
ValueError: could not convert string to float: 'Father'
Die zweite Sache ist die Berechnung der durchschnittlichen Länge der Söhne, und der Standardfehler des Mittelwertes ?
- In welcher Codezeile bekommst du den Fehler?
- X = df['Vater'] y = df ["Sohn"]
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es hier zwei Hauptthemen:
sklearn.LinearRegression.fit
versteht1. Abrufen der Daten aus
Die source-Datei enthält eine Kopfzeile mit den Spaltennamen. Wir wollen nicht Spalten-Namen in unserer Datenbank, also nach dem Einlesen der ganzen Daten in den dataframe
df
können wir sagen, dass die erste Zeile als Header durchdf.head()
. Dies ermöglicht später die Abfrage der dataframe, indem Sie die Spaltennamen, wie üblich, d.h.df['Father']
.2. Das abrufen von Daten in Form
Die
sklearn.LinearRegression.fit
nimmt zwei Argumente. Zuerst die "Trainingsdaten", das sollte ein 2D-array, der zweite die "soll-Werte". In dem Fall gilt hier, dass wir einfach was zu machen passen, also wir kümmern uns nicht über die Begriffe zu viel, aber wir brauchen, um das erste Eingabe-Funktion in die gewünschte Form. Dies kann leicht getan werden, indem eine neue Achse zu einem der arrays, d.h.df['Father'].values[:,np.newaxis]
Die komplette Arbeit skript:
Beim laden der Daten, versuchen Sie stattdessen:
Sollten Sie auch sicherstellen, dass X-förmige richtig:
model2.fit (X, y)
LinearRegression.fit
es erwartet die Eingabe der Daten. So Umbildung oder Umkehrung der Reihenfolge der Elemente nicht helfen. Man braucht, um eine neue dimension hinzufügen, um das erste Eingabe-array, wie gezeigt, in der meine Lösung.X = df['Father'].values.reshape(-1, 1)