<<从零入门机器学习>> 在PyCharm中以函数化封装代码并在JupyterNoteBook中调用-以KNN算法为例(K近邻算法)
2022/2/20 21:02:40
本文主要是介绍<<从零入门机器学习>> 在PyCharm中以函数化封装代码并在JupyterNoteBook中调用-以KNN算法为例(K近邻算法),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
- 1. 文章主要内容
- 2. 函数化封装代码
- 2.1 Pycharm中定义类和函数(也可以叫做方法)
- 2.2 Pycharm具体操作
- 2.3 JupyterNoteBook具体操作
- 2.4 JupyterNoteBook中调用knn.py文件
- 3. 总结
1. 文章主要内容
本篇博客致力于讲解在PyCharm中以函数化封装代码并在JupyterNoteBook中调用的技巧,通过本篇博客的学习,以KNN算法为例,意在用通俗易懂的语言掌握函数化代码的技巧。通读本篇博客大概需要5分钟左右的时间。
注:本篇博客的内容是基于liuyubobobo老师讲解的机器学习课程为基础,加上本人的总结和思考制作出来的,更详细的原版视频请自行搜索bobo老师机器学习。
2. 函数化封装代码
上一篇讲解KNN算法(KNN算法博客地址),在jupyterNotebook中通过python语言实现了其核心的算法逻辑。但为了之后我们能够方便的调用此算法逻辑,我们以面向对象的思想,专门创建一个文件,然后通过文件中的方法封装KNN核心算法代码。
2.1 Pycharm中定义类和函数(也可以叫做方法)
我们仔细的可以发现,在JupyterNoteBook中新建的File的后缀名是ipynb,但我们创建的文件后缀名应该为py。总体思路是,我们通过Pycharm定义好文件和函数,然后通过jupyterNoteBook的upload功能上传到jupyter上去,即可完成对代码的封装。
2.2 Pycharm具体操作
我们以上篇博客KNN算法核心代码为例,在PyCharm中新建一个名为knn.py的文件,定义一个名为kNN_classify的函数(方法),将KNN核心算法代码写入在此方法中,完成对代码的封装。如下图所示:
2.3 JupyterNoteBook具体操作
在主文件的同级目录中,我们新建一个名为kNN_function的文件夹,然后进入此文件夹,通过upload按钮,找到我们之前编写knn.py的目录,上传到jupyter服务器中,具体操作如下图所示:
新建一个文件夹,具体操作如下:
修改文件夹的名字为kNN_function,操作如下图:
进入到此文件夹中,通过upload找到knn.py文件所在位置并upload到jupyterNoterbook服务中,如下图所示:
至此,我们已经将knn.py上传到jupyter服务器上。
2.4 JupyterNoteBook中调用knn.py文件
我们在主文件中通过引入knn.py,然后就可以调用其kNN_classify方法,达到和上一篇博客一样的效果,具体整块代码如下所示:
import numpy as np import matplotlib.pyplot as plt raw_data_X = [[3.393533211, 2.331273381], [3.110073483, 1.781539638], [1.343808831, 3.368360954], [3.582294042, 4.679179110], [2.280362439, 2.866990263], [7.423436942, 4.696522875], [5.745051997, 3.533989803], [9.172168622, 2.511101045], [7.792783481, 3.424088941], [7.939820817, 0.791637231] ] raw_data_y = [0, 0, 0, 0, 0, 1, 1, 1, 1, 1] X_train = np.array(raw_data_X) y_train = np.array(raw_data_y) x = np.array([8.093607318, 3.365731514]) %run kNN_function/knn.py # 引入knn.py文件 predict_y = kNN_classify(6, X_train, y_train, x) # 调用kNN_classify方法 predict_y
knn.py文件中的代码:
import numpy as np from math import sqrt from collections import Counter def kNN_classify(k, X_train, y_train, x): assert 1 <= k <= X_train.shape[0], "k must be valid" assert X_train.shape[0] == y_train.shape[0], \ "the size of X_train must equal to the size of y_train" assert X_train.shape[1] == x.shape[0], \ "the feature number of must be equal to X_train" distances = [sqrt(np.sum((x_train - x) ** 2)) for x_train in X_train] nearest = np.argsort(distances) topK_y = [y_train[i] for i in nearest[:k]] votes = Counter(topK_y) return votes.most_common(1)[0][0]
3. 总结
通过本篇博客,主要讲解了如何通过PyCharm函数化封装代码,并在jupyter服务器中调用,函数化封装对于管理代码有很大的帮助。下一篇博客,介绍Scikit-Learn当中封装的KNN算法,并通过函数化封装代码形式自己实现简单的Scikit-Learn底层KNN算法。如有错误,欢迎大家指正,谢谢
这篇关于<<从零入门机器学习>> 在PyCharm中以函数化封装代码并在JupyterNoteBook中调用-以KNN算法为例(K近邻算法)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享