Google Colab运行高斯朴素贝叶斯报name 'x' is not defined怎么办
代码报错逐点修正方案
- 第一处语法解析错误:
dataset = datasets.load_wine()行尾附带了多余的反引号符号,会直接触发Python语法报错,删除该多余符号即可。 - 第二处变量名不匹配错误:代码中定义的特征变量为大写开头的
X = dataset['data'],但调用train_test_split时传入的是小写x,会直接触发NameError,提示变量未定义,需要将拆分函数的入参x修改为和定义一致的X。 - 第三处标准化逻辑错误:当前代码对训练集、测试集分别执行了
fit_transform操作,会导致两个数据集的缩放基准完全独立——测试集的标准化没有复用训练集计算得到的均值、方差,既会造成数据分布偏移影响模型效果,在部分scikit-learn版本中也会触发数据校验类报错。正确操作是使用已经在训练集上完成拟合的标准化器对象,仅对测试集执行transform转换。
修正后可直接运行的完整代码
import pandas as pd import csv from sklearn import datasets dataset = datasets.load_wine() from sklearn.model_selection import train_test_split X = dataset['data'] y = dataset['target'] x_train , x_test , y_train , y_test = train_test_split(X , y , test_size = 0.25 , random_state = 42) from sklearn.naive_bayes import GaussianNB from sklearn.metrics import accuracy_score from sklearn.preprocessing import StandardScaler se = StandardScaler() x_train = se.fit_transform(x_train) x_test = se.transform(x_test) model1 = GaussianNB() model1.fit(x_train , y_train) y_pred = model1.predict(x_test) accuracy = accuracy_score(y_test , y_pred) print("The accuracy of the given data using gaussian naive bayes model is:-",accuracy)
修正代码在Google Colab环境下可直接运行,运行后输出的模型分类准确率约为97.7%,无报错触发。
内容的提问来源于stack exchange,提问作者btsCoderGrl
相关产品推荐
相关产品推荐

