質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

226閲覧

python NGboostの簡単な実装でエラーが出てしまう

koguma

総合スコア3

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

2グッド

0クリップ

投稿2025/04/30 07:00

実現したいこと

pythonのライブラリであるNGboostをつかって簡単な回帰問題が解けるようになる

発生している問題・分からないこと

import numpy as np
from ngboost import NGBRegressor
from ngboost.distns import Normal

例:学習データ

X_train = np.random.randn(100,10) # 100サンプル、10特徴量
y_train = np.random.randn(100)
print(X_train.shape)
print(y_train.shape)

モデルの作成と学習

モデル作成

model = NGBRegressor(
n_estimators=200, # 決定木の数
learning_rate=0.01, # 学習率
#max_depth=5, # 決定木の最大深さ
Dist=Normal, # 出力分布(ここではNormal分布)
random_state=42, # 再現性のための乱数シード
verbose=True # 学習過程を表示
)

model.fit(X_train, y_train)

予測

X_test = np.random.randn(20, 10) # テストデータ 20サンプル
y_pred = model.predict(X_test)

以上のランダムデータでNGboostを使った予測メソッドまで使おうとしたのですが、データの配列に関するエラーが出たのですが、修正方法がわかりません。

エラーメッセージ

error

1(100, 10) 2(100,) 3Traceback (most recent call last): 4 File "c:\Users\UchinoYuta\Downloads\NGboost_プログラム\test.py", line 61, in <module> 5 model.fit(X_train, y_train) 6 ~~~~~~~~~^^^^^^^^^^^^^^^^^^ 7 File "C:\Python\Python313\Lib\site-packages\ngboost\ngboost.py", line 275, in fit 8 grads = D.grad(Y_batch, natural=self.natural_gradient) 9 File "C:\Python\Python313\Lib\site-packages\ngboost\scores.py", line 12, in grad 10 grad = np.linalg.solve(metric, grad) 11 File "C:\Python\Python313\Lib\site-packages\numpy\linalg\_linalg.py", line 410, in solve 12 r = gufunc(a, b, signature=signature) 13ValueError: solve: Input operand 1 has a mismatch in its core dimension 0, with gufunc signature (m,m),(m,n)->(m,n) (size 100 is different from 2)

該当のソースコード

import numpy as np from ngboost import NGBRegressor from ngboost.distns import Normal # 例:学習データ X_train = np.random.randn(100,10) # 100サンプル、10特徴量 y_train = np.random.randn(100) print(X_train.shape) print(y_train.shape) # モデルの作成と学習 # モデル作成 model = NGBRegressor( n_estimators=200, # 決定木の数 learning_rate=0.01, # 学習率 #max_depth=5, # 決定木の最大深さ Dist=Normal, # 出力分布(ここではNormal分布) random_state=42, # 再現性のための乱数シード verbose=True # 学習過程を表示 ) model.fit(X_train, y_train) # 予測 X_test = np.random.randn(20, 10) # テストデータ 20サンプル y_pred = model.predict(X_test) のmodel.fit(X_train, y_train)の部分でエラー

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

chatgptにエラー修正を頼んだところ、配列y_trainの次元が2次元になっている可能性があるので1次元にしてくださいという指示があったので、試したところダメでした。なお、次元はもともと1次元になってました。ライブラリのバージョンはngboost 0.3.12で最新だと思います。

補足

そもそも使っているライブラリがよくないなどあれば教えていただきたいです。最終的にはNGboostをPV発電量予測に利用したいと考えています。

tatsu99, melian👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fiveHundred

2025/04/30 07:20

Google Colabで試してみましたが、エラーは出ませんでした。 > ライブラリのバージョンはngboost 0.3.12で最新だと思います。 以下で確認したところ、0.5.5が最新でした。 https://pypi.org/project/ngboost/
melian

2025/04/30 09:34

エラーが発生している箇所は現状では以下の様に変更されています。 ngboost/ngboost/scores.py at master · stanfordmlgroup/ngboost https://github.com/stanfordmlgroup/ngboost/blob/master/ngboost/scores.py#L12 grad = np.linalg.solve(metric, grad[..., None])[..., 0] 当該のコミットは以下です。(v0.5.1 => v0.5.2) https://github.com/stanfordmlgroup/ngboost/pull/365/commits/d11b2b5b6015bef8d100303d65db1e66ccbb5b3c#diff-a7b0a2c00973223d03b9f0521461753ccde4481ca31fe8e7c5a1dae770d14e3c 次元(dimension)が足りなかった様です。
koguma

