ValueError: 发现样本数量不一致的数组

这是我的代码:

import pandas as pafrom sklearn.linear_model import Perceptronfrom sklearn.metrics import accuracy_scoredef get_accuracy(X_train, y_train, y_test):    perceptron = Perceptron(random_state=241)    perceptron.fit(X_train, y_train)    result = accuracy_score(y_train, y_test)    return resulttest_data = pa.read_csv("C:/Users/Roman/Downloads/perceptron-test.csv")test_data.columns = ["class", "f1", "f2"]train_data = pa.read_csv("C:/Users/Roman/Downloads/perceptron-train.csv")train_data.columns = ["class", "f1", "f2"]accuracy = get_accuracy(train_data[train_data.columns[1:]], train_data[train_data.columns[0]], test_data[test_data.columns[0]])print(accuracy)

我不明白为什么我会得到这个错误:

Traceback (most recent call last):  File "C:/Users/Roman/PycharmProjects/data_project-1/lecture_2_perceptron.py", line 35, in <module>    accuracy = get_accuracy(train_data[train_data.columns[1:]], train_data[train_data.columns[0]], test_data[test_data.columns[0]])  File "C:/Users/Roman/PycharmProjects/data_project-1/lecture_2_perceptron.py", line 22, in get_accuracy    result = accuracy_score(y_train, y_test)  File "C:\Users\Roman\AppData\Roaming\Python\Python35\site-packages\sklearn\metrics\classification.py", line 172, in accuracy_score    y_type, y_true, y_pred = _check_targets(y_true, y_pred)  File "C:\Users\Roman\AppData\Roaming\Python\Python35\site-packages\sklearn\metrics\classification.py", line 72, in _check_targets    check_consistent_length(y_true, y_pred)  File "C:\Users\Roman\AppData\Roaming\Python\Python35\site-packages\sklearn\utils\validation.py", line 176, in check_consistent_length    "%s" % str(uniques))ValueError: Found arrays with inconsistent numbers of samples: [199 299]

我想通过accuracy_score方法获取准确率,但得到了这种类型的错误。我在谷歌上搜索了,但找不到任何能帮助我的信息。谁能解释一下这是怎么回事?


回答:

sklearn.metrics.accuracy_score() 接受 y_truey_pred 参数。也就是说,对于同一数据集(可能是测试集),它希望知道真实情况和模型预测的值。这将使它能够评估您的模型与假设的完美模型相比表现如何。

在您的代码中,您传递了两个不同数据集的真实结果变量。这些结果都是真实的,并不反映您的模型正确分类观察的能力!

更新您的 get_accuracy() 函数以同时接受 X_test 作为参数,我认为这更符合您的意图:

def get_accuracy(X_train, y_train, X_test, y_test):    perceptron = Perceptron(random_state=241)    perceptron.fit(X_train, y_train)    pred_test = perceptron.predict(X_test)    result = accuracy_score(y_test, pred_test)    return result

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注