Ich bin ein Neuling für Machine Learning und versuche, einen Fehler zu beheben, den ich mit der OneHotEncoder-Klasse erhalte. Der Fehler ist: "Erwartetes 2D-Array, stattdessen 1D-Array". Wenn ich also an 1D-Arrays denke, ist es ungefähr so: [1,4,5,6]
und ein 2D-Array wäre [[2,3], [3,4], [5,6]]
, aber ich kann immer noch nicht herausfinden, warum das fehlschlägt. Es versagt in dieser Zeile:Fehler "Erwartetes 2D-Array, stattdessen 1D-Array" Verwenden von OneHotEncoder
X[:, 0] = onehotencoder1.fit_transform(X[:, 0]).toarray()
Hier ist meine ganze Code:
# Import Libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# Import Dataset
dataset = pd.read_csv('Data2.csv')
X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, 5].values
df_X = pd.DataFrame(X)
df_y = pd.DataFrame(y)
# Replace Missing Values
from sklearn.preprocessing import Imputer
imputer = Imputer(missing_values = 'NaN', strategy = 'mean', axis = 0)
imputer = imputer.fit(X[:, 3:5 ])
X[:, 3:5] = imputer.transform(X[:, 3:5])
# Encoding Categorical Data "Name"
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_x = LabelEncoder()
X[:, 0] = labelencoder_x.fit_transform(X[:, 0])
# Transform into a Matrix
onehotencoder1 = OneHotEncoder(categorical_features = [0])
X[:, 0] = onehotencoder1.fit_transform(X[:, 0]).toarray()
# Encoding Categorical Data "University"
from sklearn.preprocessing import LabelEncoder
labelencoder_x1 = LabelEncoder()
X[:, 1] = labelencoder_x1.fit_transform(X[:, 1])
Ich bin sicher, dass Sie von diesem Code kann sagen, dass ich 2 Spalten haben, die Etiketten waren. Ich habe den Label Encoder verwendet, um diese Spalten in Zahlen zu verwandeln. Ich möchte OneHotEncoder verwenden, um es noch einen Schritt weiter zu nehmen und diese in eine Matrix drehen, um jede Zeile so etwas wie dieses haben würde:
0 1 0
1 0 1
Das einzige, was in den Sinn kam, war, wie ich die Etiketten codiert. Ich habe sie nacheinander gemacht, anstatt sie alle gleichzeitig zu machen. Nicht sicher, das ist das Problem.
Ich hatte gehofft, so etwas zu tun:
# Encoding Categorical Data "Name"
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_x = LabelEncoder()
X[:, 0] = labelencoder_x.fit_transform(X[:, 0])
# Transform into a Matrix
onehotencoder1 = OneHotEncoder(categorical_features = [0])
X[:, 0] = onehotencoder1.fit_transform(X[:, 0]).toarray()
# Encoding Categorical Data "University"
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_x1 = LabelEncoder()
X[:, 1] = labelencoder_x1.fit_transform(X[:, 1])
# Transform into a Matrix
onehotencoder2 = OneHotEncoder(categorical_features = [1])
X[:, 1] = onehotencoder1.fit_transform(X[:, 1]).toarray()
Nachfolgend finden Sie meine ganze Fehler finden:
File "/Users/jim/anaconda3/lib/python3.6/site-packages/sklearn/utils/validation.py", line 441, in check_array
"if it contains a single sample.".format(array))
ValueError: Expected 2D array, got 1D array instead:
array=[ 2. 1. 3. 2. 3. 5. 5. 0. 4. 0.].
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.
Jede Hilfe in die richtige Richtung wäre toll.
Verwenden 'X zu beheben [:, 0] = onehotencoder1.fit_transform (X [:, 0] .reshape (-1,1)). Toarray () ' –