【问题标题】:Error plotting scikit-learn dataset training and test data绘制 scikit-learn 数据集训练和测试数据时出错
【发布时间】:2020-02-08 09:27:33
【问题描述】:

我正在尝试绘制来自 scikit-learn 数据集的训练和测试数据。

import sys, os
import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets
plt.switch_backend('agg')

%matplotllib inline

diabetes = datasets.load_diabetes()
diabetes_X = diabetes.data[:, np.newaxis, 2]
diabetes_X_train = diabetes_X[:-20]
diabetes_X_test = diabetes_X[-20:]
diabetes_y_train = np.matrix(diabetes.target[:-20]).T
diabetes_y_test = np.matrix(diabetes.target[-20:]).T

plt.scatter(diabetes_X_train, diabetes_y_train,  color='black')
plt.scatter(diabetes_X_test, diabetes_y_test,  color='red')

但我有以下错误:

ValueError: all the input array dimensions for the concatenation axis must match exactly, but along dimension 0, the array at index 0 has size 422 and the array at index 1 has size 1

我检查了矩阵的形状,训练数据有 (422,1) 和测试数据 (20,1)。是什么导致了这个错误?

【问题讨论】:

    标签: python numpy matplotlib scikit-learn


    【解决方案1】:

    plt.scatter 期望绘制两个相同形状的数据集。如果它们不是一维的,它们将被展平。在机器学习问题中将X 展平是没有意义的。

    检查X_trainy_train 的尺寸。你会发现它们不兼容。这是您正在制作的 2D 图,您只能将一组数字与另一组数字进行对比。 X 是一个矩阵:每一行都是一堆数字。

    所以你可以这样做:

    import numpy as np
    import matplotlib.pyplot as plt
    
    x, y = np.random.random((422, 1)), np.random.random((422, 1))
    plt.scatter(x, y)
    

    但你不能这样做:

    X, y = np.random.random((422, 10)), np.random.random((422, 1))
    plt.scatter(X, y)
    

    这基本上就是您想要做的事情。 (顺便说一句,我不认为你想转置y。)

    所以这应该适合你:

    plt.scatter(diabetes_X_train[:, 0], diabetes_y_train)
    

    但这仅显示了与X 的一个特征的关系。

    假设您只是想探索数据,我建议您查看seaborn.pairplot。它非常适合这种事情。

    【讨论】:

    • diabetes_X_train和diabetes_y_train就像diabetes_X_test和diabetes_y_test分别具有相同的形状大小。
    • @Costa.Gustavo 你一起绘制的东西(例如diabetes_X_traindiabetes_y_train 必须具有相同的形状彼此。再看看我的例子,然后再次查看您的数组。尝试仅绘制一对(即删除您的第二个plt.scatter()。它不起作用。您需要在X 中选择一列或尝试类似seaborn.pairplot 的方法来制作很多地块。
    • @Costa.Gustavo 我只是在我的答案中添加了一点,以表明您应该能够用diabetes_y_train 绘制diabetes_X_train 的单列。
    猜你喜欢
    • 2016-11-26
    • 1970-01-01
    • 2015-12-30
    • 2020-06-17
    • 2014-09-17
    • 2018-05-25
    • 2017-06-21
    • 2019-01-07
    • 2017-02-20
    相关资源
    最近更新 更多