列表对象在 SVM 中不可调用

List object not callable in SVM

我正在尝试 运行 这个 SVM 在 Python 中使用分层 K 折叠,但是我不断收到如下错误

from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.utils import shuffle
from sklearn import preprocessing
from sklearn.preprocessing import MinMaxScaler
from sklearn.model_selection import StratifiedKFold
from sklearn.metrics import accuracy_score, zero_one_loss, confusion_matrix
import pandas as pd
import numpy as np


z = pd.read_csv('/home/User/datasets/gtzan.csv', header=0)

X = z.iloc[:, :-1]
y = z.iloc[:, -1:]

X = np.array(X)
y = np.array(y)

# Performing standard scaling
scaler = preprocessing.MinMaxScaler()
X_scaled = scaler.fit_transform(X)

# Defining the SVM with 'rbf' kernel
svc = SVC(kernel='rbf', C=100, random_state=50)

#X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.10, shuffle=True)

skf = StratifiedKFold(n_splits=10, shuffle=True)
accuracy_score = []
#skf.get_n_splits(X, y)

for train_index, test_index in skf.split(X, y):
    X_train, X_test = X_scaled[train_index], X_scaled[test_index]
    y_train, y_test = y[train_index], y[test_index]

    # Training the model
    svc.fit(X_train, np.ravel(y_train))

    # Prediction on test dataste
    y_pred = svc.predict(X_test)

    # Obtaining the accuracy scores of the model
    score = accuracy_score(y_test, y_pred)
    accuracy_score.append(score)

# Print the accuarcy of the svm model
print('accuracy score: %0.3f' % np.mean(accuracy_score))

然而,它给了我如下错误

Traceback (most recent call last):
  File "/home/User/Test_SVM.py", line 55, in <module>
    score = accuracy_score(y_test, y_pred)
TypeError: 'list' object is not callable

是什么导致此分数列表无法调用?我该如何解决此错误?

accuracy_score 是我代码中的一个列表,我也调用了同一个列表作为函数,它覆盖了函数 accuarcy_score 的现有功能。将列表名称更改为 acc_score 这解决了问题。