【问题标题】:How do i fix "If using all scalar values, you must pass an index" error?如何修复“如果使用所有标量值,则必须传递索引”错误?
【发布时间】:2019-12-23 09:38:59
【问题描述】:

我在不使用内置函数的情况下手动尝试构建线性回归模型以了解目的。我在绘制回归线时遇到错误。请帮我解决它。

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import seaborn as sb

data = {'X': list(np.arange(0,10,1)), 'Y': [1,3,2,5,7,8,8,9,10,12]}
df = pd.DataFrame(data) 
df2 = pd.DataFrame(np.ones(10), columns = ['ones'])
df_new = pd.concat([df2,df], axis = 1)

X = df_new.loc[:, ['ones', 'X']].values
Y = df_new['Y'].values.reshape(-1,1)

theta = np.array([0.5, 0.2]).reshape(-1,1)

Y_pred = X.dot(theta)
sb.lineplot(df['X'].values.reshape(-1,1),Y_pred)
plt.show()

错误信息:

如果使用所有标量值,则必须传递一个索引

【问题讨论】:

  • 你在哪一行得到这个?你能告诉我print(pd.__version__) 的输出是什么吗?
  • 这一行出错:sb.lineplot(df['X'].values.reshape(-1,1),Y_pred)
  • 我想绘制一个海底线图

标签: python-3.x matplotlib seaborn


【解决方案1】:

您正在传递一个二维数组,而 seaborn 的线图需要一个一维数组(或基本相同的 pandas 列)。所以改成

sb.lineplot(df['X'].values,Y_pred.reshape(-1))  

【讨论】:

    猜你喜欢
    • 2017-02-19
    • 2019-12-29
    • 2021-08-01
    • 2020-03-19
    • 2016-11-17
    • 1970-01-01
    • 2018-05-29
    相关资源
    最近更新 更多