Monday, August 29, 2022

Setup scikit-multiflow Python 3.10.4 && Plotting

 Чистый случайный поиск выбирает точки из домена независимо, и целевая функция не влияет на метод генерации следующей точки выборки. Напротив, чистый адаптивный поиск выбирает следующую точку из подмножества области со строго превосходящими значениями целевой функции. Чистый случайный поиск является экстремальным в том смысле, что итерации полностью независимы и никогда не используют предыдущую информацию для воздействия на стратегию поиска, в то время как чистый адаптивный поиск является экстремальным в противоположном смысле, потому что итерации полностью зависят друг от друга, а стратегия поиска заставляет улучшаться. по определению.


Три наиболее важных аспекта Adaptive Random Forest: 
(1) создание разнообразия путем повторной выборки; 
(2) создание разнообразия путем случайного выбора подмножеств признаков для разделения узлов; 
(3) детекторы дрейфа на базовое дерево, которые вызывают выборочный сброс в ответ на дрейф. Это также позволяет обучать фоновые деревья, которые начинают обучение при обнаружении предупреждения и заменяют активное дерево, если предупреждение переходит в дрейф.


(.env) boris@boris-All-Series:~/RANDOMSEARCH$ pip install -U numpy
(.env) boris@boris-All-Series:~/RANDOMSEARCH$ pip install -U Cython
(.env) boris@boris-All-Series:~/RANDOMSEARCH$ pip install -U git+https://github.com/scikit-multiflow/scikit-multiflow

(.env) boris@boris-All-Series:~/RANDOMSEARCH$ cat randomSearch3.py
from skmultiflow.data import RegressionGenerator
from skmultiflow.meta import AdaptiveRandomForestRegressor
import numpy as np

# creating n distributions
df= np.random.normal(3, 0, size=(30, 3))
for i in range(30):
    df2= np.random.normal(3, i+1, size=(30, 3))
    df= np.vstack([df, df2])

import matplotlib.pyplot as plt
plt.plot(df[:,0])
plt.show() # plotting for 1 col only

# Setup the Adaptive Random Forest regressor
arf_reg = AdaptiveRandomForestRegressor(random_state=123456)

# Run test-then-train loop for max_samples and while there is data
y_pred=[]
for i in range(500):
    
    X=df[i,0:2].reshape(1,2)
    y=df[i,2].reshape(1)
    
    y_pred.append(arf_reg.predict(X)[0])
    arf_reg.partial_fit(X, y)

y_true = list(df[:500,2].reshape(500,))
# Display results
print('Adaptive Random Forest regressor example')
print('Mean absolute error: {}'.format(np.mean(np.abs(np.array(y_true) - np.array(y_pred)))))

y_true= np.array(y_true).reshape(500,)
data_for_plot= np.abs(y_true - y_pred)

plt.plot(data_for_plot)
plt.title('performace on continious model retraining')
plt.ylabel('error-prediction')
plt.show()






















No comments:

Post a Comment