-Python- 様々な回帰モデル(3 - Random Forest)

Random Forestは分類問題でも回帰問題でも使用できます.回帰問題用のクラスはsklearn.ensembleRandomForestRegressorです.
# Import module
import math
import numpy as np
import matplotlib.pyplot as plt
from sklearn import ensemble
 
# Generate random number
x = np.random.rand(1000, 1)     # Make 1000 random numbers from 0 to 1
x = x * 20 - 10                 # Change the value range from -10 to 10
 
# Generate random number
y = np.array([math.sin(v) for v in x]) # Sine wave curve
# Add a random number with SND(average 0, standard deviation 1)
y += np.random.randn(1000)
 
# Learning
model = ensemble.RandomForestRegressor()
model.fit(x, y)
 
# Display results
print(model.score(x, y))
 
# Display Graph
plt.scatter(x, y, marker='+')
plt.scatter(x, model.predict(x), marker='o')
 
plt.show()
 
実行結果は以下のようになります.
0.8258360612267274

f:id:HidehikoMURAO:20181015104134p:plain

 R^2 決定係数は0.8258360612267274で,グラフ表示も決定係数と同じようなレベルの結果が得られているようです.