首页 > 编程问答 >ValueError:X 有 1 个特征,但 LinearRegression 期望有 2 个特征作为输入

ValueError:X 有 1 个特征,但 LinearRegression 期望有 2 个特征作为输入

时间:2024-07-23 06:22:44浏览次数:15  
标签:python numpy machine-learning scikit-learn valueerror

我正在使用 pywebio 为我的机器学习程序创建一个小型脚本运行用户界面。当不使用小型 UI 时,运行线性回归 predict() 函数时不会出现任何错误。

UI 从用户处检索两个数字,an 'age' 和 a 'salary' 这两个数字被输入到 numpy 数组中,并且 numpy 数组已从一维数组重新调整为二维数组,因为我收到了有关 numpy 数组形状的错误。

现在,我收到一条错误消息当 sklearn 文档指出线性回归 predict() 方法始终获取“自身”和另一个特征时, predict() 方法仅接收 1 个特征而不是 2 个特征。如何修复此错误?

这是我的 UI 代码:

age = int(input("Enter your age:", type=NUMBER))
salary = int(input("Enter your salary:", type=NUMBER))

entry = np.array([age, salary])
reshaped_entry = entry.reshape(-1, 1)

estimate = regr.predict(reshaped_entry)    

这是错误消息:

ValueError                                Traceback (most recent call last)
Input In [21], in <cell line: 22>()

Input In [21], in retirement_ui()

File ~\anaconda3\lib\site-packages\sklearn\linear_model\_base.py:362, in LinearModel.predict(self, X)
    348 def predict(self, X):
    349     """
    350     Predict using the linear model.
    351 
   (...)
    360         Returns predicted values.
    361     """
--> 362     return self._decision_function(X)

File ~\anaconda3\lib\site-packages\sklearn\linear_model\_base.py:345, in LinearModel._decision_function(self, X)
    342 def _decision_function(self, X):
    343     check_is_fitted(self)
--> 345     X = self._validate_data(X, accept_sparse=["csr", "csc", "coo"], reset=False)
    346     return safe_sparse_dot(X, self.coef_.T, dense_output=True) + self.intercept_

File ~\anaconda3\lib\site-packages\sklearn\base.py:585, in BaseEstimator._validate_data(self, X, y, reset, validate_separately, **check_params)
    582     out = X, y
    584 if not no_val_X and check_params.get("ensure_2d", True):
--> 585     self._check_n_features(X, reset=reset)
    587 return out

File ~\anaconda3\lib\site-packages\sklearn\base.py:400, in BaseEstimator._check_n_features(self, X, reset)
    397     return
    399 if n_features != self.n_features_in_:
--> 400     raise ValueError(
    401         f"X has {n_features} features, but {self.__class__.__name__} "
    402         f"is expecting {self.n_features_in_} features as input."
    403     )

ValueError: X has 1 features, but LinearRegression is expecting 2 features as input.

错误信息表明你的线性回归模型 regr 在训练时被训练为接受了 2 个特征,但你却只提供了一个特征。虽然你在 UI 中收集了年龄和薪水,但 entry.reshape(-1, 1) 这一行却将数据转换为一个包含 2 行和 1 列的形状,这意味着它将年龄和薪水视为同一个特征的两个样本,而不是两个不同的特征。

要解决这个问题,你应该将 entry 重塑为具有 1 行和 2 列的形状,方法如下:

reshaped_entry = entry.reshape(1, -1)

这样一来, reshaped_entry 将是一个包含 1 行和 2 列的二维数组,其中一列代表年龄,另一列代表薪水,这与你的线性回归模型期望的输入相匹配。

以下是更正后的代码:

import numpy as np
from sklearn.linear_model import LinearRegression

# ... (加载模型的代码)

age = int(input("Enter your age:", type=NUMBER))
salary = int(input("Enter your salary:", type=NUMBER))

entry = np.array([age, salary])
reshaped_entry = entry.reshape(1, -1)  # 重塑为 1 行和 2 列

