老师请问为什么这个np.ones说是data type不认识?

来源:5-8 实现多元线性回归

xue109196

2018-06-19

//img.mukewang.com/szimg/5b28edda0001fb2a22320900.jpg

这样就报错,但是单独拿出来就可以

//img.mukewang.com/szimg/5b28ee550001727d06540132.jpg

http://img.mukewang.com/szimg/5b28f296000155fb05380378.jpg

http://img.mukewang.com/szimg/5b28f298000102a606120238.jpg

以下是我的LR的代码

//img.mukewang.com/szimg/5b28f1ea000102f914101284.jpg

我把这个np.ones((len(x_train), 1))组成的全1的矩阵单独拿出来了。

最后还有一个问题就是我不能在pycharm里面run这个LinearRegression.py文件,因为说导入这个metrics.py是有问题的,这是为什么呢?不能用 import .metrics  要用 import metrics,不能加点;但是不用点就在notebook里面就过不了。是不是我之前没认真听课,没印象老师讲过这个区别。请老师解惑!

写回答

1回答

liuyubobobo

2018-06-21

1)

我目测没有看出原因。请尝试下载课程的官方代码在你的环境下运行看是否有问题?如果没有问题请仔细比对(或者逐模块替换)看一下你的代码哪里有问题?课程官方代码传送门:https://github.com/liuyubobobo/Play-with-Machine-Learning-Algorithms


2)

由于这个课程不是Python的语法课程,所以对这个问题没有介绍。

简单回答如下:


直接import metrics可以理解成在当前运行环境中找metrics;

import .metrics相当于是相对路径,在当前你创建的模块下寻找metrics

注意:当前的运行环境和当前模块是两个概念。

对于Python来说,__main__和你设置的模块不在一个运行环境里,即使这个__main__的代码写在了你的模块文件中,但是从运行的角度是分离的,__main__称为top level enviroment。


所以,如果你写了import .metrics,在__main__中运行,就会寻找__main__.metrics,肯定找不到,就报错了。

但是你写import metrics,在模块外面运行的话,模块的其他文件没有加载进环境,会找不到metrics。


所以,模块中互相依赖的文件,import的时候要用.metrics,这是正确的模块编写方式。

但是不要在模块内部测试模块!要在模块外部测试模块。也就是你的__main__必须在模块的外面作为模块的使用者。


可以参考这个问答:https://coding.imooc.com/learn/questiondetail/52848.html

0
1
xue109196
OK好的我去试一下官方代码。刚学python,就会写个类和方法什么的,谢谢老师?这下全明白了。
2018-06-21
共1条回复

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5839 学习 · 2437 问题

查看课程