SVM准确性计算中样本数量不一致错误

我在尝试计算使用拉普拉斯核(作为预计算核)的SVM的准确性得分时,遇到了下面的错误。

我的代码如下:

import numpy as npfrom sklearn.model_selection import train_test_splitfrom sklearn.datasets import load_irisfrom sklearn.metrics import accuracy_scorefrom sklearn.svm import SVCfrom sklearn.metrics.pairwise import laplacian_kernel#加载鸢尾花数据iris_data = load_iris()#分割数据和目标X = iris_data.datay = iris_data.target#将X和y转换为numpy数组X = np.array(X)y = np.array(y)#执行训练-测试分割X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=42, shuffle=True)#使用拉普拉斯核 - https://scikit-learn.org/stable/modules/metrics.html#laplacian-kernelK = np.array(laplacian_kernel(X_train, gamma=.5))svm = SVC(kernel='precomputed').fit(K, np.ravel(y_train))pred_y = svm.predict(K)#打印准确性得分 - 错误发生在这里print(accuracy_score(y_test, pred_y))

当我运行这段代码时,出现了如下错误:

Traceback (most recent call last):  File "/Users/user/Desktop/Research/Src/Laplace.py", line 36, in <module>    print(accuracy_score(y_test, pred_y))  File "/Users/user/miniforge3/envs/user_venv/lib/python3.8/site-packages/sklearn/utils/validation.py", line 63, in inner_f    return f(*args, **kwargs)  File "/Users/user/miniforge3/envs/user/lib/python3.8/site-packages/sklearn/metrics/_classification.py", line 202, in accuracy_score    y_type, y_true, y_pred = _check_targets(y_true, y_pred)  File "/Users/user/miniforge3/envs/user/lib/python3.8/site-packages/sklearn/metrics/_classification.py", line 83, in _check_targets    check_consistent_length(y_true, y_pred)  File "/Users/user/miniforge3/envs/user/lib/python3.8/site-packages/sklearn/utils/validation.py", line 262, in check_consistent_length    raise ValueError("Found input variables with inconsistent numbers of"ValueError: Found input variables with inconsistent numbers of samples: [45, 105]

那么,我该如何解决这个错误呢?


回答:

您使用训练输入计算了pred_y,它包含105个元素,而y_test包含45个元素。

您需要添加以下步骤:

#user3046211's codeimport numpy as npfrom sklearn.model_selection import train_test_splitfrom sklearn.datasets import load_irisfrom sklearn.metrics import accuracy_scorefrom sklearn.svm import SVCfrom sklearn.metrics.pairwise import laplacian_kernel#加载鸢尾花数据iris_data = load_iris()#分割数据和目标X = iris_data.datay = iris_data.target#将X和y转换为numpy数组X = np.array(X)y = np.array(y)#执行训练-测试分割X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=42, shuffle=True)#使用拉普拉斯核 - https://scikit-learn.org/stable/modules/metrics.html#laplacian-kernelK = np.array(laplacian_kernel(X_train, gamma=.5))svm = SVC(kernel='precomputed').fit(K, np.ravel(y_train))pred_y = svm.predict(K)#打印准确性得分 - 错误发生在这里print(accuracy_score(y_test, pred_y))# 新代码从这里开始K_test = np.array(laplacian_kernel(X=X_test,Y=X_train, gamma=.5))pred_y_test = svm.predict(K_test)print(accuracy_score(y_test, pred_y_test))

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中创建了一个多类分类项目。该项目可以对…

发表回复

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