python之k-近邻算法(sklearn版)

python之k-近邻算法(sklearn版),第1张

上文借用了numpy和pandas等模块自编了k-近邻算法 python之k-近邻算法(非sklearn版) ,这次借用sklearn轮子来实现一下

数据还是用上篇文章的数据来 https://pan.baidu.com/s/1zIGz6GtEU20UeT6hemP4MQ

上篇文章我们是利用KNN.py中的自编函数panduan在读取数据的过程中来实现的,而这种转变在sklearn中已经有轮子调用了

这里再补充一点:烂悉对于类别数据(对于特征值也是适用的),可以分为 标称特征(nominal feature) 有序特征(ordinal feature) .

对于我们这里的数据largeDoses,smallDoses,didntLike应该是对应着有序特征

如果在这里'喜欢的类别'本身不带有有序的含义的话,即largeDoses,smallDoses,didntLike三个类别没有序别之分,可以借用sklearn里的功能扰敏

可以看到借用sklearn是比较方便的

但是。。。。。但是。。。。以上的0,1,2在算法看来依然是有顺序的,所以我们可以利用 独热编码(one-hot encoding) ,即创建一个新的虚拟特征(dummy feature)

也可以利用pandas里的功能

—————————————————————————缓历枝———————————

特征缩放(feature scaling)对于除了决策树和随机森林两个算法没用以外,对其他算法和优化算法来讲都是必不可少的

即上篇文章所涉及到的

对于线性模型来讲,标准化更加好,一是符合线性模型对权重的处理,二是保留了异常值的信息

———————————————————————————————————

上篇文章对于此类问题的处理见 datingClassTest 函数

K-近邻算法被称之为 惰性算法 ,和其他机器学习算法不一样,因为他仅仅是对训练数据集有记忆功能,而不是从训练集中通过学习得到一个判别函数,即不需要训练,看过上篇文章的小伙伴应该会有体会。 缺点是计算复杂度会随着样本数量的增长而呈线性增长,除非数据集中特征数量有限

PyQt5本身并不包含机器学习算法,但是可以通过调用Python的机器学习库实现KNN算法。具体可以使用scikit-learn库中的KNeighborsClassifier类来实现KNN算法。

首先需要安装scikit-learn库,可以使用以下命令进行安装:

```

pip install -U scikit-learn

```

接下来就可以在PyQt5应败乱用程序中调用scikit-learn库中的KNeighborsClassifier类,实现KNN算法。以下是一个简单的示例代码:

```python

from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel

import sys

from sklearn.neighbors import KNeighborsClassifier

class MainWindow(QMainWindow):

def __init__(self):

super().__init__()

self.initUI()

def initUI(self):

self.setWindowTitle("KNN算法示例")

self.setGeometry(100, 100, 300, 200)

# 创建KNN分类器对象

knn = KNeighborsClassifier(n_neighbors=3)

# 训练数据

X_train = [[1, 2], [3, 4], [5, 6], [7, 8]]

y_train = [0, 0, 1, 1]

knn.fit(X_train, y_train)

# 预测新数据

X_test = [[2, 3], [4, 5]]

y_pred = knn.predict(X_test)

# 显示预测结果

label = QLabel(self)

label.setText("预测结果:" + str(y_pred))

label.move(50, 50)

if __name__ == '__main__':

app = QApplication(sys.argv)

window = MainWindow()

window.show()

sys.exit(app.exec_())

```

以上示例代码创建了一个窗口,并在昌枯首窗口中使用KNeighborsClassifier类实现了耐数KNN算法,最后在窗口中显示了预测结果。

需要注意的是,这只是一个简单的示例代码,实际应用中需要根据具体的需求和数据情况进行调整和优化。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12364110.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存