python - 绘制使用 sklearn 制作的回归量的 3d 图
问题描述
我一直在使用本教程来学习决策树学习,现在正在尝试了解它如何与更高维数据集一起工作。
目前,我的回归器预测您传递给它的 (x,y) 对的 Z 值。
import numpy as np
import matplotlib.pyplot as plt
from sklearn.tree import DecisionTreeRegressor
from mpl_toolkits import mplot3d
dataset = np.array(
[['Asset Flip', 100,100, 1000],
['Text Based', 500,300, 3000],
['Visual Novel', 1500,500, 5000],
['2D Pixel Art', 3500,300, 8000],
['2D Vector Art', 5000,900, 6500],
['Strategy', 6000,600, 7000],
['First Person Shooter', 8000,500, 15000],
['Simulator', 9500,400, 20000],
['Racing', 12000,300, 21000],
['RPG', 14000,150, 25000],
['Sandbox', 15500,200, 27000],
['Open-World', 16500,500, 30000],
['MMOFPS', 25000,600, 52000],
['MMORPG', 30000,700, 80000]
])
X = dataset[:, 1:3].astype(int)
y = dataset[:, 3].astype(int)
regressor = DecisionTreeRegressor(random_state = 0)
regressor.fit(X, y)
我想使用 3d 图表来可视化它,但我一直在努力解决 regressor.predict() 期望其输入的方式与 matplotlib 线框等程序期望其输入的方式。结果,我无法让它们一起工作。
解决方案
试试这个,我没有安装所有的包,所以我在 google colab 上测试了这个。让我知道这是否符合您的预期。
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# to just see the prediction results of your data
#ax.scatter(X[:, 0], X[:, 1], regressor.predict(regressor.predict(X)), c='g')
samples = 10
xx, yy = np.meshgrid(np.linspace(min(X[:,0]), max(X[:,0]), samples), np.linspace(min(X[:,1]), max(X[:,1]), samples))
# to see the decision boundaries(not the right word for a decision tree regressor, I think)
ax.plot_wireframe(xx, yy, regressor.predict(np.hstack((xx.reshape(-1,1), yy.reshape(-1,1)))).reshape(xx.shape))
ax.set_xlabel('x-axis')
ax.set_ylabel('y-axis')
ax.set_zlabel('z-axis(predictions)')
推荐阅读
- mysql - sql中每个产品多张图片
- bash - bash 读取和写入具有不寻常布局的配置文件
- javascript - Javascript查找唯一字母
- c# - C# python http 发布到 C# httpwebrequest
- swift - 为什么单边范围不涵盖 Swift switch 语句中的所有情况?
- python - 使用 PyGame 显示 Sci Py voronoi 边缘会产生奇怪的“星形”效果
- gerrit - Gerrit 无法同时显示已验证和代码审查标签
- java - File类是如何实现多平台的
- php - 将数据输入到 php 表单中,而不是填充 MySQL 表
- nginx - vagrant如何使用公共IP访问Web服务器(nginx)