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