Вот мой код ... Я использую 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.
Я также загружаю учебное изображение, где оно отлично работает.
В настоящее время я изучаю полиномиальную линейную регрессию и недавно переключился на Python с C ++. Пожалуйста, помогите мне решить проблему и, если возможно, предложите, как убедиться, что они не встречаются в коде.
После предложения @ maverickk6912 я сделал это и вставил между «Визуализация полиномиальной регрессии» и «Прогнозирование зарплаты». используя линейную регрессию.
#Lets make an array.
X_arr=([6.5])
X_arr=np.reshape(X_arr,(1,-1))
X_arr
Но, мой вопрос: почему код учебника работал идеально ??