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

在使用KNN算法的时候报错:ValueError: query data dimension must match training data dimension
- 写回答
- 好问题 12 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 你知我知皆知 2024-08-13 02:38关注
以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
从您提供的代码中可以看出,您正在尝试使用KNN算法对糖尿病数据进行分类。然而,在运行过程中遇到了一个“ValueError: query data dimension must match training data dimension”的错误。这通常表明您的训练数据(
x_train
)和测试数据(x_test
)的特征维度不匹配。为了修复此问题,请确保您的
x_train
和x_test
具有相同的特征数量。如果它们不同,则应调整您的DictVectorizer
或StandardScaler
以适应不同的特征数。以下是修改后的代码:
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算法,并通过比较实际结果和预测结果来评估其性能。解决 无用评论 打赏 举报