首页 > 解决方案 > ValueError:发现样本数量不一致的输入变量:[1, 137]

问题描述

我正在构建一个 Web 应用程序来使模型预测 User_input 值(在我的例子中是 9 个不同的特征滑块包含不同的值)并在最后显示结果和预测准确性。因此,当我尝试预测 User_input 而不是 X_test 时,会出现此错误: ValueError: Found input variables with contrast numbers of samples: [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 而不是(输入),它工作正常,但我想要 User_input。

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

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

这是拆分数据集后的变量长度

我将不胜感激!谢谢你。

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

标签: pythontensorflowmachine-learningscikit-learnweb-applications

解决方案


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

要修复此错误:

删除额外的维度,然后X通过运行转置以在和X = X.transpose()中获得相等数量的样本。Xy


推荐阅读