【问题标题】:error message: ValueError: Expected 2D array, got 1D array instead:错误消息:ValueError:预期的 2D 数组,得到 1D 数组:
【发布时间】:2021-12-29 00:36:45
【问题描述】:
# importing libraries
import numpy as np
import pandas
import pandas as pd
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression

#read data
dataset=pd.read_csv("Salary_Levels.csv")

#data frame
data=pd.DataFrame(dataset)

#independant and dependant
x=data["level_id"].astype(int)
y=data["Salary"].astype(int)

#ployfeatures
poly=PolynomialFeatures(degree=4)
x_poly=poly.fit_transform(x)
pilreg=LinearRegression()
pilreg.fit(x_poly,y)
pilreg.predict(poly.fit_transform([[10]]))

#plot
plt.scatter(x,y,color='r',s=5)
plt.plot(x,pilreg.predict(poly.fit_transform(x)),color='blue')
plt.show()

Traceback (most recent call last):
  File "/Users/david/desktop/code/Python/PolyReg/main.py", line 23, in <module>
    x_poly=poly.fit_transform(x)
  File "/Users/david/Desktop/Code/Python/PolyReg/venv/desktop/code/Python/Python/lib/python2.7/site-packages/sklearn/base.py", line 464, in fit_transform
    return self.fit(X, **fit_params).transform(X)
  File "/Users/david/Desktop/Code/Python/PolyReg/venv/desktop/code/Python/Python/lib/python2.7/site-packages/sklearn/preprocessing/data.py", line 1460, in fit
    n_samples, n_features = check_array(X, accept_sparse=True).shape
  File "/Users/david/Desktop/Code/Python/PolyReg/venv/desktop/code/Python/Python/lib/python2.7/site-packages/sklearn/utils/validation.py", line 552, in check_array
    "if it contains a single sample.".format(array))
ValueError: Expected 2D array, got 1D array instead:
array=[1 2 3 4 5 6].
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.

不知道为什么我会收到一条错误消息。有任何想法吗???尝试进行多项式回归,但似乎是 x 值的问题。错误信息和代码在上面。我尝试重塑,但没有奏效。

【问题讨论】:

  • 你能提供确切的错误信息和回溯吗? (错误在哪一行?)
  • @mozway 我编辑了帖子,所以它现在应该会显示出来

标签: python pandas numpy matplotlib


【解决方案1】:

你真的很亲密。问题是因为 fit_transform 函数需要一个 DataFrame,而不是一个 Series。将第 18 行更改为 x=pd.DataFrame(data["level_id"].astype(int)) 即可。

【讨论】:

    【解决方案2】:

    fit_transform 需要二维输入,您必须按要求提供(即使第二维是 1)

    我没有您的数据示例,但是将您的列切片为数据框应该可以解决问题:

    x=data[["level_id"]].astype(int)
    

    【讨论】:

    • 有效!谢谢!
    猜你喜欢
    • 2018-12-11
    • 2020-03-19
    • 2021-12-28
    • 2021-05-14
    • 1970-01-01
    • 2018-09-16
    • 2020-12-18
    • 1970-01-01
    相关资源
    最近更新 更多