こんばんは!技術評論社の「データサイエンス養成読本」の第3章 Pythonによる機械学習をJupyter Notebookに写経しているのですが、単回帰分析でValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
が出ます。
「指摘された行の関係性をはっきりさせればよい」との情報は得られたのですが、
px = np.arange(X.min(), X.max(), .01)[:, np.newaxis]
このコードをこれ以上どうやってはっきりさせればよいのでしょうか。
np.arange
で等差数列を生成して、np.newaxis
でこの数列を縦方向にするという意味のコードであり、過不足ないように思うのですがorz
該当コード
python
1# リスト17 単回帰分析 2LinerRegr = linear_model.LinearRegression() 3X = setosa[["SepalLength"]] 4Y = setosa[["SepalWidth"]] 5LinerRegr.fit(X, Y) 6plt.scatter(X, Y, color="black") 7px = np.arange(X.min(), X.max(), .01)[:, np.newaxis] 8# px = np.arange(X.min(), X.max(), .01)[:, np.newaxis] 9py = LinerRegr.predict(px) 10plt.plot(px, py, color = "blue", linewidth=3) 11plt.xlabel("SepalLength") 12plt.ylabel("SepalWidth") 13plt.show() 14 15print(LinerRegr.coef_)# 回帰係数 16print(LinerRegr.intercept_) # 切片
エラー文
ValueError Traceback (most recent call last) <ipython-input-16-dcbb1a892a19> in <module>() 5 LinerRegr.fit(X, Y) 6 plt.scatter(X, Y, color="black") ----> 7 px = np.arange(X.min(), X.max(), .01)[:, np.newaxis] 8 # px = np.arange(X.min(), X.max(), .01)[:, np.newaxis] 9 py = LinerRegr.predict(px) ~/anaconda3/lib/python3.7/site-packages/pandas/core/generic.py in __nonzero__(self) 1574 raise ValueError("The truth value of a {0} is ambiguous. " 1575 "Use a.empty, a.bool(), a.item(), a.any() or a.all()." -> 1576 .format(self.__class__.__name__)) 1577 1578 __bool__ = __nonzero__ ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
できましたー(≧▽≦)
can110 様、ありがとうございます(≧▽≦) できましたー!
px = np.arange(X.min()[0], X.max()[0], 0.01)[:,np.newaxis]
「最小/大値の0番目の要素」で指定するのですね(゚д゚)!
この本は改訂版が出ているようなので、それを買いなおすか
持っているのはその改定2版なんですよ。。。orz 2018年5月11日発行のものですf^^;
完成コード
python
1# リスト17 単回帰分析 2LinerRegr = linear_model.LinearRegression() 3X = setosa[["SepalLength"]] 4Y = setosa[["SepalWidth"]] 5LinerRegr.fit(X, Y) 6plt.scatter(X, Y, color="black") 7px = np.arange(X.min()[0], X.max()[0], 0.01)[:,np.newaxis] 8 9py = LinerRegr.predict(px) 10plt.plot(px, py, color = "blue", linewidth=3) 11plt.xlabel("SepalLength") 12plt.ylabel("SepalWidth") 13plt.show() 14 15print(LinerRegr.coef_)# 回帰係数 16print(LinerRegr.intercept_) # 切片
回答2件
あなたの回答
tips
プレビュー