You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复SVM模型中PCA与SVC代码的两类NameError错误?

问题解决:SVM模型中的两个NameError错误

错误1:NameError: name 'x_train' is not defined

问题原因

代码通过train_test_split划分数据集时,定义的训练集特征变量是大写的X_train,但后续PCA转换时误写为小写的x_train;同时划分得到的训练标签是Y_train,拟合分类器时却用了未定义的y_train,且classifier变量未提前初始化。

修复方案

  1. 将PCA转换代码中的x_train替换为X_train
  2. 将分类器拟合代码中的y_train替换为Y_train
  3. 在使用classifier前,先初始化SVM分类器

错误2:NameError: name 'svm' is not defined

问题原因

代码导入SVC的方式是from sklearn.svm import SVC,直接导入了SVC类而非svm模块,因此无法通过svm.SVC调用类。

修复方案

二选一即可:

  • 方案1:直接使用导入的SVC类,将model = svm.SVC(kernel='linear')改为model = SVC(kernel='linear')
  • 方案2:修改导入语句为import sklearn.svm as svm,保留model = svm.SVC(kernel='linear')

关键修正后的代码片段

# ... 前面代码不变 ...

# 划分训练集和测试集
X_train, x_test, Y_train, y_test = train_test_split(X, Y, test_size=0.2, random_state=0)

# 提前初始化分类器
classifier = SVC()

print(X_train.shape)
print(Y_train.shape)

from sklearn.decomposition import PCA

pca = PCA(n_components=3)
# 修正训练集变量名
x_train_pca = pca.fit_transform(X_train)

x_test_pca = pca.transform(x_test)
# 修正训练标签变量名
classifier.fit(x_train_pca, Y_train)

predictions = classifier.predict(x_test_pca)
accuracy = classifier.score(x_test_pca, y_test)
print("Accuracy:", accuracy)

# 处理二分类问题
X = X[np.logical_or(Y==0,Y==1)]
Y = Y[np.logical_or(Y==0,Y==1)]
# 修正SVC调用方式
model = SVC(kernel='linear')
clf = model.fit(X, Y)

# ... 后面代码不变 ...

内容的提问来源于stack exchange,提问作者Stack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 14:45:24