【问题标题】:ValueError: Found input variables with inconsistent numbers of samples: [1, 137]ValueError:发现样本数量不一致的输入变量:[1, 137]
【发布时间】:2021-07-29 01:42:17
【问题描述】:

我正在构建一个网络应用程序来让模型预测 User_input 值(在我的例子中是 9 个不同的特征滑块包含不同的值)并在最后显示结果和预测准确性。 因此,当我尝试预测 User_input 而不是 X_test 时,我得到了这个错误: ValueError:发现样本数量不一致的输入变量:[1, 137]

这是我从用户那里得到的输入:

def dataset_input(dataset_name):
inputs = dict()

user_input1=st.slider("Clump Thickness", 1, 10, step=1)
user_input2=st.slider("Uniformity of Cell Size", 1, 10, step=1)
user_input3=st.slider("Uniformity of Cell Shape", 1, 10, step=1)
user_input4=st.slider("Marginal Adhesion", 1, 10, step=1)
user_input5=st.slider("Single Epithelial Cell Size", 1, 10, step=1)
user_input6=st.slider("Bare Nuclei", 1, 10, step = 1)
user_input7=st.slider("Bland Chromatin", 1, 10, step=1)
user_input8=st.slider("Normal Nucleoli", 1, 10, step=1)
user_input9=st.slider("Mitoses", 1, 10, step = 1)
inputs=[[user_input1, user_input2, user_input3, user_input4, user_input5,
     user_input6, user_input7, user_input8, user_input9]]
return inputs

inputs = dataset_input(dataset_name)

然后我拆分数据并训练模型:

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state=1234)

clf.fit(X_train, y_train)

之后我想展示用户输入的预测:

y_pred = clf.predict(inputs)
#print(inputs)

from sklearn.metrics import accuracy_score
acc = accuracy_score(y_pred, y_test)
print(acc)

如果我使用 X_test 而不是 (inputs),它可以正常工作,但我想要 User_input。

此外,当我打印(输入)时,我得到一个预测值,这是一件好事,但我无法显示准确度得分。

这是数据集链接: https://archive.ics.uci.edu/ml/datasets/breast+cancer+wisconsin+%28original%29

Here are the variables length after splitting the dataset

非常感谢您的帮助!谢谢。

编辑: 我想我有这个问题,因为我的 y_pred 有 137 个值,而(输入)只有一个值,所以我无法显示准确性。 不幸的是 IDK 如何解决这个问题。

【问题讨论】:

    标签: python tensorflow machine-learning scikit-learn web-applications


    【解决方案1】:

    您遇到该错误是因为您的 Xy 的长度不同(这是 train_test_split 所要求的),即 X.shape[0] != y.shape[0]

    修复此错误:

    删除多余的维度,然后通过运行X = X.transpose() 转置X 以获得Xy 中相同数量的样本。

    【讨论】:

    • X 和 y 对我来说长度相同,我尝试使用 X = X.transpose() 但没有用。
    • 你的 X 和 y 有不同的形状,(9, 683) (683, ),这意味着 X.shape[0] != y.shape[0] 是 True,正如我之前所说的。
    • 那么,我是在拆分数据集之前还是之后?
    • 你需要先这样做。
    • 是的,这就是我在 cmets 中所说的预期。为了解决这个问题,根据您的数据,您需要 X 和 y 的长度相同。
    猜你喜欢
    • 2022-01-16
    • 2020-11-15
    • 2021-10-09
    • 2020-07-05
    • 2017-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-27
    相关资源
    最近更新 更多