機械学習の”ランダムフォレスト法による回帰”をしている.
参考書”機械学習しませんか”を見ている.
エラーが解決しないので教えて欲しい.
$ python3 ml145.py Traceback (most recent call last): File "ml145.py", line 19, in <module> train_target = train_target[:,0] IndexError: too many indices for array: array is 1-dimensional, but 2 were indexed
# -*- coding: utf-8 -*- from sklearn import datasets from sklearn import model_selection from sklearn import ensemble #アイリスデータをセット iris = datasets.load_iris() #最初の3データを説明変数に data = iris.data[:,0:3] #最後の1データを目的変数に target = iris.data[:,3:4] #データを取り分け train_data, test_data, train_target, test_target = model_selection.train_test_split(iris.data, iris.target, test_size=0.3, random_state=1) #配列の次元数を変更 train_target = train_target[:,0]#ここがおかしいようだ. test_target = test_target[:,0] #モデルを学習 clf = ensemble.RandomForestRegressor(n_estimators=100) clf.fit(train_data, train_target) #モデルの検証 score = clf.score(test_data, test_target) print('score=' + str(score)) #予測 predicted = clf.predict([[4.0, 2.0, 3.0]]) print('predict=' + str(predicted))
使用するデータ(iris)の中身は以下の画像のようなもので,今回は0〜2列を説明変数に,3列目を目的変数としてやる
train_target = train_target[:,0]
この文の意味もいまいちわかっていない.
","の左側が行を,右側が列の範囲を指定していることはわかった.
だからこの文ではtrain_targetの0列目のすべての中身を代入しているのだろうけど,注釈には”配列の次元数を変更”とある.おそらく{[a],[b],[c],...} → {[a,b,c,...]}みたいなことをしているのではないかと思うのだか.
回答1件
あなたの回答
tips
プレビュー