我正在手动尝试构建线性回归模型以了解目的,而不使用内置函数。绘制回归线时出现错误。请帮助我修复它。
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()
错误消息:
如果使用所有标量值,则必须传递索引
答案 0 :(得分:0)
您传递的是2d数组,而seaborn的线图希望使用1d数组(或基本相同的pandas列)。因此将其更改为
sb.lineplot(df['X'].values,Y_pred.reshape(-1))