如何在 scikit learn 中为多元回归绘制最佳拟合平面?
Posted
技术标签:
【中文标题】如何在 scikit learn 中为多元回归绘制最佳拟合平面?【英文标题】:How to draw best fit plane for multi variant regression in scikit learn? 【发布时间】:2020-05-28 18:25:39 【问题描述】:我不是软件背景,但我正在学习回归技术来预测运动数据。 我有使用多变量回归的 3d 数据。 结果很好。但现在我想为这些数据可视化最好的冷杉飞机。 以下是我从不同站点复制粘贴的代码,以尝试可视化我的数据。
X_final=df3[['Ampere','Voltage']]
y_final=df3[['ReactivePower']].copy() #copy column data in to y_final
X_final=X_final.dropna()
y_final=y_final.dropna()
X_train, X_test, y_train, y_test = train_test_split(X_final, y_final, test_size = 0.33, random_state = 0 )
lr = LinearRegression().fit(X_train,y_train)
y_train_pred = lr.predict(X_train)
y_test_pred = lr.predict(X_test)
#print score
print("lr.coef_: ".format(lr.coef_))
print("lr.intercept_: ".format(lr.intercept_))
print('lr train score %.3f, lr test score: %.3f' % (
lr.score(X_train,y_train),
lr.score(X_test, y_test)))
# Visualize the Data for Multiple Linear Regression
x_surf, y_surf = np.meshgrid(np.linspace(df3.Voltage.min(), df3.Voltage.max()),np.linspace(df3.Ampere.min(), df3.Ampere.max()))
y_train_pred_random= y_train_pred[np.random.choice(y_train_pred.shape[0], 2500, replace=False), :]
y_train_pred_random=np.array(y_train_pred_random)
y_train_pred1=y_train_pred_random.reshape(x_surf.shape)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(df3['Voltage'],df3['Ampere'],df3['ReactivePower'],c='red', marker='o', alpha=0.5)
ax.plot_surface(x_surf,y_surf,y_train_pred1,rstride=1, cstride=1, color='b', alpha=0.3)
ax.set_xlabel('Voltage')
ax.set_ylabel('Ampere')
ax.set_zlabel('Reactive Power')
plt.show()
当我运行可视化代码时,我得到以下图表,
请帮忙
【问题讨论】:
显示原始数据图。您可以尝试使用一些 3d 功能平滑表面 【参考方案1】:是的,我在网上解决了一些问题,
这里是代码,
#Test train split mullti variant
X_final=df3[['Ampere','Voltage']]
y_final=df3[['ReactivePower']].copy() #copy column data in to y_final
X_final=X_final.dropna()
y_final=y_final.dropna()
X_train, X_test, y_train, y_test = train_test_split(X_final, y_final, test_size = 0.33, random_state = 0 )
lr = LinearRegression().fit(X_train,y_train)
y_train_pred = lr.predict(X_train)
y_test_pred = lr.predict(X_test)
#print score
print("lr.coef_: ".format(lr.coef_))
print("lr.intercept_: ".format(lr.intercept_))
print('lr train score %.3f, lr test score: %.3f' % (
lr.score(X_train,y_train),
lr.score(X_test, y_test)))
# Visualize the Data for Multiple Linear Regression
x_surf, y_surf = np.meshgrid(np.linspace(df3.Ampere.min(), df3.Ampere.max()),np.linspace(df3.Voltage.min(), df3.Voltage.max()))
z_surf=lr.coef_[0,0]*x_surf+lr.coef_[0,1]*y_surf+lr.intercept_
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(df3['Ampere'],df3['Voltage'],df3['ReactivePower'],c='red', marker='o', alpha=0.5)
ax.plot_surface(x_surf,y_surf,z_surf,rstride=1, cstride=1, color='b', alpha=0.3)
ax.set_xlabel('Ampere')
ax.set_ylabel('Voltage')
ax.set_zlabel('Reactive Power')
plt.show()
剧情如下,
谢谢,
【讨论】:
以上是关于如何在 scikit learn 中为多元回归绘制最佳拟合平面?的主要内容,如果未能解决你的问题,请参考以下文章
scikit-learn : 线性回归,多元回归,多项式回归
使用 matplotlib 绘制 scikit learn 线性回归结果
机器学习系列6 使用Scikit-learn构建回归模型:简单线性回归多项式回归与多元线性回归
[机器学习与scikit-learn-27]:算法-回归-多元线性回归的几何原理线性代数原理本质(去掉激活函数的神经元)