sklearn-LinearRegression: could not convert string to float -: '--'
Ich versuche, mit einer LinearRegression aus sklearn und ich bin immer eine "Konnte nicht konvertiert einen string zu float'. Alle Spalten der dataframe sind float und der Ausgang y ist auch float. Ich habe mir andere Beiträge und Anregungen sind zu wandeln, zu schweben, das ich getan habe.
<class 'pandas.core.frame.DataFrame'>
Int64Index: 789 entries, 158 to 684
Data columns (total 8 columns):
f1 789 non-null float64
f2 789 non-null float64
f3 789 non-null float64
f4 789 non-null float64
f5 789 non-null float64
f6 789 non-null float64
OFF 789 non-null uint8
ON 789 non-null uint8
dtypes: float64(6), uint8(2)
memory usage: 44.7 KB
type(y_train)
pandas.core.series.Series
type(y_train[0])
float
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test=train_test_split(X,Y,random_state=0)
X_train.head()
from sklearn.linear_model import LinearRegression
linreg = LinearRegression().fit(X_train, y_train)
Den Fehler den ich bekomme, ist ein
ValueError Traceback (most recent call last)
<ipython-input-282-c019320f8214> in <module>()
6 X_train.head()
7 from sklearn.linear_model import LinearRegression
----> 8 linreg = LinearRegression().fit(X_train, y_train)
510 n_jobs_ = self.n_jobs
511 X, y = check_X_y(X, y, accept_sparse=['csr', 'csc', 'coo'],
--> 512 y_numeric=True, multi_output=True)
513
514 if sample_weight is not None and np.atleast_1d(sample_weight).ndim > 1:
527 _assert_all_finite(y)
528 if y_numeric and y.dtype.kind == 'O':
--> 529 y = y.astype(np.float64)
530
531 check_consistent_length(X, y)
ValueError: could not convert string to float: '--'
Bitte helfen.
- was sind
X
undY
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eine schnelle Lösung würde bedeuten, mit
pd.to_numeric
zu konvertieren, was auch immer strings Ihre Daten enthalten können, um numerische Werte. Wenn Sie nicht kompatibel sind mit der Konvertierung, Sie werden reduziert aufNaN
s.Darüber hinaus können Sie wählen, zu füllen, die diese Werte mit einigen Standard:
Ersetzen Sie die Füllung mit dem Wert, mit was auch immer relevant ist, um Ihre problem. Ich empfehlen nicht, fallen diese Zeilen, weil Sie könnten am Ende fallen die verschiedenen Reihen von
X
undY
verursacht ein Daten-label mismatch.Schließlich, split und rufen Sie Ihren Klassifizierer:
Nan
s LinearRegression.fit() wird immer noch ein Fehler ausgelöst.Ich denke, es ist besser zu konvertieren alle string-Spalten auf Binär(0,1) mit Hilfe der label-Verschlüsselung oder one-hot-Kodierung nach als unsere lineare regression verhält sich viel besser.!!