如何使用 K-nearest neighbour 训练和测试数据?

Posted

技术标签:

【中文标题】如何使用 K-nearest neighbour 训练和测试数据?【英文标题】:How do I train and test data using K-nearest neighbour? 【发布时间】:2021-05-22 18:59:37 【问题描述】:

我正在尝试使用 k 近邻进行机器学习算法来训练程序。我有一个训练数据和一个测试数据,这是两个单独的 csv 文档,但是大多数机器学习算法都是训练测试拆分方法,这不是我需要的,因为训练测试拆分是在一个文档上进行训练和测试,但我正在对一个文档进行训练,并在一​​个文档上进行测试,所以我一直在思考如何使用训练数据和测试数据进行训练和测试。

以下是我从互联网上参考的一组代码。它没有显示错误,但也没有任何结果。谁能告诉我下面的这个python代码是否正确?有谁知道 k 最近邻的机器学习算法的正确代码?

https://archive.ics.uci.edu/ml/datasets/Parkinson+Speech+Dataset+with++Multiple+Types+of+Sound+Recordings

#K-最近邻

从 sklearn.neighbors 导入 KNeighborsClassifier

将熊猫导入为 pd

从 sklearn.model_selection 导入 train_test_split

从 sklearn.preprocessing 导入 StandardScaler

从 sklearn.metrics 导入混淆矩阵

从 sklearn.metrics 导入 f1_score

从 sklearn.metrics 导入 accuracy_score

从 sklearn.datasets 导入 load_iris

从 sklearn 导入指标

从 sklearn.model_selection 导入 train_test_split

从 sklearn.preprocessing 导入 StandardScaler

iris = load_iris()

X = iris.data

y = iris.target

iris.data = 'train_data.csv'

iris.target = 'test_data.csv'

knn = KNeighborsClassifier(n_neighbors=5)

knn.fit(X, y)

y_pred = knn.predict(X)

打印(metrics.accuracy_score(y, y_pred))

plt.show()

【问题讨论】:

【参考方案1】:

在这段代码中有一些不正确的地方。

    最后一行:plt是matplotlib.pyplot的缩写,但是你没有导入matplotlib是报错,导入matplotlib的代码如下:

    将 matplolib.pyplot 导入为 plt

    此外,为了预测测试集上的 Y 值,您必须使用测试集 X 值而不是训练集 X 值;

    您还必须在 X_Tr(training set) 和 X_Te(test set) 中拆分 X,同样您必须在两个列表中分隔 Y 值:YTr(training set) 和 YTe(test set)。 我希望我对您有所帮助。

【讨论】:

【参考方案2】:

首先使用您应该编辑您的问题,并在编辑时查看写作部分上方的框

选择括号来放置您的代码或在代码的开头和结尾使用 3 个 `,

现在是问题本身

1- 导入两个 csv 文件使用pandas.csv_read("/direction/to/it")

2- 合并他们在一起

要合并它们,您可以使用 pandas 功能,例如 here 中的以下示例:

df1 = pd.DataFrame("col1": [0, 1], "col_left": ["a", "b"])

df2 = pd.DataFrame("col1": [1, 2, 2], "col_right": [2, 2, 2])

pd.merge(df1, df2, on="col1", how="outer", indicator=True)

   col1 col_left  col_right      _merge
0     0        a        NaN   left_only
1     1        b        2.0        both
2     2      NaN        2.0  right_only
3     2      NaN        2.0  right_only

现在使用df.iloc["what_you_wish"]并输入train_test_split

但是,另一种方法是只生成随机索引并使用它们而不是 train_test_split,但请记住,您也应该考虑类,否则您将有不标准的数据分离。

【讨论】:

以上是关于如何使用 K-nearest neighbour 训练和测试数据?的主要内容,如果未能解决你的问题,请参考以下文章

R语言应用实战系列-基于R的人工神经网络ANN算法和KNN算法(k-Nearest Neighbour)

数据标准化后如何使用 K-Nearest Neighbors (KNN) 模型进行预测 (Python)

如何使用 Scipy 的 Kd-tree 函数来加速 K-Nearest Neighbors (KNN) [关闭]

K-Nearest Neighbors Algorithm

使用 SciKit-learn 和 SciPy 构建/搜索 K-Nearest-Neighbour 的速度

机器学习——k-近邻(K-Nearest Neighbor)