提问者:小点点

如何使用K近邻来训练和测试数据?


我试图做一个机器学习算法使用k-最近邻来训练程序。我有一个列车数据和一个测试数据,这是两个独立的csv文档,但大多数机器学习算法都是列车测试拆分方法,这不是我需要的,因为列车测试拆分是在一个文档上进行培训和测试,但我在一个文档上进行培训,在一个文档上进行测试,所以我一直在学习如何使用训练数据和测试数据进行训练和测试。

下面是我从网上参考的一组代码。它不显示错误,但也没有结果。有人能告诉我下面的python代码是否正确吗?有人知道k近邻机器学习算法的确切正确代码吗?

https://archive.ics.uci.edu/ml/datasets/Parkinson语音数据集与多种类型的声音录制

#K-近邻

从sklearn。邻居导入Kneighbors分类器

作为pd进口熊猫

从sklearn。型号选择导入列车测试拆分

从sklearn.preprocessing导入Standard Scaler

从sklearn.metrics进口confusion_matrix

从sklearn。指标导入f1_分数

从sklearn。指标导入准确性评分

从sklearn.datasets进口load_iris

导入指标

从sklearn。型号选择导入列车测试拆分

从sklearn.preprocessing导入Standard Scaler

iris=加载_iris()

X=iris.data

Y=iris.target

iris.data='train_data.csv'

艾里斯。目标='测试数据。csv'

knn=Kneighbors分类器(n_=5)

knn.fit(X, y)

y_pred=knn。预测(X)

打印(度量、准确性和分数(y、y、pred))

plt。show()


共2个答案

匿名用户

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

>

导入matplolib.pyplot

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

此外,您必须在X_Tr(训练集)和X_Te(测试集)中分割X,类似地,您必须在两个列表中分离Y值:YTr(训练集)和YTe(测试集)。我希望我有帮助。

匿名用户

选择括号将您的代码或使用3 this'在开始和结束的代码,

现在问题本身

1-使用pandas导入两个csv文件。csv_读取(“/direction/to/it”)

2-将它们合并在一起

为了合并它们,您可以使用熊猫功能,如以下示例:

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

然而,另一种方法是生成随机索引,而不是使用<代码> TraceTestSypult,但请记住,您也应该考虑类,否则会有不标准的数据分离。