DAY 012 將函數 LogisticRegression() 另外命名為 estimator 的原因
在範例或是網路上查到的資料都會有類似的作法:將函數另外命名
>>> from sklearn.linear_model import LinearRegression
>>> estimator = LinearRegression()
>>> print(LinearRegression())
LinearRegression()
>>> print(estimator)
LinearRegression()
>>> print(type(LinearRegression()))
<class 'sklearn.linear_model._base.LinearRegression'>
>>> print(type(estimator))
<class 'sklearn.linear_model._base.LinearRegression'>
可是當我另外命名aa = int(),卻沒辦法隨意使用:
>>> aa = int()
>>> print(type(aa))
<class 'int'>
>>> print(aa)
0
>>> print(aa(3.97))
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-5-f04d6a406e73> in <module>
----> 1 print(aa(3.97))
TypeError: 'int' object is not callable
想請問:
- 如粗體部份,為什麼要將函數另外取名字?直接使用不好嗎?
- 如紅色部份,為什麼我不能使用另外命名的函數?
回答列表
-
2020/09/20 上午 00:00張維元 (WeiYuan)贊同數:1不贊同數:0留言數:0
嗨,以下簡單回覆你的問題:
1. 如粗體部份,為什麼要將函數另外取名字?直接使用不好嗎?
=> 嗨,我想你這邊誤會了,LinearRegression 是一個 Class,estimator 是利用 LinearRegression 建立的物件。
2. 如紅色部份,為什麼我不能使用另外命名的函數?
=> 同上,int 是 class 不是 function。
但是你這樣寫是可以的:
```
aa = int
aa(3.14)
```
很高興可以在這次問答進行討論,如果還有不懂或是模糊的部分也歡迎持續追問。期待你的互動與鼓勵創造出不同更深度的討論。歡迎加入我自己經營的Line 群組社群,會有不定時舉辦的分享活動,一起來玩玩吧!