Как преобразовать скалярный массив в 2d массив? - PullRequest
0 голосов
/ 08 марта 2019

Я новичок в машинном обучении и столкнулся с некоторыми проблемами при преобразовании скалярного массива в 2d массив. Я пытаюсь реализовать полиномиальную регрессию в Spyder. Вот мой код, пожалуйста, помогите!

# Polynomial Regression

# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

# Importing the dataset
dataset = pd.read_csv('Position_Salaries.csv')
X = dataset.iloc[:, 1:2].values
y = dataset.iloc[:, 2].values

# Fitting Linear Regression to the dataset
from sklearn.linear_model import LinearRegression
lin_reg = LinearRegression()
lin_reg.fit(X, y)

# Fitting Polynomial Regression to the dataset
from sklearn.preprocessing import PolynomialFeatures
poly_reg = PolynomialFeatures(degree = 4)
X_poly = poly_reg.fit_transform(X)
poly_reg.fit(X_poly, y)
lin_reg_2 = LinearRegression()
lin_reg_2.fit(X_poly, y)

# Predicting a new result with Linear Regression
lin_reg.predict(6.5)

# Predicting a new result with Polynomial Regression
lin_reg_2.predict(poly_reg.fit_transform(6.5))

ValueError: Ожидаемый 2D-массив, вместо него получен скалярный массив: array = 6.5. Измените ваши данные, используя array.reshape (-1, 1), если ваши данные имеют один объект или array.reshape (1, -1), если он содержит один образец.

Ответы [ 3 ]

1 голос
/ 16 марта 2019

Вы получаете эту проблему только в Jupyter.Чтобы разрешить в jupyter, введите значение в массив np, используя следующий код.

lin_reg.predict(np.array(6.5).reshape(1,-1))
lin_reg_2.predict(poly_reg.fit_transform(np.array(6.5).reshape(1,-1)))

Для spyder это работает так же, как вы ожидали:

lin_reg.predict(6.5)
lin_reg_2.predict(poly_reg.fit_transform(6.5))
0 голосов
/ 09 марта 2019

Вы должны указать входные данные в виде двумерного массива, поэтому попробуйте это!

lin_reg.predict([6.5])
lin_reg_2.predict(poly_reg.fit_transform([6.5]))
0 голосов
/ 09 марта 2019

Проблема с вашим кодом - linreg.predict (6.5).

Если вы прочитаете сообщение об ошибке, оно говорит о том, что для модели требуется двумерный массив, однако 6.5 скалярно.Зачем?Если вы видите, что ваши данные X имеют 2-d, то все, что вы хотите предсказать с помощью вашей модели, также должно иметь две 2-мерные формы.Это может быть достигнуто либо с помощью .reshape (-1,1), который создает вектор столбца (вектор объектов), либо .reshape (1, -1), если у вас есть один образец.

Вещи, которые нужно запомнить по порядкучтобы предсказать, мне нужно подготовить свои данные так же, как и мои исходные тренировочные данные.

Если вам нужна дополнительная информация, сообщите мне.

...