2025/05/01 02:32

コメントありがとうございます。まずngboost0.5.5をコマンドプロンプトのpipコマンドでダウンロードしようと思ったのですが、0.3.12が最新版であると表示され、アップグレードできません。どのように対応すればよいでしょうか。 また、次元が足りない問題に関しては正解値のy_trainの次元を増やすべきということでしょうか?
melian

2025/05/01 02:38

> 次元が足りない問題に関しては正解値のy_trainの次元を増やすべきということでしょうか? ngboost 0.5.1以前の問題なので、ngboost 0.5.2 以降をインストールすれば y_train はそのままでも問題ないはずです。
melian

2025/05/01 02:56

> pipコマンドでダウンロードしようと思ったのですが、0.3.12が最新版であると表示され そちらでお使いの Python のバージョンはどうなっていますでしょうか? 手元の環境は Python 3.12 ですが、例えば pip index を実行すると以下の様に表示されます。 pip index versions ngboost ngboost (0.5.5) Available versions: 0.5.5, 0.5.4, 0.5.3, 0.5.2, 0.5.1, 0.5.0, 0.3.12, 0.3.11, ... INSTALLED: 0.5.5 LATEST: 0.5.5
koguma

2025/05/01 03:04

pythonは3.13を使っているので、比較的新しいと思います。記載いただいたコマンドを実行したところ、 ngboost (0.3.12) Available versions: 0.3.12, 0.3.11, 0.3.10, 0.3.9, 0.3.8, 0.3.7, 0.3.6, 0.3.5, 0.3.4, 0.3.3, 0.3.2, 0.3.1, 0.3.0, 0.2.3, 0.2.2, 0.2.1, 0.2.0, 0.1.4, 0.1.3, 0.1.2, 0.1.1, 0.1 INSTALLED: 0.3.12 LATEST: 0.3.12 このように表示されました、、、
melian

2025/05/01 03:51 編集

その場合、ngboost 0.5.0 以降は Python3.13 に対応していないということになりますので、Python を version 3.12 に入れ替えるか、 GitHub のリポジトリからインストールしてみるなどの対応が考えられます。 追記 Python3.13 をインストールして GitHub リポジトリからインストールしてみましたがエラーが発生しました。Python のバージョンが "<3.13,>=3.9" でなければならないので、やはり 3.12 に入れ替えることをお勧めします。 pip3.13 install --user git+https://github.com/stanfordmlgroup/ngboost Collecting git+https://github.com/stanfordmlgroup/ngboost  Cloning https://github.com/stanfordmlgroup/ngboost to /tmp/pip-req-build-ulcjymdp                 : ERROR: Package 'ngboost' requires a different Python: 3.13.0 not in '<3.13,>=3.9'
koguma

2025/05/01 06:39

コメントありがとうございます。pythonのバージョンを変えたところ問題が解決しました! ベストアンサーに選びたいので同じ内容を回答欄に投稿いただけますでしょうか?
melian

2025/05/01 06:53

私への依頼でしょうか? そうでしたら koguma さんの自己回答&BAでよいかと思います。
guest

回答1

0

自己解決

確認したところ、ngboostはPython 3.13に対応していないようです。
Python 3.12以下にしてみてください。
https://pypi.org/project/ngboost/
melian
melian
2025/05/01 12:51 編集

その場合、ngboost 0.5.0 以降は Python3.13 に対応していないということになりますので、Python を version 3.12 に入れ替えるか、 GitHub のリポジトリからインストールしてみるなどの対応が考えられます。

追記

Python3.13 をインストールして GitHub リポジトリからインストールしてみましたがエラーが発生しました。Python のバージョンが "<3.13,>=3.9" でなければならないので、やはり 3.12 に入れ替えることをお勧めします。

pip3.13 install --user git+https://github.com/stanfordmlgroup/ngboost
Collecting git+https://github.com/stanfordmlgroup/ngboost
Cloning https://github.com/stanfordmlgroup/ngboost to /tmp/pip-req-build-ulcjymdp
:
ERROR: Package 'ngboost' requires a different Python: 3.13.0 not in '<3.13,>=3.9'

投稿2025/05/01 14:22

koguma

総合スコア3

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問