Обнаружена ошибка значения при реализации полиномиальной линейной регрессии - PullRequest
0 голосов
/ 10 марта 2020

Вот мой код ... Я использую Python 3.x от Spyder. Вы можете загрузить набор данных из https://www.superdatascience.com/pages/machine-learning

        # -*- coding: utf-8 -*-
"""
Created on Sun Mar  8 19:50:28 2020

@author: Anurag Nihal
"""

# 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

"""# Splitting the dataset into the Training set and Test set
from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)

Since, We are talking for employee's career and a sensitive decision to take, we will take as much as info present and also not much of info is present."""

# Feature Scaling-Not required since we are taking the same linear regression library and it provides the same facility
"""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)"""

#Performing linear regression
from sklearn.linear_model import LinearRegression
lin_reg=LinearRegression()
lin_reg.fit(X,y)

#Performing polynomial regression
from sklearn.preprocessing import PolynomialFeatures
poly_reg=PolynomialFeatures(degree=3)
X_poly=poly_reg.fit_transform(X)
lin_reg_2=LinearRegression()
lin_reg_2.fit(X_poly, y)

#Visualizing Linear Regression
plt.scatter(X, y, color='red')
plt.plot(X, lin_reg.predict(X), color='green')
plt.title('truth or bluff (Linear Regression)')
plt.xlabel('Position Level')
plt.ylabel('Salary')
plt.show()

#Visualizing Polynomial Regression
plt.scatter(X, y, color='red')
plt.plot(X, lin_reg_2.predict(poly_reg.fit_transform(X)), color='green')
plt.title('truth or bluff (Polynomial Linear Regression)')
plt.xlabel('Position Level')
plt.ylabel('Salary')
plt.show()


#Predicting the salary required using Linear Regression
lin_reg.predict(6.5)

#Predicting the salary required using Polynomial Regression
lin_reg_2.predict(poly_reg.fit_transform(6.5))

Но это то же самое, что и учебник Super Data Science, и там он отлично работает.

Вот ошибка, которую он показал. Он показал то же самое для lin_reg.predict(6.5)

lin_reg_2.predict(poly_reg.fit_transform(6.5))
Traceback (most recent call last):

  File "<ipython-input-127-37e3532bc52e>", line 1, in <module>
    lin_reg_2.predict(poly_reg.fit_transform(6.5))

  File "F:\Anaconda_three\lib\site-packages\sklearn\base.py", line 553, in fit_transform
    return self.fit(X, **fit_params).transform(X)

  File "F:\Anaconda_three\lib\site-packages\sklearn\preprocessing\data.py", line 1465, in fit
    n_samples, n_features = check_array(X, accept_sparse=True).shape

  File "F:\Anaconda_three\lib\site-packages\sklearn\utils\validation.py", line 514, in check_array
    "if it contains a single sample.".format(array))

ValueError: Expected 2D array, got scalar array instead:
array=6.5.
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.

Я также загружаю учебное изображение, где оно отлично работает. enter image description here

В настоящее время я изучаю полиномиальную линейную регрессию и недавно переключился на Python с C ++. Пожалуйста, помогите мне решить проблему и, если возможно, предложите, как убедиться, что они не встречаются в коде.

После предложения @ maverickk6912 я сделал это и вставил между «Визуализация полиномиальной регрессии» и «Прогнозирование зарплаты». используя линейную регрессию.

#Lets make an array.
X_arr=([6.5])
X_arr=np.reshape(X_arr,(1,-1))
X_arr

Но, мой вопрос: почему код учебника работал идеально ??

...