绘制两个维度不同的数据框(x 和 y)?
Plotting two data frames (x and y) that do not have the same dimensionality?
我最近在钻石数据集上构建了一个 SVR model,以根据一些特定特征预测钻石的价格。我试图根据预测价格绘制 model 的测试特征。下面是对代码中使用的变量的解释。
X_test - 我进行了 train/test 拆分,这些是用于测试 model 的功能。尺寸 10782,7(总共 8 个特征)。
y_pred - 在 运行 和 model 之后,这将是数据集中每一行特征的预测价格。尺码 10782.
下面是这些功能如何发挥作用的代码
diamonds_features = ['carat', 'x', 'y', 'z', 'color', 'cut', 'clarity']
X = df.loc[:, diamonds_features].values
y = df.iloc[:, 6:7].values
X_train, X_test, y_train, y_test = train_test_split(X, y.ravel(), test_size=0.20)
regressor = SVR(kernel='rbf', C=50, gamma = 10)
regressor.fit(X_train, y_train)
#produce test predictions
y_pred = regressor.predict(X_test)
下面是绘制 model.
结果的代码
colorGroup = ['b','g','r','c','m','y','k','w']
plt.figure(1)
for i in range(len(X_test)):
col = colorGroup[i % 8]
for j in range(8):
plt.scatter(X_test[i:i+1, j:j+1], y_pred[i:i+1], color=col)
为了解决 X_test 和 y_pred 大小不同的问题,我想执行以下操作:
对于 y_pred 中的每个单独值(因为它是一维数组,所以它将是每个值),
获取 X_test 一行中的每个值,并将其与 y_pred 值相对应。此外,使用 mod 确保每个特征都相应地着色(例如,当我绘制克拉时,它将在整个绘图中保持一致的颜色)。
我使用此代码遇到的问题是我得到以下信息:
“ValueError:x 和 y 的大小必须相同”
如果有人能指出我哪里有问题,我将不胜感激。
这是我收到的回溯:
追溯(最近调用最后):
文件“C:\Users\mypackage\SVM Model.py”,第 72 行,在
plt.scatter(X_test[i:i+1, j:j+1], y_pred[i:i+1], color=colorGroup[i%8])
文件“C:\Users\anaconda3\lib\site-packages\matplotlib\pyplot.py”,第 2890 行,分散
__ret = gca().scatter(
文件“C:\Users\anaconda3\lib\site-packages\matplotlib_init_.py”,第 1438 行,在内部
return func(ax, *map(sanitize_sequence, args), **kwargs)
文件“C:\Users\anaconda3\lib\site-packages\matplotlib\cbook\deprecation.py”,第 411 行,在包装器中
return func(*inner_args, **inner_kwargs)
文件“C:\Users\anaconda3\lib\site-packages\matplotlib\axes_axes.py”,第 4441 行,分散
raise ValueError("x 和 y 的大小必须相同")
ValueError: x 和 y 的大小必须相同
编辑:用 Traceback
更新了问题
根据评论我相信这就是你想要的。
举个例子,我用了 20 个点和 3 个特征。
import numpy as np
import matplotlib.pyplot as plt
X_test = np.random.rand(20, 3)
y_pred = np.random.rand(20)
N = y_pred.size
colorGroup = ['b','g','r','c','m','y','k','w']
plt.figure(1)
for i in range(N):
col = colorGroup[i % N]
plt.scatter(X_test[:, i], y_pred, color=col)
我最近在钻石数据集上构建了一个 SVR model,以根据一些特定特征预测钻石的价格。我试图根据预测价格绘制 model 的测试特征。下面是对代码中使用的变量的解释。
X_test - 我进行了 train/test 拆分,这些是用于测试 model 的功能。尺寸 10782,7(总共 8 个特征)。
y_pred - 在 运行 和 model 之后,这将是数据集中每一行特征的预测价格。尺码 10782.
下面是这些功能如何发挥作用的代码
diamonds_features = ['carat', 'x', 'y', 'z', 'color', 'cut', 'clarity']
X = df.loc[:, diamonds_features].values
y = df.iloc[:, 6:7].values
X_train, X_test, y_train, y_test = train_test_split(X, y.ravel(), test_size=0.20)
regressor = SVR(kernel='rbf', C=50, gamma = 10)
regressor.fit(X_train, y_train)
#produce test predictions
y_pred = regressor.predict(X_test)
下面是绘制 model.
结果的代码colorGroup = ['b','g','r','c','m','y','k','w']
plt.figure(1)
for i in range(len(X_test)):
col = colorGroup[i % 8]
for j in range(8):
plt.scatter(X_test[i:i+1, j:j+1], y_pred[i:i+1], color=col)
为了解决 X_test 和 y_pred 大小不同的问题,我想执行以下操作:
对于 y_pred 中的每个单独值(因为它是一维数组,所以它将是每个值), 获取 X_test 一行中的每个值,并将其与 y_pred 值相对应。此外,使用 mod 确保每个特征都相应地着色(例如,当我绘制克拉时,它将在整个绘图中保持一致的颜色)。
我使用此代码遇到的问题是我得到以下信息: “ValueError:x 和 y 的大小必须相同”
如果有人能指出我哪里有问题,我将不胜感激。
这是我收到的回溯:
追溯(最近调用最后):
文件“C:\Users\mypackage\SVM Model.py”,第 72 行,在 plt.scatter(X_test[i:i+1, j:j+1], y_pred[i:i+1], color=colorGroup[i%8])
文件“C:\Users\anaconda3\lib\site-packages\matplotlib\pyplot.py”,第 2890 行,分散 __ret = gca().scatter(
文件“C:\Users\anaconda3\lib\site-packages\matplotlib_init_.py”,第 1438 行,在内部 return func(ax, *map(sanitize_sequence, args), **kwargs)
文件“C:\Users\anaconda3\lib\site-packages\matplotlib\cbook\deprecation.py”,第 411 行,在包装器中 return func(*inner_args, **inner_kwargs)
文件“C:\Users\anaconda3\lib\site-packages\matplotlib\axes_axes.py”,第 4441 行,分散 raise ValueError("x 和 y 的大小必须相同")
ValueError: x 和 y 的大小必须相同
编辑:用 Traceback
更新了问题根据评论我相信这就是你想要的。
举个例子,我用了 20 个点和 3 个特征。
import numpy as np
import matplotlib.pyplot as plt
X_test = np.random.rand(20, 3)
y_pred = np.random.rand(20)
N = y_pred.size
colorGroup = ['b','g','r','c','m','y','k','w']
plt.figure(1)
for i in range(N):
col = colorGroup[i % N]
plt.scatter(X_test[:, i], y_pred, color=col)