qq_42451409 2020-04-15 06:21 采纳率: 0%
浏览 1787

在使用KNN算法的时候报错:ValueError: query data dimension must match training data dimension

在使用KNN算法的过程中产生了错误
下图为代码:
图片说明
报错:
图片说明
图片说明
描述的错误信息是:值错误:查询数据维度必须与培训数据维度匹配
但我也不知道该怎么把数据维度匹配起来啊 求大佬帮帮忙,我在网上找了好久都没有解决的办法

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-13 02:38
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    从您提供的代码中可以看出,您正在尝试使用KNN算法对糖尿病数据进行分类。然而,在运行过程中遇到了一个“ValueError: query data dimension must match training data dimension”的错误。这通常表明您的训练数据(x_train)和测试数据(x_test)的特征维度不匹配。

    为了修复此问题,请确保您的x_trainx_test具有相同的特征数量。如果它们不同,则应调整您的DictVectorizerStandardScaler以适应不同的特征数。

    以下是修改后的代码:

    import pandas as pd
    from sklearn.model_selection import train_test_split
    from sklearn.preprocessing import StandardScaler
    from sklearn.neighbors import KNeighborsClassifier
    from sklearn.metrics import accuracy_score
    import numpy as np
    
    # 加载数据
    data = pd.read_csv('./data/Diabetes_data.csv', index_col=0)
    
    # 数据集的划分
    x_data = data[['UrineSugarValue', 'InsulinContent', 'Age']]
    y_data = np.ravel(data['DiagnosticResults'])
    
    # 特征抽取
    x_train, x_test, y_train, y_test = train_test_split(x_data, y_data, random_state=6)
    x_train = x_train.to_dict(orient='records')
    x_test = x_test.to_dict(orient='records')
    
    # 实例化转换器类
    vectorizer = DictVectorizer(sparse=False)
    transfer = vectorizer.fit_transform(x_train).toarray()
    
    # 标准化
    scaler = StandardScaler()
    x_train = scaler.fit_transform(transfer)
    x_test = scaler.transform(x_test)
    
    # KNN算法预估器
    estimator = KNeighborsClassifier(n_neighbors=5)
    estimator.fit(x_train, y_train)
    
    # 模型评估
    y_pred = estimator.predict(x_test)
    score = accuracy_score(y_test, y_pred)
    
    print('Accuracy:', score)
    
    

    这段代码首先加载了数据,并将其划分为训练集和测试集。然后,它使用DictVectorizer将每个样本映射到一个唯一的字典索引,以便于后续处理。接着,它使用标准化技术来规范化特征空间,使其更适合用于KNN算法。最后,它训练了一个KNN算法,并通过比较实际结果和预测结果来评估其性能。

    展开全部

    评论
    编辑
    预览

    报告相同问题?

    手机看
    程序员都在用的中文IT技术交流社区

    程序员都在用的中文IT技术交流社区

    专业的中文 IT 技术社区,与千万技术人共成长

    专业的中文 IT 技术社区,与千万技术人共成长

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    客服 返回
    顶部