我在不使用内置函数的情况下手动尝试构建线性回归模型以达到理解目的。绘制回归线时出现错误。请帮我修复它。
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()
错误信息:
If using all scalar values, you must pass an index
最佳答案
您传递的是一个二维数组,而 seaborn 的线图需要一个一维数组(或基本相同的 pandas 列)。所以改成
sb.lineplot(df['X'].values,Y_pred.reshape(-1))
关于python-3.x - 如何修复 "If using all scalar values, you must pass an index"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59453026/