<<从零入门机器学习>> 在PyCharm中以函数化封装代码并在JupyterNoteBook中调用-以KNN算法为例(K近邻算法)

目录

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核心算法代码写入在此方法中,完成对代码的封装。如下图所示:<<从零入门机器学习>> 在PyCharm中以函数化封装代码并在JupyterNoteBook中调用-以KNN算法为例(K近邻算法)

2.3 JupyterNoteBook具体操作

       在主文件的同级目录中,我们新建一个名为kNN_function的文件夹,然后进入此文件夹,通过upload按钮,找到我们之前编写knn.py的目录,上传到jupyter服务器中,具体操作如下图所示:

       新建一个文件夹,具体操作如下:<<从零入门机器学习>> 在PyCharm中以函数化封装代码并在JupyterNoteBook中调用-以KNN算法为例(K近邻算法)
       修改文件夹的名字为kNN_function,操作如下图:
<<从零入门机器学习>> 在PyCharm中以函数化封装代码并在JupyterNoteBook中调用-以KNN算法为例(K近邻算法)
       进入到此文件夹中,通过upload找到knn.py文件所在位置并upload到jupyterNoterbook服务中,如下图所示:
<<从零入门机器学习>> 在PyCharm中以函数化封装代码并在JupyterNoteBook中调用-以KNN算法为例(K近邻算法)
<<从零入门机器学习>> 在PyCharm中以函数化封装代码并在JupyterNoteBook中调用-以KNN算法为例(K近邻算法)
       至此,我们已经将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算法。如有错误,欢迎大家指正,谢谢

上一篇:Python神器,两行代码,快速生成命令行


下一篇:11 后台首页相关接口(l轮波图接口)