请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于导入模块的问题

导入iris这种数据集我们都是这样导入的
from sklearn import datasets
iris = datasets.load_iris()
但是我去观察了一下sklearn这个文件夹的结构,发现sklearn这个folder下,有datasets这个folder,我们导入的是datasets这整个模块,而load_iris()这个方法在datasets/base.py中
我去实验了一下发现,from sklearn.datasets import base
然后base.load_iris()也是可以导入数据的
但是,我又做了另一个实验,我模仿sklearn这个文件夹的结构,创建了如下结构E:\pythonSrc\MachineLearing\Chap5-LinearRegression\SimpleLinearRegression\playML
我在SimpleLinearRegression这个文件夹下创建了一个notebook,playML文件夹下有老师写的SimpleLinearRegression.py这个文件,我自己写了一个mytest.py文件,里面只有一个返回hello字符串的hello()函数
然后在note里面写
from SimpleLinearRegression import playML
问题就是:playML.hello()为什么就不奏效呢
sklearn的结构是sklearn\datasets\base.py(base.py里面有load_iris()等函数)
而我的结构是:SimpleLinearRegression\playML\mytest.py(mytest.py里面有hello()函数)
恳请老师指教

正在回答

1回答

liuyubobobo 2019-07-11 14:22:25

根据你的描述,你应该写:

playML.mytest.hello()


其实这个课程的所有代码,都是创建了一个模块(playML)

然后Jupyter Notebook在模块外面调用模块内的函数或者类。

可以仔细研究一下课程代码的文件结构和具体的调用方式。


本课程的所有代码都可以通过慕课网内部的github获得。传送门:https://git.imooc.com/coding-169/coding-169

从下一章第三小节的代码,就可以清晰地看到这个结构了:)https://git.imooc.com/coding-169/coding-169/src/master/04-kNN/03-Test-Our-Algorithm


继续加油!:)

0 回复 有任何疑惑可以回复我~
  • 提问者 Heartlaughter #1
    老师您好,我有一点实在不明白,就是sklearn为什么能直接通过
    datasets.load_iris()加载数据
    而这个函数是在datasets/base.py文件里的呀,照理说我们在加载数据集的时候应该也是
    from sklearn.datasets import base
    再base.load_iris()才符合逻辑呀
    但是sklearn是怎么做到直接
    from sklearn import datasets
    再datasets.load_iris()的呢
    我看官方文档也是这样写,但是我不懂这样子写的原理。
    打扰老师了,烦请老师百忙抽空帮忙看看
    回复 有任何疑惑可以回复我~ 2019-07-11 14:35:45
  • liuyubobobo 回复 提问者 Heartlaughter #2
    在__init__.py中做了定义,参考这里:https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/datasets/__init__.py 加油!:)
    回复 有任何疑惑可以回复我~ 2019-07-11 15:58:36
  • 提问者 Heartlaughter #3
    Thanks a lot
    回复 有任何疑惑可以回复我~ 2019-07-11 16:30:46
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信