estimate = regr.predict(reshaped_entry)

通过这个更改,你的代码应该可以正常工作,而不会出现 ValueError

标签:python,numpy,machine-learning,scikit-learn,valueerror
From: 73132252

相关文章

  • AWS Elastic Beanstalk chown PythonPath 错误
    我正在AWS的elasticbeanstalk上部署一个Web应用程序,遇到了同样的错误:[StageApplication].Stoprunningthecommand.Error:chown/var/app/staging/venv/bin/python:nosuchfileordirectory.我在我的环境配置中看到属性:PYTHONPATH:/var/......
  • Python:支持索引的内存对象数据库?
    我正在做一些数据整理,如果我可以将一堆字典放入内存数据库中,然后对其运行简单的查询,这会简单得多。例如,类似:people=db([{"name":"Joe","age":16},{"name":"Jane","favourite_color":"red"},])over_16=db.filter(age__g......
  • 如何构建一维数组的二维数组的特定 Python 结构?
    如何构建一维数组(即行向量)的二维数组的特定结构以满足特定我正在维护的遗留程序的结构?我可以在此结构中生成正确的内容all_measurements[:12]array([[0.,0.,0.,2.],[0.02,0.334,0.04,2.24],[0.04,0.668,0.08,2.48],...........
  • 如何使用 Python Flask 将新的咖啡馆(元素)添加到数据库(SQLite)?
    这是我的代码:@app.route("/add",methods=["POST"])defpost_new_cafe():new_cafe=Cafe(name=request.form.get("name"),map_url=request.form.get("map_url"),img_url=request.form.get("img......
  • 使用 tkinter 为 python 创建 GUI 时如何解决语法错误?
    我是一名Python初学者,决定使用tkinter制作一个小型GUI,该GUI接受用户(潜在餐馆)的3个输入,然后单击按钮后随机输出其中一家餐馆。我不断收到语法错误,并认为它与我的buttonfunc或调用它的命令有关。此代码尚未包含在GUI上输出餐厅的任何位置。任何帮助将不胜感激#Pyth......
  • 在 python 中打开 gnome 终端立即显示为僵尸
    作为背景,我正在编写一个脚本来训练多个pytorch模型。我有一个训练脚本,我希望能够在gnome终端中作为子进程运行。这样做的主要原因是我可以随时关注训练进度。如果我可能有多个GPU,我想在单独的窗口中多次运行我的训练脚本。为了实现这一点,我一直在使用popen。以下代码用于打......
  • python threading.Condition 的意外行为
    我正在尝试同步多个线程。我期望使用threading.Condition和threading.Barrier时的脚本输出大致相同,但事实并非如此。请解释一下为什么会发生这种情况。一般来说,我需要线程在一个无限循环中执行工作(一些IO操作),但是每个循环都是以主线程的权限开始的,而权限是仅在......
  • Python - 逆透视数据框
    我有一个按日期时间索引的表,每个日期时间都有多个层(中心和交货间隔):日期时间中心交货间隔结算点价格2024-01-0101:00:00休斯顿中心1......
  • 试图理解这个错误:致命的Python错误:PyEval_RestoreThread:该函数必须在持有GIL的情况下
    我有一个小型tkinter应用程序,我一直在其中实现最小的“拖放”,主要作为学习实验。我真正关心的是删除文件的文件路径。一切实际上都工作正常,直到我尝试在拖放后打包标签小部件。下面的最小工作示例。有问题的行会用注释指出。我通常不会在调试方面遇到太多麻烦,但我只是不知......
  • 如何使代码格式再次适用于 Python(Mac 上的 Visual Studio Code)?
    在Mac上,Option+Shift+F现在会显示“没有安装用于‘python’文件的格式化程序”。消息框:我尝试安装这个插件,但没有看到这种情况的变化:我已经为Python安装了这两个插件:但是正如@starball提到的,它可能已经减少了支持现在。......