我正在try 使用我的线性回归()模型根据新的x值进行预测.X值在我的回归模型的范围内.我的代码如下:

x=df[['A']]
y=df['B']

m = LinearRegression()
m.fit(x,y)

# Test new X
new_x=pd.DataFrame([0.4])
print(m.predict(new_x))


[-28.43482247] UserWarning: X does not have valid feature names, but LinearRegression was fitted with feature names
  warnings.warn(

使用上面的错误.问题是:

  1. 我不确定这个警告告诉了我什么.

  2. The value given to me is not right, because the new_x value i entered was on the regression line (I outputted this on the graph). And my graph is also x>=0, y>=0 . Here is a picture of my scatter plot: enter image description here

我也有不到一百万张唱片.

编辑:2的解决方案是因为我解释错了数字.它实际上应该是"0.4e7",这给了我预期的答案.

推荐答案

该警告是因为来自X系列集合的特征名称(列名)具有名称,并且它们与传递给模型以供预测的名称不匹配.您可以通过以相同的方式命名训练和预测特征来避免该警告.让我们假设您的训练集是基于此数据帧的单个功能:

x = pd.DataFrame({'X':[1,2,3,4,5]})

然后,您将适合您的模型:

m.fit(x,y)

当基于新的Pandas 系列进行预测时,使用不同的特征名称,例如:

print(m.predict(pd.DataFrame({'X_test':[0.4]})))

我们得到了相同的错误,尽管现在它可以显示不同的名称,因为有一个实际的名称分配给了新的Series(您在示例中没有定义):

FutureWarning: The feature names should match those that were passed during fit. Starting version 1.2, an error will be raised.
Feature names unseen at fit time:
- X_test
Feature names seen at fit time, yet now missing:
- X

  warnings.warn(message, FutureWarning)

解决方案是以相同的方式命名这两个名称:

new_x=pd.DataFrame({'X':[0.4]})
print(m.predict(new_x))

不显示警告或错误

Python相关问答推荐

在matplotlib中使用不同大小的标记顶部添加批注

polars:有效的方法来应用函数过滤列的字符串

如何求相邻对序列中元素 Select 的最小代价

仅使用预先计算的排序获取排序元素

有没有办法在不先将文件写入内存的情况下做到这一点?

如何使用matplotlib查看并列直方图

如何使用pytest在traceback中找到特定的异常

Python如何导入类的实例

在不中断格式的情况下在文件的特定部分插入XML标签

Pip:卸载`-e`安装过程中安装的所有pkgs

在被零整除的情况下,Python不遵循IEEE-754吗?

为什么REGISTER_NEXT_STEP_HANDLER不立即调用函数并等待另一条消息

Cdlib和iggraph的信息变化结果不同

Django ManyToMany不保存

如何根据两个日期之间的周数复制行?

将函数拟合到曲线上,然后删除某些点

在所有任务完成之前完成Python事件循环

有没有一种有效的方法来格式化小数?

Python修饰器类型提示

Shopware 6 REST-API产品更新不起作用