🍀KNN算法的封装调用
封装代码如下
%run my_knn/my_knn.py
在封装之前,我们需要在同级目录下准备一个my_knn文件夹以及在文件夹下准备一个my_knn.py文件
在调用之前需要先实例化,自定义的类名如下Knn
knn = Knn() # 实例化 knn.fit(X_train,y_train) knn.predict(np.array(([4,2],[2,5],[9,6]))) # 注意括号
运行结果如下
当然如上节所说,咱自己实现的还是过于简单,那么真正的Knn算法又是什么样呢?
🍀sklearn介绍
🍀什么是sklearn?
scikit-learn(sklearn)是一个开源的Python机器学习库,建立在NumPy、SciPy和matplotlib等科学计算库之上。它提供了大量的机器学习算法实现,包括分类、回归、聚类、降维等。sklearn还包括用于模型评估、数据预处理和特征选择的工具,以及用于模型训练和预测的API接口。
🍀安装sklearn
pip install -U scikit-learn
🍀sklearn的特点
- 简单易用:sklearn提供了简洁和一致的API接口,方便使用者快速上手
- 多样化的算法:sklearn集成了各种机器学习算法,包括监督学习、无监督学习和半监督学习算法
- 数据预处理:sklearn提供了丰富的数据预处理工具,包括数据的缺失值处理、数据标准化、特征选择等
- 模型评估与选择:sklearn提供了多种模型评估指标和交叉验证方法,帮助用户评估和选择最佳模型
- 高效的并行计算:sklearn在处理大规模数据集时,能够利用并行计算来加速计算过程
🍀使用sklearn进行机器学习任务
使用sklearn进行机器学习任务通常包括以下步骤:
- 加载数据集:sklearn提供了各种经典的数据集,方便使用者进行实验
- 数据预处理:对数据进行清洗、缺失值处理、特征选择等预处理操作
- 划分数据集:将数据集划分为训练集和测试集,用于模型的训练和评估
- 选择模型:选择适合问题的机器学习算法
- 模型训练:使用训练集训练模型
- 模型评估:使用测试集对模型进行评估和验证
- 模型预测:使用已训练好的模型对新数据进行预测
🍀sklearn中调用KNN算法
首先需要导入必要的库
from sklearn.neighbors import KNeighborsClassifier import numpy as np
之后实例化
knn_clf = KNeighborsClassifier()
最后在给定的数据集上进行预测即可
raw_data_X = [[3.3935, 2.3312], [3.1101, 1.7815], [1.3438, 3.3684], [3.5823, 4.6792], [2.2804, 2.8670], [7.4234, 4.6965], [5.7451, 3.5340], [9.1722, 2.5111], [7.7928, 3.4241], [7.9398, 0.7916]] raw_data_y =[0, 0, 0, 0, 0, 1, 1, 1, 1, 1] # 0是良性,1是恶性 X_train = np.array(raw_data_X) y_train = np.array(raw_data_y)
knn_clf.fit(X_train,y_train) • 1
x = np.array([8.0936, 3.3657]).reshape(1,-1) knn_clf.predict(x)
运行结果如下
🍀浅谈分类问题和回归问题
- 分类问题:
分类问题是指将输入数据分为不同的类别或标签。在分类问题中,目标是预测一个样本属于预定义类别中的哪一类。例如,将电子邮件归类为垃圾邮件或非垃圾邮件,将图像识别为猫或狗,将肿瘤分类为良性或恶性等。分类问题一般用于离散型目标变量。 - 回归问题:
回归问题是指根据输入的特征预测一个连续的数值或浮点型输出。在回归问题中,目标是预测一个连续值而不是离散的类别。例如,预测房屋的售价、预测销售额的趋势、预测股票价格等。回归问题一般用于连续型目标变量。 - 区别
分类问题和回归问题在目标变量的类型上有所不同。分类问题涉及到离散型的目标变量,例如类别标签,需要预测样本所属的类别。而回归问题涉及到连续型的目标变量,需要预测数值型的输出。
在算法选择上,分类问题和回归问题通常使用不同的机器学习算法。常用的分类算法包括K最近邻(KNN)、决策树、支持向量机(SVM)、朴素贝叶斯等,而常用的回归算法包括线性回归、岭回归、随机森林、梯度提升等。
🍀总结
总之,KNN算法是一个简单而有效的机器学习算法,适用于许多分类和回归问题。通过选择适当的参数和数据预处理技术,可以提高算法的性能和准确性。
挑战与创造都是很痛苦的,但是很充实。