お忙しい中、大変申し訳ありません。
エクセルデータを読み込んでランダムフォレストで回帰分析を行うプログラムを書いている最中なのですが、
rg scoreが-0.38とマイナスで低い値となってしまいます。下記のプログラムでおかしいところはありますでしょうか。
from
import pandas as pd df = pd.read_csv('Liver.csv') df_X = df.copy() df_Y = df.copy() df_X = df_X.drop('Ao',axis=1) drop_idx = ['Height', 'Weight','age'] df_Y = df_Y.drop(drop_idx,axis=1) from sklearn.model_selection import train_test_split as split x_train, x_test, y_train, y_test = split(df_X,df_Y,train_size=0.8,test_size=0.2) from sklearn import datasets import numpy as np import matplotlib.pyplot as plt from sklearn.ensemble import RandomForestRegressor as RFR from sklearn.model_selection import train_test_split, GridSearchCV rg = RFR(n_jobs=-1, random_state=2525) rg.fit(x_train,y_train) predicted_test= rg.predict(x_test) rg.score(x_test, y_test) -0.3800381696021844 plt.figure(figsize=(20,10)) plt.plot(y_test,label="True") plt.plot(predicted_test, label="predicted")
読み込んだエクセルデータはこちらです。
どうかご教授の程よろしくお願いいたします。
過学習になってるようです
質問のコードで表示されるグラフと、下記コードを実行して表示されるグラフで、「True」と「predicted」の近さ(予測の正しさ)を比べてみてください
predicted_train= rg.predict(x_train)
plt.figure(figsize=(20,10))
plt.plot(y_train,label="True")
plt.plot(predicted_train, label="predicted")
質問のコードのグラフはあまり合ってないけど、上記コードのグラフはそこそこ合ってるのではありませんか?
お忙しい中のご回答ありがとうございます。
合っていました。過学習になっているのでしょうか。
この場合は、ランダムフォレストのパラメータを調整するしかないのでしょうか?
ランダムフォレストでやるのにこだわるのなら、データを増やすか、ハイパーパラメータを変えてみるか、ですね
まだ回答がついていません
会員登録して回答してみよう