Sunday, August 28, 2022

Setup scikit-multiflow Python 3.10.4

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

Три наиболее важных аспекта 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 randomSearch.py
# Imports
from skmultiflow.data import RegressionGenerator
from skmultiflow.meta import AdaptiveRandomForestRegressor
import numpy as np

# Setup a data stream
stream = RegressionGenerator(random_state=1, n_samples=500)

# Prepare stream for use
# Setup the Adaptive Random Forest regressor
arf_reg = AdaptiveRandomForestRegressor(random_state=123456)

# Auxiliary variables to control loop and track performance
n_samples = 0
max_samples = 500
y_pred = np.zeros(max_samples)
y_true = np.zeros(max_samples)

# Run test-then-train loop for max_samples and while there is data
while n_samples < max_samples and stream.has_more_samples():
    X, y = stream.next_sample()
    y_true[n_samples] = y[0]
    y_pred[n_samples] = arf_reg.predict(X)[0]
    arf_reg.partial_fit(X, y)
    n_samples += 1

# Display results
print('Adaptive Random Forest regressor example')
print('{} samples analyzed.'.format(n_samples))
print('Mean absolute error: {}'.format(np.mean(np.abs(y_true - y_pred))))

(.env) boris@boris-All-Series:~/RANDOMSEARCH$ python3 randomSearch.py
Adaptive Random Forest regressor example
500 samples analyzed.
Mean absolute error: 136.54102745501535































n_samples = 1000
max_samples = 1000































(.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