当前位置: 首页 > 知识库问答 >
问题:

Scikit学习-值错误:操作数无法一起广播

谢俊英
2023-03-14

我试图在数据集上应用高斯朴素贝叶斯模型来预测疾病。当我使用训练数据进行预测时,它运行正常,但当我尝试使用测试数据进行预测时,它给出了ValueError

运行文件('D:/ROFI/ML/heartdisease/prediction.py',wdir='D:/ROFI/ML/heartdisease')回溯(最后一次最近调用):

文件“”,第1行,在runfile('D:/ROFI/ML/heartdisease/prediction.py',wdir='D:/ROFI/ML/heartdisease'中)

文件“C:\Users\User\Anaconda3\lib\site packages\spyder\utils\site\sitecustomize.py”,第866行,在runfile execfile(文件名,命名空间)中

执行文件exec(编译(f.read(),文件名,exec),命名空间)中的文件"C:\用户\用户\Anaconda3\lib\site-包\spyder\utils\site\sitecustomize.py",第102行。

文件"D:/ROFI/ML/心脏病/prediction.py",第85行,在预测(x_train,y_train,x_test,y_test)

文件“D:/ROFI/ML/heartdisease/prediction.py”,第73行,predict-predicted\u data=model.predict(x\u检验)

文件“C:\Users\User\Anaconda3\lib\site packages\sklearn\naive\u bayes.py”,第65行,predict jll=self.\u joint\u log\u likelion(X)

文件“C:\Users\User\Anaconda3\lib\site packages\sklearn\naive\u bayes.py”,第429行,在联合日志中n_ij-=0.5*np.sum((X-self.theta[i,:])**2)/

操作数不能与形状一起广播(294,14) (15,)

这里怎么了?

import pandas
from sklearn import metrics
from sklearn.preprocessing import Imputer
from sklearn.naive_bayes import GaussianNB    

def load_data(feature_columns, predicted_column):

    train_data_frame = pandas.read_excel("training_data.xlsx")
    test_data_frame = pandas.read_excel("testing_data.xlsx")
    data_frame = pandas.read_excel("data_set.xlsx")

    x_train = train_data_frame[feature_columns].values
    y_train = train_data_frame[predicted_column].values

    x_test = test_data_frame[feature_columns].values
    y_test = test_data_frame[predicted_column].values

    x_train, x_test = impute(x_train, x_test)

    return x_train, y_train, x_test, y_test


def impute(x_train, x_test):

    fill_missing = Imputer(missing_values=-9, strategy="mean", axis=0)

    x_train = fill_missing.fit_transform(x_train)
    x_test = fill_missing.fit_transform(x_test)

    return x_train, x_test


def predict(x_train, y_train, x_test, y_test):

    model = GaussianNB()
    model.fit(x_train, y_train.ravel())

    predicted_data = model.predict(x_test)
    accuracy = metrics.accuracy_score(y_test, predicted_data)
    print("Accuracy of our naive bayes model is : %.2f"%(accuracy * 100))

    return predicted_data


feature_columns = ["age", "sex", "chol", "cigs", "years", "fbs", "trestbps", "restecg", "thalach", "exang", "oldpeak", "slope", "ca", "thal", "num"]
predicted_column = ["cp"]

x_train, y_train, x_test, y_test = load_data(feature_columns, predicted_column)

predict(x_train, y_train, x_test, y_test)

注意:两个文件的列数相同。

共有1个答案

彭鸿彩
2023-03-14

我找到窃听器了。错误的发生是由于Im电脑Im电脑替换了数据集中缺失的值。但是,如果任何列完全由缺失值组成,那么它将删除该列。我有一列完全在测试数据集中丢失的数据。所以,Im电脑删除了它,因此形状与训练数据不匹配,这就是错误的原因。刚刚从feature_columns列表中删除了列名称,该列表充满了缺失值,并且有效。

 类似资料:
  • 问题内容: 在该问题中,我引用了以下代码: 我在该问题中发现,该结果按model.classes_给出的顺序表示了属于每个类的点的概率 所以…如果正确解释,此答案表示该点可能是“橙色”(由于数据量很少,因此置信度较低)。但是直觉上,这个结果显然是不正确的,因为给出的点与“苹果”的训练数据相同。可以肯定的是,我也进行了相反的测试: 同样,显然是不正确的,但方向相反。 最后,我尝试了更远的点。 同样,

  • 问题内容: 我正在处理不平衡的数据集,并希望使用scikit的gridsearchcv进行网格搜索以调整模型的参数。为了对数据进行超采样,我想使用SMOTE,我知道我可以将其作为管道的一个阶段,并将其传递给gridsearchcv。我担心的是,我认为训练和验证折纸都将使用击打,这不是您应该做的。验证集不应过采样。我是否正确,整个管道将应用于两个数据集拆分?如果是的话,我该如何扭转呢?在此先多谢 问

  • 问题内容: 我正在使用python 2.7,并且正在尝试从1.00000000到3.0000000008的一些随机数据进行预测。我的阵列中大约有196个项目,但出现错误 我似乎无法独自解决此问题。任何帮助或相关文档的链接将不胜感激。 这是我正在使用的代码,会产生此错误 问题答案: 如果和的形状与最后一行的rhs中的第二项(即)的形状不同,则将出现这种类型的错误。要将数组添加到数组的元组中,它们都必

  • 当我运行模拟器时,以下错误显示为警报: 操作无法完成。(LaunchServicesError错误0。) 我试过很多关于堆栈溢出的答案,但它们对我都不起作用。 Feb 18 14:48:12 com.apple.dt.xcode[32825]:错误域=LaunchServicesError Code=0“(null)”userInfo={Error=MissingBundleExecutable,

  • 我使用混淆矩阵模块将类预测结果与实际值进行比较。 我得到了这个错误: 回溯(最后一次调用):文件“vis.py”,第757行,在cnf_矩阵=混乱矩阵(y_test,y_pred)文件“C:\Anaconda\envs\nn35\lib\site packages\sklearn\metrics\classification.py”第240行,混乱矩阵y_type,y_true,y_pred=_c

  • 从sklearn加载流行数字数据集。数据集模块,并将其分配给可变数字。 分割数字。将数据分为两组,分别命名为X_train和X_test。还有,分割数字。目标分为两组Y_训练和Y_测试。 提示:使用sklearn中的训练测试分割方法。模型选择;将随机_状态设置为30;并进行分层抽样。使用默认参数,从X_序列集和Y_序列标签构建SVM分类器。将模型命名为svm_clf。 在测试数据集上评估模型的准确