Существует причина, по которой в Как создать минимальный воспроизводимый пример мы просим:
Убедитесь, что вся информация, необходимая для воспроизведения проблемы, включена в самом вопросе
, а не в каком-то внешнем файле, части которого вы можете или не могли правильно выполнить.
Я говорю это, потому что не могу воспроизвестиваша ошибка;Выполнение соответствующих частей связанного кода работает хорошо здесь:
import numpy as np
import pandas as pd
import sklearn
sklearn.__version__
# '0.21.3'
# Importing the dataset
dataset = pd.read_csv('50_Startups.csv')
X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, 4].values
# Encoding categorical data
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder = LabelEncoder()
X[:, 3] = labelencoder.fit_transform(X[:, 3])
onehotencoder = OneHotEncoder(categorical_features = [3])
X = onehotencoder.fit_transform(X).toarray()
# Avoiding the Dummy Variable Trap
X = X[:, 1:]
# Splitting the dataset into the Training set and Test set
from sklearn.model_selection import train_test_split # model_selection here, due to newer version of scikit_learn
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)
# FutureWarning here, irrelevant to the issue
На этом этапе у нас есть:
y_train
# result:
array([ 96778.92, 96479.51, 105733.54, 96712.8 , 124266.9 , 155752.6 ,
132602.65, 64926.08, 35673.41, 101004.64, 129917.04, 99937.59,
97427.84, 126992.93, 71498.49, 118474.03, 69758.98, 152211.77,
134307.35, 107404.34, 156991.12, 125370.37, 78239.91, 14681.4 ,
191792.06, 141585.52, 89949.14, 108552.04, 156122.51, 108733.99,
90708.19, 111313.02, 122776.86, 149759.96, 81005.76, 49490.75,
182901.99, 192261.83, 42559.73, 65200.33])
, который я держу пари, это не случай с вашим полным кодом (не показан).
Немного изменив последнюю строку ниже до y_train.reshape(-1,1)
(опять же, не имеет отношения к проблеме - если нет, мы получаем другую ошибку, запрашивая это), мы имеем:
# Feature Scaling
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.transform(X_test)
sc_y = StandardScaler()
y_train = sc_y.fit_transform(y_train.reshape(-1,1)) # reshape here
, который работает нормально, давая
y_train
# result
array([[-0.31304376],
[-0.32044287],
[-0.09175449],
[-0.31467774],
[ 0.3662475 ],
[ 1.14433163],
[ 0.57224308],
[-1.10020076],
[-1.82310158],
[-0.20861649],
[ 0.50587547],
[-0.23498575],
[-0.29700745],
[ 0.43361398],
[-0.93778138],
[ 0.22309235],
[-0.98076868],
[ 1.05682957],
[ 0.61437014],
[-0.05046517],
[ 1.17493831],
[ 0.39351679],
[-0.77118537],
[-2.34186247],
[ 2.03494965],
[ 0.79423047],
[-0.48182335],
[-0.02210286],
[ 1.15347296],
[-0.01760646],
[-0.46306547],
[ 0.04612731],
[ 0.32942519],
[ 0.9962397 ],
[-0.70283485],
[-1.4816433 ],
[ 1.81525556],
[ 2.04655875],
[-1.65292476],
[-1.09342341]])
Очевидно, что вместо y = dataset.iloc[:, 4].values
вы запросили y = dataset.iloc[:, 3].values
, что дает:
dataset.iloc[:, 3].values
# result:
array(['New York', 'California', 'Florida', 'New York', 'Florida',
'New York', 'California', 'Florida', 'New York', 'California',
'Florida', 'California', 'Florida', 'California', 'Florida',
'New York', 'California', 'New York', 'Florida', 'New York',
'California', 'New York', 'Florida', 'Florida', 'New York',
'California', 'Florida', 'New York', 'Florida', 'New York',
'Florida', 'New York', 'California', 'Florida', 'California',
'New York', 'Florida', 'California', 'New York', 'California',
'California', 'Florida', 'California', 'New York', 'California',
'New York', 'Florida', 'California', 'New York', 'California'],
dtype=object)
С этим изменением приведенный выше код действительно дает:
y_train
# result:
array(['Florida', 'New York', 'Florida', 'California', 'Florida',
'Florida', 'Florida', 'New York', 'New York', 'New York',
'New York', 'Florida', 'California', 'California', 'California',
'California', 'New York', 'New York', 'California', 'California',
'New York', 'New York', 'California', 'California', 'California',
'Florida', 'California', 'New York', 'California', 'Florida',
'Florida', 'New York', 'New York', 'California', 'California',
'Florida', 'New York', 'New York', 'California', 'California'],
dtype=object)
и, в конечном итоге:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-18-4a9512e0c95c> in <module>
5 X_test = sc_X.transform(X_test)
6 sc_y = StandardScaler()
----> 7 y_train = sc_y.fit_transform(y_train.reshape(-1,1))
[...]
ValueError: could not convert string to float: 'Florida'