【发布时间】:2018-03-22 11:18:36
【问题描述】:
我正在学习一点机器学习。我知道 k 近邻 (kNN) 的基础知识,但我总是看到它在示例中用于连续数据。
我现在学习的教程使用 kNN 对一些混合类型的数据(连续特征和几个分类特征)进行分类。我知道对于连续的,通常只使用诸如欧几里得距离之类的东西,但是当它混合时他们如何处理呢?
我知道如何轻松计算二进制变量的距离,但是没有“顺序”的分类变量呢?
编辑:我正在关注this Kaggle 问题教程。清理数据后,他的格式为:
Survived Pclass Sex Age Fare Embarked Title IsAlone Age*Class
0 0 3 0 1 0 0 1 0 3
1 1 1 1 2 3 1 3 0 2
2 1 3 1 1 1 0 2 1 3
3 1 1 1 2 3 0 3 0 2
4 0 3 0 2 1 0 1 1 6
5 0 3 0 1 1 2 1 1 3
6 0 1 0 3 3 0 1 1 3
7 0 3 0 0 2 0 4 0 0
8 1 3 1 1 1 0 3 0 3
9 1 2 1 0 2 1 3 0 0
(第一列实际上是ID)
所以这有点奇怪,因为它是二进制(例如,Sex)、分类和有序(例如,Age 被分成 4 或 5 个年龄段)和分类但无序(例如,Embarked 是 0、1、或 2 基于他们上的哪个端口,所以我认为它没有订单)。
数据拆分如下:
X_train = train_df.drop("Survived", axis=1)
Y_train = train_df["Survived"]
X_test = test_df.drop("PassengerId", axis=1).copy()
X_train.shape, Y_train.shape, X_test.shape
然后这一切都像这样传递给 kNN:
knn = KNeighborsClassifier(n_neighbors = 3)
knn.fit(X_train, Y_train)
Y_pred = knn.predict(X_test)
acc_knn = round(knn.score(X_train, Y_train) * 100, 2)
acc_knn
那么它是如何处理 kNN 的呢?我们没有提供任何信息或指示。
【问题讨论】:
标签: python machine-learning scikit-learn