【问题标题】:How do I train and test data using K-nearest neighbour?如何使用 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()

【问题讨论】:

    标签: python python-3.x python-2.7


    【解决方案1】:

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

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

      将 matplolib.pyplot 导入为 plt

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

    3. 您还必须在 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,但请记住,您也应该考虑类,否则您将有不标准的数据分离。

      【讨论】:

        猜你喜欢
        • 2017-02-10
        • 2020-09-14
        • 2015-08-07
        • 2017-02-20
        • 2017-06-21
        • 1970-01-01
        • 1970-01-01
        • 2019-05-01
        • 2020-03-24
        相关资源
        最近更新 更多