A machine learning package for streaming data in Python. The other ancestor of River.

Overview

Build status Build Status codecov Python version Anaconda-Server Badge PyPI version Anaconda-Server Badge DockerHub License Gitter

scikit-multiflow is a machine learning package for streaming data in Python.


creme and scikit-multiflow are merging into a new project called River.

We feel that both projects share the same vision. We believe that pooling our resources instead of duplicating work will benefit both sides. We are also confident that this will benefit both communities. There will be more people working on the new project, which will allow us to distribute work more efficiently. We will thus be able to work on more features and improve the overall quality of the project.

Both projects will stop active development. The code for both projects will remain publicly available, although development will only focus on minor maintenance during a transition period. The architecture of the new package is very similar to that of creme. It will focus on single-instance incremental models.

We encourage users to use River instead of creme. We understand that this transition will require an extra effort in the short term from current users. However, we believe that the result will be better for everyone in the long run.

You will still be able to install and use creme as well as scikit-multiflow. Both projects will remain on PyPI, conda-forge and GitHub.


Quick links

Features

Incremental Learning

Stream learning models are created incrementally and are updated continuously. They are suitable for big data applications where real-time response is vital.

Adaptive learning

Changes in data distribution harm learning. Adaptive methods are specifically designed to be robust to concept drift changes in dynamic environments.

Resource-wise efficient

Streaming techniques efficiently handle resources such as memory and processing time given the unbounded nature of data streams.

Easy to use

scikit-multiflow is designed for users with any experience level. Experiments are easy to design, setup, and run. Existing methods are easy to modify and extend.

Stream learning tools

In its current state, scikit-multiflow contains data generators, multi-output/multi-target stream learning methods, change detection methods, evaluation methods, and more.

Open source

Distributed under the BSD 3-Clause, scikit-multiflow is developed and maintained by an active, diverse and growing community.

Use cases

The following tasks are supported in scikit-multiflow:

Supervised learning

When working with labeled data. Depending on the target type can be either classification (discrete values) or regression (continuous values)

Single/multi output

Single-output methods predict a single target-label (binary or multi-class) for classification or a single target-value for regression. Multi-output methods simultaneously predict multiple variables given an input.

Concept drift detection

Changes in data distribution can harm learning. Drift detection methods are designed to rise an alarm in the presence of drift and are used alongside learning methods to improve their robustness against this phenomenon in evolving data streams.

Unsupervised learning

When working with unlabeled data. For example, anomaly detection where the goal is the identification of rare events or samples which differ significantly from the majority of the data.


Jupyter Notebooks

In order to display plots from scikit-multiflow within a Jupyter Notebook we need to define the proper mathplotlib backend to use. This is done by including the following magic command at the beginning of the Notebook:

%matplotlib notebook

JupyterLab is the next-generation user interface for Jupyter, currently in beta, it can display interactive plots with some caveats. If you use JupyterLab then the current solution is to use the jupyter-matplotlib extension:

%matplotlib widget

Citing scikit-multiflow

If scikit-multiflow has been useful for your research and you would like to cite it in a academic publication, please use the following Bibtex entry:

@article{skmultiflow,
  author  = {Jacob Montiel and Jesse Read and Albert Bifet and Talel Abdessalem},
  title   = {Scikit-Multiflow: A Multi-output Streaming Framework },
  journal = {Journal of Machine Learning Research},
  year    = {2018},
  volume  = {19},
  number  = {72},
  pages   = {1-5},
  url     = {http://jmlr.org/papers/v19/18-251.html}
}
Comments
  • [FEATURE] Delayed Evaluations

    [FEATURE] Delayed Evaluations

    As asked by @jacobmontiel, here is the first implementation of delayed evaluation. It is already stable, but we still need to address some features, like dealing with a delay by a number of samples and adding a delay to all the stream. We need to check if there are ways to improve performance by removing pandas data frame from TimeManager too. Finally, we need to create a dataset to test this new feature.

    Changes proposed in this pull request:

    • Created TemporalDataStream, to handle temporal data in a stream.
    • Created EvaluatePrequentialDelayed,
    • Created TimeManager, to handle delay queue even outside evaluation

    Known bugs:

    • Sometimes progress bar is printed a lot of times when reaching 100%, and sometimes it reaches more than 100%. I tried to fix that in update_metrics method, but nothing fixed it yet.

    Checklist

    • [x] Code complies with PEP-8 and is consistent with the framework.
    • [x] Code is properly documented.
    • [x] Tests are included for new functionality or updated accordingly.
    • [x] Travis CI build passes with no errors.
    • [x] Test Coverage is maintained (threshold is -0.2%).
    • [x] Files changed (update, add, delete) are in the PR's scope (no extra files are included).
    evaluation feature 
    opened by fabriciojoc 27
  • Add LearnNSE algorithm

    Add LearnNSE algorithm

    Fixes # .

    Changes proposed in this pull request: Add LearnNSE algorithm Compare to MOA: SEAGenerator with window size of 1000: MOA mean acc: 83.38 multiflow learnNSE: 95.58 RandomTreeGenerator with window size of 1000: MOA mean acc: 68.12 multiflow learnNSE: 63.17

    The only difference is I use GaussianNaiveBayes and I am not sure which Naive Bayes MOA use

    @scikit-multiflow/scikit-multiflow-repo-admins

    Checklist

    • [x] Code complies with PEP-8 and is consistent with the framework.
    • [x] Code is properly documented.
    • [x] Tests are included for new functionality.
    • [x] Travis CI build passes.
    • [x] Test Coverage is maintained (threshold 0.2%)
    opened by anhquancao 20
  • Arf predict proba

    Arf predict proba

    Changes

    Fixes #62, #63, #65.

    Changes proposed in this pull request:

    • Implementation of predict_proba for Adaptive Random Forest (#62).
    • Fix a bug where weights were incorrectly passed (#63).
    • Above bugfix solves #65 (technically only tested j=2,5,10 and rest still running).

    Remarks

    In the discussion of #63 it was mentioned that the fix reduces performance. However this was based on just the single unit test. Using the same unit test, but changing the test set (by increasing the initial value of cnt), we see the following values:

    | cnt | master | PR | |---|---|---| | 0 | 0.6531 | 0.4694 | | 1 | 0.5306 | 0.4694 | | 2 | 0.4082 | 0.4694 | | 3 | 0.5310 | 0.5306 | | 4 | 0.3877 | 0.5510 | | 5 | 0.5306 | 5714 | | 6 | 0.5306 | 0.5918 | | 7 | 0.4287 | 0.4898 | | 8 | 0.408 | 0.5510 | | 9 | 0.5510 | 0.5918 |

    While we can do more thorough evaluations, for me it seems that the initial set-up just was an outlier, and there is no real performance decrease. Further motivation is that if I increase the training set size on the PR version, performance does increase. On the PR branch, using 150 samples for training results in a performance of 0.4694 (with cnt=0 determining the test set). Increasing this to 1500 increases performance to 0.5714, increasing the training set again to 15000 results in a performance of 0.7142.

    Checklist

    • [x] Code complies with PEP-8 and is consistent with the framework.
    • [x] Code is properly documented.
    • [x] Tests are included for new functionality.
    • [x] Travis CI build passes.
    • [x] Test Coverage is maintained (threshold 0.2%)

    @scikit-multiflow/scikit-multiflow-repo-admins

    opened by PGijsbers 20
  • Exception has occurred: TypeError 'NoneType' object is not subscriptable

    Exception has occurred: TypeError 'NoneType' object is not subscriptable

    why this error happened in evaluation for some csv file when filestream ? hi , when i want to Filestream from a csv file i got this message error ."Exception has occurred: TypeError 'NoneType' object is not subscriptable." for example for music.csv in datasets folder, i got this message too. for some datasets it works fine , but for some doesnt. for ex, i generate a datastream and save it to csv file and when i want to filestream it , i got that error message.for others like moving_squares or sea_stream it works. i want to generate a stream from stream generate and save the stream generator to a csv file and add come columns to that csv file and then Filestream that updated csv file , but i got this error in evaluation. ,first i think it was for float numbers , i cant solve the problem . for some csv file int values it does works .

    @jacobmontiel

    [Note: For comments and usage-related questions please consider the users group.

    question 
    opened by samiraat 19
  • Stream of samples with delayed responses

    Stream of samples with delayed responses

    This is just a question. Suppose my samples are produced as a stream, but that I cannot know the response before a certain delay (during which new samples are produced and need to be predicted). In the simple examples in the doc, it looks like the model is evaluated right after it made its prediction. Is there a way to somehow delay the evaluation, allowing for other samples to be predicted in the mean time?

    enhancement 
    opened by sam31415 19
  • Feature: Implement Streaming Half-Space-Trees

    Feature: Implement Streaming Half-Space-Trees

    Streaming Half-Space-Trees (HS-Trees), a fast one-class anomaly detector for evolving data streams.

    Theory and the pseudocode algorithm can be reviewed in: S. C. Tan, K. M. Ting, and T. F. Liu, “Fast anomaly detection for streaming data,” in IJCAI Proceedings-International Joint Conference on Artificial Intelligence, 2011, vol. 22, no. 1, pp. 1511–1516.:

    Changes proposed in this pull request:

    • An implementation of streaming Half Space Trees.
    • [TODO] Test is missing on this commit. I have a dummy branch where I created some tests, but it is reading from a big csv file which was mentioned in the paper. If you have any suggestion on how to integrate any tests on this PR I would be happy. Link for the dummy brach for testing: https://github.com/mertozer94/scikit-multiflow/tree/Silly-tests-Half-Space-Trees

    Checklist

    • [x] Code complies with PEP-8 and is consistent with the framework.
    • [x] Code is properly documented.
    • [x] Tests are included for new functionality or updated accordingly.
    • [x] Travis CI build passes with no errors.
    • [ ] Test Coverage is maintained (threshold is -0.2%).
    • [x] Files changed (update, add, delete) are in the PR's scope (no extra files are included).
    enhancement 
    opened by mertozer94 18
  • Support for running time and model size accounting

    Support for running time and model size accounting

    Hi @scikit-multiflow/scikit-multiflow-repo-admins,

    This PR is focused on issues #18 and #56.

    I've created a RunningTimeMeasurements class which accounts for the training, testing and total running time of each evaluated predictor. To ignore the time spent on other operations I had to call the running accounting methods directly before the partial_fit and predict methods on evaluate_prequential and evaluate_holdout. For instance:

    https://github.com/smastelini/scikit-multiflow/blob/05f07b67809807d2564f7ad04faa35b55d46f85c/src/skmultiflow/evaluation/evaluate_prequential.py#L277-L279

    Do you have any other suggestions?

    Regarding the model size accounting, a function was added in skmultiflow/utils/utils.py. This tool is only called when the metrics are updated in the skmultiflow/evaluation/base_evaluator.py. The default returning unit is MB.

    In addition, I provide tests for the new functionalities.

    The visualizations for the new metrics were implemented as subplots without axes ticks and bounding boxes, where the measurements are annotated. That was the best solution I could find, considering the auto re-scaling of the elements that is performed periodically. Could a better option be implemented? I would happily implement the required changes.

    In summary, the changes proposed in this pull request are:

    • Running time is added as a new performance metric
    • Model size is added as a new performance metric
    • Automated tests and visualizations for the new features are also added

    Checklist:

    • [x] Code complies with PEP-8 and is consistent with the framework.
    • [x] Code is properly documented.
    • [x] Tests are included for new functionality.
    • [x] Travis CI build passes.
    • [ ] Test Coverage is maintained (threshold 0.2%)
    • An observation: Some of the current existing commits in skmultiflow/MASTER might appear as authored by @jacobmontiel and commited by me in this PR. This was an effect of the "git rebase" I performed in my commits to avoid polluting the timeline. I merged many minor incremental changes into few steps. Sorry for the possible mess...

    Thanks in advance for the help!

    opened by smastelini 18
  • Refactoring in the skmultiflow.trees module

    Refactoring in the skmultiflow.trees module

    This PR addresses Issue #148.

    Due to the large number of necessary changes in the PR, I would like to request some help to verify and discuss the validity of the performed operations.

    The main idea in this PR is to increase modularity and the organization in the skmultiflow.trees modules. To this end, I envisioned the tree implementations as five main elements:

    • The tree core codes, per se
    • Their nodes (split nodes, prediction nodes, and so forth)
    • Their attribute observers (which monitor the attribute/target combinations to enable split attempts)
    • The chosen split criterion to growth
    • The types of attribute tests performed (binary tests, for instance)

    As a result, I've created subfolders for the last 4 aspects, respectively, nodes, attribute_observer, split_criterion, and attribute_test. These names are just a sketch. Any suggestions for a better nomenclature are welcomed!

    The needed changes for attribute_observer, split_criterion, and attribute_test were pretty straightforward. I had just to update some imports and configure/create some __init__.py files. The changes for the leaf predictors, on the other hand, caused more impact. To decouple the inner classes from the trees, I had to create a lot of new files (one for each kind of leaf predictor, plus some basic node structures from HoeffdingTree).

    As I mentioned in Issue #148, I believe that there might be some redundant code among the plethora of leaf node classes. This might be a task for future improvements in the framework. Additionally, I believe that such refactoring of the tree module could help with Issue #138. Maybe we could extend the renaming process to the leaf nodes as well. I've tried to standardize the names of the new files as much as I could. I had to rename some classes to comply with the name of the trees they belong to.

    Nevertheless, there might be still some inconsistencies in the names. Unlike the tree algorithms (Issue #138), perhaps we could standardize the leaves names in this PR, since the users do not access them directly via the API. There would be no necessity to issue deprecation warnings in this case (IMHO :-D). What do you think, @jacobmontiel? (On the other hand, the contributors would have to adapt to the new changes)

    I also updated the documentation to reflect the changes. I noticed that some of the leaf nodes do not have (a complete) documentation. With the refactoring process, this became more apparent. We could either add the missing documentation in this PR or create some issues about this need. Any opinions on that matter?

    I also edited some of the code to comply with PEP8. The changes were mostly some line breaks for very long lines.

    As much as all the tests are passing (at least in my local machine), given the extent of the changes, I would appreciate some help in verifying possible missing/incorrect imports. It is also possible that there are unnecessary imports I may not have noticed.

    It is worth noting that we could apply the same refactoring to the skmultiflow.rules module.

    To finalize, I would like to thank you @jacobmontiel, @hmgomes and the skmultiflow community in advance for the help and patience during this PR.

    Any comments and/or requests for changes are welcomed. I believe that the code at its current state is the first step to achieve the desired goals for this PR.

    Cheers, and sorry for the long description. Saulo

    Changes proposed in this pull request:

    • To streamline the Hoeffding Tree algorithms separating their leaf nodes, attribute observers, split criteria, and attribute tests.
    • Improvements in some __init__.py files (adding missing exports for some classes/functions)
    • Updates in the documentation
    • Addresses #148.

    Checklist

    • [x] Code complies with PEP-8 and is consistent with the framework.
    • [ ] Code is properly documented.
    • [x] Tests are included for new functionality or updated accordingly.
    • [x] Travis CI build passes with no errors.
    • [ ] Test Coverage is maintained (threshold is -0.2%).
    • [x] Files changed (update, add, delete) are in the PR's scope (no extra files are included).
    enhancement refactoring 
    opened by smastelini 16
  • [FEATURE] Add AdaptiveRandomForestRegressor and streamline attribute observer for regression

    [FEATURE] Add AdaptiveRandomForestRegressor and streamline attribute observer for regression

    This PR resumes the work (PR #145) started by Alban to implement the AdaptiveRandomForestRegressor (ARFReg). The implementation was finalized and tested. I have also added some additional options, such as different aggregation and weighting strategies, and different kinds of setups to track concept drifts.

    As base learners, the Forest uses trees that derive from HoeffdingTreeRegressor (HTR), in detriment of FIMT-DD (as in MOA). HTRs do not have inner concept drift adaptation mechanisms; however, such action is performed at higher abstraction levels, by the ensemble algorithm. This action repeats in the classification version of Adaptive Random Forests.

    In addition to ARFReg, this PR also streamlines the usage of attribute observers for regression. It adds a new and improved observer (derived from the multi-target regression observer) that works with both single-target and multi-target tasks. This enhanced NumericAttributeRegressionObserver also enables the support to instance weighting, an essential aspect for bagging-based algorithms. Hence, just a single observer is used for all the regression trees.

    Changes proposed in this pull request:

    • Finishes work initiated in PR #145
    • Streamline regression observers

    Checklist

    Implementation

    • [x] Implementation is correct (it performs its intended function).
    • [x] Code complies with PEP-8 and is consistent with the framework.
    • [x] Code is properly documented.
    • [x] PR description covers ALL the changes performed.
    • [x] Files changed (update, add, delete) are in the PR's scope (no extra files are included).

    Tests

    • [x] New functionality is tested.
    • [x] Tests are created for the new functionality or existing tests are updated accordingly.
    • [x] ALL tests pass with no errors.
    • [x] CI/CD pipelines run with no errors.
    • [x] Test Coverage is maintained (coverage may drop by no more than 0.2%).
    enhancement feature 
    opened by smastelini 13
  • Hoeffding Tree leaves' distribution varies depending on the python version

    Hoeffding Tree leaves' distribution varies depending on the python version

    Expected behaviour

    For the same code, the final results of Hoeffding Tree should be the same regardless of the version of python.

    Actual behaviour

    Hoeffding Tree returns a different probability for the same code, and this probability is the same in python 3.4 & 3.5 but different in 3.6. This behaviour doesn't depend on leaf_prediction.

    Also, the classifier has the same model (tree) in the end for each version of python.

    I did a little digging, and I found that the origin of the problem is in the final values of _observed_class_distribution of active nodes.

    Here is a quick example:

        stream = RandomTreeGenerator(tree_random_state=23, sample_random_state=12, n_classes=2, n_cat_features=2,
                                         n_categories_per_cat_feature=4, n_num_features=1, max_tree_depth=30,
                                         min_leaf_depth=10,
                                         fraction_leaves_per_level=0.45)
        stream.prepare_for_use()
    
        learner = HoeffdingTree(nominal_attributes=[i for i in range(1, 9)], leaf_prediction='nba')
    
        cnt = 0
        max_samples = 15000
        predictions = array('i')
        proba_predictions = []
        wait_samples = 100
    
        while cnt < max_samples:
            X, y = stream.next_sample()
            # Test every n samples
            if (cnt % wait_samples == 0) and (cnt != 0):
                predictions.append(learner.predict(X)[0])
                proba_predictions.append(learner.predict_proba(X)[0])
            learner.partial_fit(X, y)
            cnt += 1
    
        l_nodes = learner._find_learning_nodes()
        for node in l_nodes:
            print(node.node._observed_class_distribution.values())
            
    
    # python3.6
    
    dict_values([592.0, 535.0])
    dict_values([227.0, 304.0])
    dict_values([830.0, 542.0])
    dict_values([1594.0, 1623.0])
    dict_values([324.79304610816257, 582.6026022538947])
    dict_values([822.2069538918374, 1131.3973977461053])
    
    # python3.4 & 3.5
    dict_values([587.0, 640.0])
    dict_values([327.0, 254.0])
    dict_values([830.0, 542.0])
    dict_values([1414.0, 1529.0])
    dict_values([582.6026022538947, 324.79304610816257])
    dict_values([1131.3973977461053, 822.2069538918374])
    

    [Note: For comments and usage-related questions please consider the users group.

    opened by garawalid 13
  • Include running time as evaluation metric

    Include running time as evaluation metric

    The running time should be included as an evaluation metric. It is already being logged for the overall process, but it would be nice to get a plot over time. It could also be interesting to split into training time / testing time.

    enhancement evaluation 
    opened by jmread 13
  • Concept of ADWIN detected_change() method

    Concept of ADWIN detected_change() method

    Describe the bug Hi everyone! ,

    I am working on drift detection using ADWIN. My concern is very specific to detected_change() method while understanding the code I observe that inner-most for loop "k" is iterated over range(cursor.bucket_size_row - 1). Since bucket_size_row indicates the number of elements present in the bucket and iteration of the inner-most loop in detected_change() we are skipping the last non-zero elements while comparing the absolute value with threshold epsilon. I might be wrong but wanted to understand the reasoning and related concepts explained in the research paper. Please advise on the reasoning and logic of detected_change() method.

      By Example: Let's assume by adding elements below are buckets being formed - 3rd Cursor Total : [ 3. 1. 96. 92. 0. 0.] 2nd Cursor Total : [2. 4. 2. 3. 0. 0.] 1st Cursor Total : [8. 4. 5. 9. 4. 0.]

    What is happening in the current scenario - 5th Element (4) of 1st cursor total bucket is skipped to the first element (2) of 2nd cursor total bucket 4th Element (3) of 1st cursor total bucket is skipped to the first element(3) of 3rd cursor total bucket

    Thanks in advance!

    Additional context

    def detected_change(self): """ Detects concept change in a drifting data stream.

        The ADWIN algorithm is described in Bifet and Gavaldà's 'Learning from 
        Time-Changing Data with Adaptive Windowing'. The general idea is to keep 
        statistics from a window of variable size while detecting concept drift.
         
        This function is responsible for analysing different cutting points in 
        the sliding window, to verify if there is a significant change in concept.
        
        Returns
        -------
        bln_change : bool
            Whether change was detected or not
            
        Notes
        -----
        If change was detected, one should verify the new window size, by reading 
        the width property.
        
        """
        bln_change = False
        bln_exit = False
        bln_bucket_deleted = False
        self.mint_time += 1
        n0 = 0
        if (self.mint_time % self.mint_clock == 0) and (self.width > self.mint_min_window_longitude):
            bln_reduce_width = True
            while bln_reduce_width:
                bln_reduce_width = not bln_reduce_width
                bln_exit = False
                n0 = 0
                n1 = self._width
                u0 = 0
                u1 = self.total
                v0 = 0
                v1 = self._variance
                n2 = 0
                u2 = 0
                cursor = self.list_row_bucket.last
                i = self.last_bucket_row
    
                while (not bln_exit) and (cursor is not None):
                    for k in range(cursor.bucket_size_row - 1):
                        n2 = self.bucket_size(i)
                        u2 = cursor.get_total(k)
    
                        if n0 > 0:
                            v0 += cursor.get_variance(k) + 1. * n0 * n2 * (u0/n0 - u2/n2) * (u0/n0 - u2/n2) / (n0 + n2)
    
                        if n1 > 0:
                            v1 -= cursor.get_variance(k) + 1. * n1 * n2 * (u1/n1 - u2/n2) * (u1/n1 - u2/n2) / (n1 + n2)
    
                        n0 += self.bucket_size(i)
                        n1 -= self.bucket_size(i)
                        u0 += cursor.get_total(k)
                        u1 -= cursor.get_total(k)
    
                        if (i == 0) and (k == cursor.bucket_size_row - 1):
                            bln_exit = True
                            break
    
                        abs_value = 1. * ((u0/n0) - (u1/n1))
                        if (n1 >= self.mint_min_window_length) and (n0 >= self.mint_min_window_length)\
                                and (self.__bln_cut_expression(n0, n1, u0, u1, v0, v1, abs_value, self.delta)):
                            bln_bucket_deleted = True
                            self.detect = self.mint_time
                            if self.detect == 0:
                                self.detect = self.mint_time
                            elif self.detect_twice == 0:
                                self.detect_twice = self.mint_time
    
                            bln_reduce_width = True
                            bln_change = True
                            if self.width > 0:
                                n0 -= self.delete_element()
                                bln_exit = True
                                break
    
                    cursor = cursor.get_previous()
                    i -= 1
        self.mdbl_width += self.width
        if bln_change:
            self._n_detections += 1
        self.in_concept_change = bln_change
        return bln_change
    

    @jacobmontiel

    opened by greywolfbrillio 0
  • Bump numpy from 1.17.3 to 1.22.0 in /cicd/azure-wheel-helpers

    Bump numpy from 1.17.3 to 1.22.0 in /cicd/azure-wheel-helpers

    Bumps numpy from 1.17.3 to 1.22.0.

    Release notes

    Sourced from numpy's releases.

    v1.22.0

    NumPy 1.22.0 Release Notes

    NumPy 1.22.0 is a big release featuring the work of 153 contributors spread over 609 pull requests. There have been many improvements, highlights are:

    • Annotations of the main namespace are essentially complete. Upstream is a moving target, so there will likely be further improvements, but the major work is done. This is probably the most user visible enhancement in this release.
    • A preliminary version of the proposed Array-API is provided. This is a step in creating a standard collection of functions that can be used across application such as CuPy and JAX.
    • NumPy now has a DLPack backend. DLPack provides a common interchange format for array (tensor) data.
    • New methods for quantile, percentile, and related functions. The new methods provide a complete set of the methods commonly found in the literature.
    • A new configurable allocator for use by downstream projects.

    These are in addition to the ongoing work to provide SIMD support for commonly used functions, improvements to F2PY, and better documentation.

    The Python versions supported in this release are 3.8-3.10, Python 3.7 has been dropped. Note that 32 bit wheels are only provided for Python 3.8 and 3.9 on Windows, all other wheels are 64 bits on account of Ubuntu, Fedora, and other Linux distributions dropping 32 bit support. All 64 bit wheels are also linked with 64 bit integer OpenBLAS, which should fix the occasional problems encountered by folks using truly huge arrays.

    Expired deprecations

    Deprecated numeric style dtype strings have been removed

    Using the strings "Bytes0", "Datetime64", "Str0", "Uint32", and "Uint64" as a dtype will now raise a TypeError.

    (gh-19539)

    Expired deprecations for loads, ndfromtxt, and mafromtxt in npyio

    numpy.loads was deprecated in v1.15, with the recommendation that users use pickle.loads instead. ndfromtxt and mafromtxt were both deprecated in v1.17 - users should use numpy.genfromtxt instead with the appropriate value for the usemask parameter.

    (gh-19615)

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bugfix for issue #306 - [BUG] The change points detected are different from the points reported from MOA, using the same example #306

    Bugfix for issue #306 - [BUG] The change points detected are different from the points reported from MOA, using the same example #306

    There are two differences comparing the MOA and scikit-multiflow implementation detected and fixed:

    1. When a concept drift is detected, the statistics should be reset. If not, the detector will continuously detect more drifts after the first detection. One example is the “drift_stream.npy” applied in the unit test. The stream contains one drift that starts at index 999 (the distribution of values changed). However, with the current implementation, four drifts are detected

    With the current source code:

    drift_stream npy

    After resetting the statistics on the add_element method:

    drift_stream_new_implementation

    1. In the method detected_change, the code does not iterate over the complete bucket because of this line: for k in range(cursor.bucket_size_row-1):

    I have changed the code line to solve it because the range function does not include the cursor value.bucket_size_row. New code line: for k in range(cursor.bucket_size_row):

    Changes proposed in this pull request:

    • Change method add_element() from ADWIN class to reset statistics if a concept drift was detected.
    • Change the method detected_change from ADWIN class to iterate the complete bucket.

    Checklist

    Implementation

    • [ ] Implementation is correct (it performs its intended function).
    • [ ] Code is consistent with the framework.
    • [ ] Code is properly documented.
    • [ ] PR description covers ALL the changes performed.
    • [ ] Files changed (update, add, delete) are in the PR's scope (no extra files are included).

    Tests

    • [X ] New functionality is tested.
    • [X ] Tests are created for the new functionality or existing tests are updated accordingly.
    • [X ] ALL tests pass with no errors.
    • [ ] CI/CD pipelines run with no errors.
    • [ ] Test Coverage is maintained (coverage may drop by no more than 0.2%).
    opened by denisesato 0
  • [FEATURE] need a `verbose: int` param for each model

    [FEATURE] need a `verbose: int` param for each model

    Is your feature request related to a problem? Please describe. I have a training dataset of around 1.5m records. I was trying to get HoeffdingTreeRegressor to fit it, and it's been running for a while without any indication about its progress.

    Describe the solution you'd like It'd be great to have verbose: int param in the constructor to report what's happening within the fitting process based on the level (in int) passed to it.

    Describe alternatives you've considered Not really any alternative.

    Additional context E.g. following regressors all accept verbose param.

    ensemble.RandomForestRegressor(n_jobs=-1, random_state=rand_state, verbose=1)
    ensemble.BaggingRegressor(n_jobs=-1, random_state=rand_state, verbose=1)
    xgb.XGBRegressor(verbosity=1, booster='gbtree', n_jobs=-1, random_state=rand_state)
    lgb.LGBMRegressor(num_leaves=2047, random_state=rand_state, force_col_wise=True, verbose=1)
    
    opened by tigerinus 0
  • [QUESTION] Installing scikit-multiflow

    [QUESTION] Installing scikit-multiflow

    I'm trying to install scikit-multiflow by following the installation guide on the webpage. I've installed the dependencies but I can't install it using the pip command "pip install -U scikit-multiflow". Could you please help me?

    The following is the installation log:

    ERROR: Command errored out with exit status 1: command: 'c:\users\pichau\pycharmprojects\tccfwork\venv\scripts\python.exe' -u -c 'import io, os, sys, setuptools , tokenize; sys.argv[0] = '"'"'C:\Users\Pichau\AppData\Local\Temp\pip-install-wxbtl444\scikit-multiflow_003d6 117f70b419bb0cf4433d5182b7c\setup.py'"'"'; file='"'"'C:\Users\Pichau\AppData\Local\Temp\pip-install-wxbtl 444\scikit-multiflow_003d6117f70b419bb0cf4433d5182b7c\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__ file__) if os.path.exists(file) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read( ).replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' bdist_wheel -d 'C:
    Users\Pichau\AppData\Local\Temp\pip-wheel-2qm77rhr' cwd: C:\Users\Pichau\AppData\Local\Temp\pip-install-wxbtl444\scikit-multiflow_003d6117f70b419bb0cf4433d5182b7 c
    Complete output (247 lines): running bdist_wheel running build running config_cc unifing config_cc, config, build_clib, build_ext, build commands --compiler options running config_fc unifing config_fc, config, build_clib, build_ext, build commands --fcompiler options running build_src build_src building extension "skmultiflow.lazy.libNearestNeighbor" sources building extension "skmultiflow.metrics.confusion_matrix" sources building extension "skmultiflow.metrics.classification_performance_evaluator" sources build_src: building npy-pkg config files running build_py creating build creating build\lib.win32-3.6 creating build\lib.win32-3.6\skmultiflow copying src\skmultiflow\setup.py -> build\lib.win32-3.6\skmultiflow copying src\skmultiflow_version.py -> build\lib.win32-3.6\skmultiflow copying src\skmultiflow_init.py -> build\lib.win32-3.6\skmultiflow creating build\lib.win32-3.6\skmultiflow\anomaly_detection copying src\skmultiflow\anomaly_detection\half_space_trees.py -> build\lib.win32-3.6\skmultiflow\anomaly_detection copying src\skmultiflow\anomaly_detection_init.py -> build\lib.win32-3.6\skmultiflow\anomaly_detection creating build\lib.win32-3.6\skmultiflow\bayes copying src\skmultiflow\bayes\naive_bayes.py -> build\lib.win32-3.6\skmultiflow\bayes copying src\skmultiflow\bayes\utils.py -> build\lib.win32-3.6\skmultiflow\bayes copying src\skmultiflow\bayes_init_.py -> build\lib.win32-3.6\skmultiflow\bayes creating build\lib.win32-3.6\skmultiflow\core copying src\skmultiflow\core\base.py -> build\lib.win32-3.6\skmultiflow\core copying src\skmultiflow\core\instance_header.py -> build\lib.win32-3.6\skmultiflow\core copying src\skmultiflow\core\pipeline.py -> build\lib.win32-3.6\skmultiflow\core copying src\skmultiflow\core_init_.py -> build\lib.win32-3.6\skmultiflow\core creating build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\agrawal_generator.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\anomaly_sine_generator.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\base_stream.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\concept_drift_stream.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\data_stream.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\file_stream.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\hyper_plane_generator.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\led_generator.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\led_generator_drift.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\mixed_generator.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\multilabel_generator.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\pseudo_random_processes.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\random_rbf_generator.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\random_rbf_generator_drift.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\random_tree_generator.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\regression_generator.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\sea_generator.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\sine_generator.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\stagger_generator.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\synth.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\temporal_data_stream.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\time_manager.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\unsupervised_stream.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\waveform_generator.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data_init_.py -> build\lib.win32-3.6\skmultiflow\data creating build\lib.win32-3.6\skmultiflow\drift_detection copying src\skmultiflow\drift_detection\adwin.py -> build\lib.win32-3.6\skmultiflow\drift_detection copying src\skmultiflow\drift_detection\base_drift_detector.py -> build\lib.win32-3.6\skmultiflow\drift_detection copying src\skmultiflow\drift_detection\ddm.py -> build\lib.win32-3.6\skmultiflow\drift_detection copying src\skmultiflow\drift_detection\eddm.py -> build\lib.win32-3.6\skmultiflow\drift_detection copying src\skmultiflow\drift_detection\hddm_a.py -> build\lib.win32-3.6\skmultiflow\drift_detection copying src\skmultiflow\drift_detection\hddm_w.py -> build\lib.win32-3.6\skmultiflow\drift_detection copying src\skmultiflow\drift_detection\kswin.py -> build\lib.win32-3.6\skmultiflow\drift_detection copying src\skmultiflow\drift_detection\page_hinkley.py -> build\lib.win32-3.6\skmultiflow\drift_detection copying src\skmultiflow\drift_detection_init_.py -> build\lib.win32-3.6\skmultiflow\drift_detection creating build\lib.win32-3.6\skmultiflow\evaluation copying src\skmultiflow\evaluation\base_evaluator.py -> build\lib.win32-3.6\skmultiflow\evaluation copying src\skmultiflow\evaluation\evaluate_holdout.py -> build\lib.win32-3.6\skmultiflow\evaluation copying src\skmultiflow\evaluation\evaluate_prequential.py -> build\lib.win32-3.6\skmultiflow\evaluation copying src\skmultiflow\evaluation\evaluate_prequential_delayed.py -> build\lib.win32-3.6\skmultiflow\evaluation copying src\skmultiflow\evaluation\evaluate_stream_gen_speed.py -> build\lib.win32-3.6\skmultiflow\evaluation copying src\skmultiflow\evaluation\evaluation_data_buffer.py -> build\lib.win32-3.6\skmultiflow\evaluation copying src\skmultiflow\evaluation_init_.py -> build\lib.win32-3.6\skmultiflow\evaluation creating build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\accuracy_weighted_ensemble.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\adaptive_random_forests.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\adaptive_random_forest_regressor.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\additive_expert_ensemble.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\batch_incremental.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\classifier_chains.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\dynamic_weighted_majority.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\learn_nse.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\learn_pp.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\leverage_bagging.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\multi_output_learner.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\online_adac2.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\online_boosting.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\online_csb2.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\online_rus_boost.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\online_smote_bagging.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\online_under_over_bagging.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\oza_bagging.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\oza_bagging_adwin.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\regressor_chains.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\streaming_random_patches.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta_init_.py -> build\lib.win32-3.6\skmultiflow\meta creating build\lib.win32-3.6\skmultiflow\neural_networks copying src\skmultiflow\neural_networks\perceptron.py -> build\lib.win32-3.6\skmultiflow\neural_networks copying src\skmultiflow\neural_networks_init_.py -> build\lib.win32-3.6\skmultiflow\neural_networks creating build\lib.win32-3.6\skmultiflow\prototype copying src\skmultiflow\prototype\robust_soft_learning_vector_quantization.py -> build\lib.win32-3.6\skmultiflow\p rototype copying src\skmultiflow\prototype_init_.py -> build\lib.win32-3.6\skmultiflow\prototype creating build\lib.win32-3.6\skmultiflow\rules copying src\skmultiflow\rules\attribute_expand_suggestion.py -> build\lib.win32-3.6\skmultiflow\rules copying src\skmultiflow\rules\base_predicate.py -> build\lib.win32-3.6\skmultiflow\rules copying src\skmultiflow\rules\base_rule.py -> build\lib.win32-3.6\skmultiflow\rules copying src\skmultiflow\rules\foil_gain_rule_criterion.py -> build\lib.win32-3.6\skmultiflow\rules copying src\skmultiflow\rules\hellinger_distance_criterion.py -> build\lib.win32-3.6\skmultiflow\rules copying src\skmultiflow\rules\info_gain_rule_criterion.py -> build\lib.win32-3.6\skmultiflow\rules copying src\skmultiflow\rules\nominal_attribute_class_observer.py -> build\lib.win32-3.6\skmultiflow\rules copying src\skmultiflow\rules\numeric_attribute_class_observer.py -> build\lib.win32-3.6\skmultiflow\rules copying src\skmultiflow\rules\very_fast_decision_rules.py -> build\lib.win32-3.6\skmultiflow\rules copying src\skmultiflow\rules_init_.py -> build\lib.win32-3.6\skmultiflow\rules creating build\lib.win32-3.6\skmultiflow\transform copying src\skmultiflow\transform\base_transform.py -> build\lib.win32-3.6\skmultiflow\transform copying src\skmultiflow\transform\missing_values_cleaner.py -> build\lib.win32-3.6\skmultiflow\transform copying src\skmultiflow\transform\one_hot_to_categorical.py -> build\lib.win32-3.6\skmultiflow\transform copying src\skmultiflow\transform\windowed_minmax_scaler.py -> build\lib.win32-3.6\skmultiflow\transform copying src\skmultiflow\transform\windowed_standard_scaler.py -> build\lib.win32-3.6\skmultiflow\transform copying src\skmultiflow\transform_init_.py -> build\lib.win32-3.6\skmultiflow\transform creating build\lib.win32-3.6\skmultiflow\trees copying src\skmultiflow\trees\arf_hoeffding_tree.py -> build\lib.win32-3.6\skmultiflow\trees copying src\skmultiflow\trees\arf_hoeffding_tree_regressor.py -> build\lib.win32-3.6\skmultiflow\trees copying src\skmultiflow\trees\attribute_split_suggestion.py -> build\lib.win32-3.6\skmultiflow\trees copying src\skmultiflow\trees\extremely_fast_decision_tree.py -> build\lib.win32-3.6\skmultiflow\trees copying src\skmultiflow\trees\gaussian_estimator.py -> build\lib.win32-3.6\skmultiflow\trees copying src\skmultiflow\trees\hoeffding_adaptive_tree.py -> build\lib.win32-3.6\skmultiflow\trees copying src\skmultiflow\trees\hoeffding_adaptive_tree_regressor.py -> build\lib.win32-3.6\skmultiflow\trees copying src\skmultiflow\trees\hoeffding_tree.py -> build\lib.win32-3.6\skmultiflow\trees copying src\skmultiflow\trees\hoeffding_tree_regressor.py -> build\lib.win32-3.6\skmultiflow\trees copying src\skmultiflow\trees\isoup_tree.py -> build\lib.win32-3.6\skmultiflow\trees copying src\skmultiflow\trees\label_combination_hoeffding_tree.py -> build\lib.win32-3.6\skmultiflow\trees copying src\skmultiflow\trees\setup.py -> build\lib.win32-3.6\skmultiflow\trees copying src\skmultiflow\trees\stacked_single_target_hoeffding_tree_regressor.py -> build\lib.win32-3.6\skmultiflow \trees copying src\skmultiflow\trees_init_.py -> build\lib.win32-3.6\skmultiflow\trees creating build\lib.win32-3.6\skmultiflow\trees\attribute_observer copying src\skmultiflow\trees\attribute_observer\attribute_class_observer.py -> build\lib.win32-3.6\skmultiflow\tr ees\attribute_observer copying src\skmultiflow\trees\attribute_observer\attribute_class_observer_null.py -> build\lib.win32-3.6\skmultifl ow\trees\attribute_observer copying src\skmultiflow\trees\attribute_observer\nominal_attribute_class_observer.py -> build\lib.win32-3.6\skmult iflow\trees\attribute_observer copying src\skmultiflow\trees\attribute_observer\nominal_attribute_regression_observer.py -> build\lib.win32-3.6\s kmultiflow\trees\attribute_observer copying src\skmultiflow\trees\attribute_observer\numeric_attribute_class_observer_binary_tree.py -> build\lib.win3 2-3.6\skmultiflow\trees\attribute_observer copying src\skmultiflow\trees\attribute_observer\numeric_attribute_class_observer_gaussian.py -> build\lib.win32-3 .6\skmultiflow\trees\attribute_observer copying src\skmultiflow\trees\attribute_observer\numeric_attribute_regression_observer.py -> build\lib.win32-3.6\s kmultiflow\trees\attribute_observer copying src\skmultiflow\trees\attribute_observer_init_.py -> build\lib.win32-3.6\skmultiflow\trees\attribute_ob server creating build\lib.win32-3.6\skmultiflow\trees\attribute_test copying src\skmultiflow\trees\attribute_test\instance_conditional_test.py -> build\lib.win32-3.6\skmultiflow\trees \attribute_test copying src\skmultiflow\trees\attribute_test\nominal_attribute_binary_test.py -> build\lib.win32-3.6\skmultiflow\t rees\attribute_test copying src\skmultiflow\trees\attribute_test\nominal_attribute_multiway_test.py -> build\lib.win32-3.6\skmultiflow \trees\attribute_test copying src\skmultiflow\trees\attribute_test\numeric_attribute_binary_test.py -> build\lib.win32-3.6\skmultiflow\t rees\attribute_test copying src\skmultiflow\trees\attribute_test_init_.py -> build\lib.win32-3.6\skmultiflow\trees\attribute_test creating build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\active_learning_node.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\active_learning_node_adaptive_multi_target.py -> build\lib.win32-3.6\skmultifl ow\trees\nodes copying src\skmultiflow\trees\nodes\active_learning_node_for_regression.py -> build\lib.win32-3.6\skmultiflow\tree s\nodes copying src\skmultiflow\trees\nodes\active_learning_node_for_regression_multi_target.py -> build\lib.win32-3.6\skm ultiflow\trees\nodes copying src\skmultiflow\trees\nodes\active_learning_node_perceptron.py -> build\lib.win32-3.6\skmultiflow\trees\no des copying src\skmultiflow\trees\nodes\active_learning_node_perceptron_multi_target.py -> build\lib.win32-3.6\skmulti flow\trees\nodes copying src\skmultiflow\trees\nodes\ada_learning_node.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\ada_learning_node_for_regression.py -> build\lib.win32-3.6\skmultiflow\trees\n odes copying src\skmultiflow\trees\nodes\ada_node.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\ada_split_node.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\ada_split_node_for_regression.py -> build\lib.win32-3.6\skmultiflow\trees\node s copying src\skmultiflow\trees\nodes\anytime_active_learning_node.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\anytime_inactive_learning_node.py -> build\lib.win32-3.6\skmultiflow\trees\nod es copying src\skmultiflow\trees\nodes\anytime_learning_node_nb.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\anytime_learning_node_nb_adaptive.py -> build\lib.win32-3.6\skmultiflow\trees
    nodes copying src\skmultiflow\trees\nodes\anytime_split_node.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\found_node.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\inactive_learning_node.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\inactive_learning_node_adaptive_multi_target.py -> build\lib.win32-3.6\skmulti flow\trees\nodes copying src\skmultiflow\trees\nodes\inactive_learning_node_for_regression.py -> build\lib.win32-3.6\skmultiflow\tr ees\nodes copying src\skmultiflow\trees\nodes\inactive_learning_node_perceptron.py -> build\lib.win32-3.6\skmultiflow\trees
    nodes copying src\skmultiflow\trees\nodes\inactive_learning_node_perceptron_multi_target.py -> build\lib.win32-3.6\skmul tiflow\trees\nodes copying src\skmultiflow\trees\nodes\lc_active_learning_node.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\lc_inactive_learning_node.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\lc_learning_node_nb.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\lc_learning_node_nba.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\learning_node.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\learning_node_nb.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\learning_node_nb_adaptive.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\node.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\random_learning_node_classification.py -> build\lib.win32-3.6\skmultiflow\tree s\nodes copying src\skmultiflow\trees\nodes\random_learning_node_for_regression.py -> build\lib.win32-3.6\skmultiflow\tree s\nodes copying src\skmultiflow\trees\nodes\random_learning_node_nb.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\random_learning_node_nb_adaptive.py -> build\lib.win32-3.6\skmultiflow\trees\n odes copying src\skmultiflow\trees\nodes\random_learning_node_perceptron.py -> build\lib.win32-3.6\skmultiflow\trees\no des copying src\skmultiflow\trees\nodes\split_node.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\sst_active_learning_node.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\sst_active_learning_node_adaptive.py -> build\lib.win32-3.6\skmultiflow\trees
    nodes copying src\skmultiflow\trees\nodes\sst_inactive_learning_node.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\sst_inactive_learning_node_adaptive.py -> build\lib.win32-3.6\skmultiflow\tree s\nodes copying src\skmultiflow\trees\nodes_init_.py -> build\lib.win32-3.6\skmultiflow\trees\nodes creating build\lib.win32-3.6\skmultiflow\trees\split_criterion copying src\skmultiflow\trees\split_criterion\base_split_criterion.py -> build\lib.win32-3.6\skmultiflow\trees\spl it_criterion copying src\skmultiflow\trees\split_criterion\gini_split_criterion.py -> build\lib.win32-3.6\skmultiflow\trees\spl it_criterion copying src\skmultiflow\trees\split_criterion\hellinger_distance_criterion.py -> build\lib.win32-3.6\skmultiflow\t rees\split_criterion copying src\skmultiflow\trees\split_criterion\info_gain_split_criterion.py -> build\lib.win32-3.6\skmultiflow\tree s\split_criterion copying src\skmultiflow\trees\split_criterion\intra_cluster_variance_reduction_split_criterion.py -> build\lib.win 32-3.6\skmultiflow\trees\split_criterion copying src\skmultiflow\trees\split_criterion\variance_reduction_split_criterion.py -> build\lib.win32-3.6\skmulti flow\trees\split_criterion copying src\skmultiflow\trees\split_criterion_init_.py -> build\lib.win32-3.6\skmultiflow\trees\split_criterion creating build\lib.win32-3.6\skmultiflow\utils copying src\skmultiflow\utils\constants.py -> build\lib.win32-3.6\skmultiflow\utils copying src\skmultiflow\utils\data_structures.py -> build\lib.win32-3.6\skmultiflow\utils copying src\skmultiflow\utils\file_scripts.py -> build\lib.win32-3.6\skmultiflow\utils copying src\skmultiflow\utils\statistics.py -> build\lib.win32-3.6\skmultiflow\utils copying src\skmultiflow\utils\utils.py -> build\lib.win32-3.6\skmultiflow\utils copying src\skmultiflow\utils\validation.py -> build\lib.win32-3.6\skmultiflow\utils copying src\skmultiflow\utils_pprint.py -> build\lib.win32-3.6\skmultiflow\utils copying src\skmultiflow\utils_show_versions.py -> build\lib.win32-3.6\skmultiflow\utils copying src\skmultiflow\utils_init_.py -> build\lib.win32-3.6\skmultiflow\utils creating build\lib.win32-3.6\skmultiflow\visualization copying src\skmultiflow\visualization\base_listener.py -> build\lib.win32-3.6\skmultiflow\visualization copying src\skmultiflow\visualization\evaluation_visualizer.py -> build\lib.win32-3.6\skmultiflow\visualization copying src\skmultiflow\visualization_init_.py -> build\lib.win32-3.6\skmultiflow\visualization creating build\lib.win32-3.6\skmultiflow\lazy copying src\skmultiflow\lazy\base_neighbors.py -> build\lib.win32-3.6\skmultiflow\lazy copying src\skmultiflow\lazy\knn_adwin.py -> build\lib.win32-3.6\skmultiflow\lazy copying src\skmultiflow\lazy\knn_classifier.py -> build\lib.win32-3.6\skmultiflow\lazy copying src\skmultiflow\lazy\knn_regressor.py -> build\lib.win32-3.6\skmultiflow\lazy copying src\skmultiflow\lazy\sam_knn.py -> build\lib.win32-3.6\skmultiflow\lazy copying src\skmultiflow\lazy\setup.py -> build\lib.win32-3.6\skmultiflow\lazy copying src\skmultiflow\lazy_init_.py -> build\lib.win32-3.6\skmultiflow\lazy creating build\lib.win32-3.6\skmultiflow\metrics copying src\skmultiflow\metrics\measure_collection.py -> build\lib.win32-3.6\skmultiflow\metrics copying src\skmultiflow\metrics\setup.py -> build\lib.win32-3.6\skmultiflow\metrics copying src\skmultiflow\metrics_init_.py -> build\lib.win32-3.6\skmultiflow\metrics running build_ext No module named 'numpy.distutils._msvccompiler' in numpy.distutils; trying from distutils customize MSVCCompiler customize MSVCCompiler using build_ext No module named 'numpy.distutils._msvccompiler' in numpy.distutils; trying from distutils customize MSVCCompiler Missing compiler_cxx fix for MSVCCompiler customize MSVCCompiler using build_ext building 'skmultiflow.lazy.libNearestNeighbor' extension compiling C sources creating build\temp.win32-3.6\Release\src creating build\temp.win32-3.6\Release\src\skmultiflow creating build\temp.win32-3.6\Release\src\skmultiflow\lazy creating build\temp.win32-3.6\Release\src\skmultiflow\lazy\src creating build\temp.win32-3.6\Release\src\skmultiflow\lazy\src\libNearestNeighbors C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\bin\HostX86\x86\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -Ic:\users\pichau\pycharmprojects\tccfwork\venv\lib\site-packages\numpy\core\includ e -Ic:\users\pichau\pycharmprojects\tccfwork\venv\lib\site-packages\numpy\core\include -Ic:\users\pichau\pycharmproj ects\tccfwork\venv\include -IC:\Users\Pichau\AppData\Local\Programs\Python\Python36-32\include -IC:\Users\Pichau\App Data\Local\Programs\Python\Python36-32\include -IC:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\To ols\MSVC\14.27.29110\include /EHsc /Tpsrc\skmultiflow\lazy\src\libNearestNeighbors\nearestNeighbor.cpp /Fobuild\temp .win32-3.6\Release\src\skmultiflow\lazy\src\libNearestNeighbors\nearestNeighbor.obj /Zm1000 nearestNeighbor.cpp C:\Users\Pichau\AppData\Local\Programs\Python\Python36-32\include\pyconfig.h(59): fatal error C1083: NÆo ‚ poss¡ve l abrir arquivo incluir: 'io.h': No such file or directory error: Command "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\bin\HostX8 6\x86\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -Ic:\users\pichau\pycharmprojects\tccfwork\venv\lib\site-packages\n umpy\core\include -Ic:\users\pichau\pycharmprojects\tccfwork\venv\lib\site-packages\numpy\core\include -Ic:\users\pi chau\pycharmprojects\tccfwork\venv\include -IC:\Users\Pichau\AppData\Local\Programs\Python\Python36-32\include -IC:
    Users\Pichau\AppData\Local\Programs\Python\Python36-32\include -IC:\Program Files (x86)\Microsoft Visual Studio\2019 \Community\VC\Tools\MSVC\14.27.29110\include /EHsc /Tpsrc\skmultiflow\lazy\src\libNearestNeighbors\nearestNeighbor.c pp /Fobuild\temp.win32-3.6\Release\src\skmultiflow\lazy\src\libNearestNeighbors\nearestNeighbor.obj /Zm1000" failed with exit status 2

    ERROR: Failed building wheel for scikit-multiflow Running setup.py clean for scikit-multiflow Failed to build scikit-multiflow Installing collected packages: scikit-multiflow Running setup.py install for scikit-multiflow ... error ERROR: Command errored out with exit status 1: command: 'c:\users\pichau\pycharmprojects\tccfwork\venv\scripts\python.exe' -u -c 'import io, os, sys, setuptoo ls, tokenize; sys.argv[0] = '"'"'C:\Users\Pichau\AppData\Local\Temp\pip-install-wxbtl444\scikit-multiflow_003 d6117f70b419bb0cf4433d5182b7c\setup.py'"'"'; file='"'"'C:\Users\Pichau\AppData\Local\Temp\pip-install-wxb tl444\scikit-multiflow_003d6117f70b419bb0cf4433d5182b7c\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)( file) if os.path.exists(file) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.rea d().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' install --record 'C:\Users\Pichau\AppData\Local\Temp\pip-record-tsuf4uvp\install-record.txt' --single-version-externally-managed --co mpile --install-headers 'c:\users\pichau\pycharmprojects\tccfwork\venv\include\site\python3.6\scikit-multiflow' cwd: C:\Users\Pichau\AppData\Local\Temp\pip-install-wxbtl444\scikit-multiflow_003d6117f70b419bb0cf4433d5182 b7c
    Complete output (247 lines): running install running build running config_cc unifing config_cc, config, build_clib, build_ext, build commands --compiler options running config_fc unifing config_fc, config, build_clib, build_ext, build commands --fcompiler options running build_src build_src building extension "skmultiflow.lazy.libNearestNeighbor" sources building extension "skmultiflow.metrics.confusion_matrix" sources building extension "skmultiflow.metrics.classification_performance_evaluator" sources build_src: building npy-pkg config files running build_py creating build creating build\lib.win32-3.6 creating build\lib.win32-3.6\skmultiflow copying src\skmultiflow\setup.py -> build\lib.win32-3.6\skmultiflow copying src\skmultiflow_version.py -> build\lib.win32-3.6\skmultiflow copying src\skmultiflow_init.py -> build\lib.win32-3.6\skmultiflow creating build\lib.win32-3.6\skmultiflow\anomaly_detection copying src\skmultiflow\anomaly_detection\half_space_trees.py -> build\lib.win32-3.6\skmultiflow\anomaly_detecti on copying src\skmultiflow\anomaly_detection_init.py -> build\lib.win32-3.6\skmultiflow\anomaly_detection creating build\lib.win32-3.6\skmultiflow\bayes copying src\skmultiflow\bayes\naive_bayes.py -> build\lib.win32-3.6\skmultiflow\bayes copying src\skmultiflow\bayes\utils.py -> build\lib.win32-3.6\skmultiflow\bayes copying src\skmultiflow\bayes_init_.py -> build\lib.win32-3.6\skmultiflow\bayes creating build\lib.win32-3.6\skmultiflow\core copying src\skmultiflow\core\base.py -> build\lib.win32-3.6\skmultiflow\core copying src\skmultiflow\core\instance_header.py -> build\lib.win32-3.6\skmultiflow\core copying src\skmultiflow\core\pipeline.py -> build\lib.win32-3.6\skmultiflow\core copying src\skmultiflow\core_init_.py -> build\lib.win32-3.6\skmultiflow\core creating build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\agrawal_generator.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\anomaly_sine_generator.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\base_stream.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\concept_drift_stream.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\data_stream.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\file_stream.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\hyper_plane_generator.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\led_generator.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\led_generator_drift.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\mixed_generator.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\multilabel_generator.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\pseudo_random_processes.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\random_rbf_generator.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\random_rbf_generator_drift.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\random_tree_generator.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\regression_generator.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\sea_generator.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\sine_generator.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\stagger_generator.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\synth.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\temporal_data_stream.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\time_manager.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\unsupervised_stream.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data\waveform_generator.py -> build\lib.win32-3.6\skmultiflow\data copying src\skmultiflow\data_init_.py -> build\lib.win32-3.6\skmultiflow\data creating build\lib.win32-3.6\skmultiflow\drift_detection copying src\skmultiflow\drift_detection\adwin.py -> build\lib.win32-3.6\skmultiflow\drift_detection copying src\skmultiflow\drift_detection\base_drift_detector.py -> build\lib.win32-3.6\skmultiflow\drift_detectio n copying src\skmultiflow\drift_detection\ddm.py -> build\lib.win32-3.6\skmultiflow\drift_detection copying src\skmultiflow\drift_detection\eddm.py -> build\lib.win32-3.6\skmultiflow\drift_detection copying src\skmultiflow\drift_detection\hddm_a.py -> build\lib.win32-3.6\skmultiflow\drift_detection copying src\skmultiflow\drift_detection\hddm_w.py -> build\lib.win32-3.6\skmultiflow\drift_detection copying src\skmultiflow\drift_detection\kswin.py -> build\lib.win32-3.6\skmultiflow\drift_detection copying src\skmultiflow\drift_detection\page_hinkley.py -> build\lib.win32-3.6\skmultiflow\drift_detection copying src\skmultiflow\drift_detection_init_.py -> build\lib.win32-3.6\skmultiflow\drift_detection creating build\lib.win32-3.6\skmultiflow\evaluation copying src\skmultiflow\evaluation\base_evaluator.py -> build\lib.win32-3.6\skmultiflow\evaluation copying src\skmultiflow\evaluation\evaluate_holdout.py -> build\lib.win32-3.6\skmultiflow\evaluation copying src\skmultiflow\evaluation\evaluate_prequential.py -> build\lib.win32-3.6\skmultiflow\evaluation copying src\skmultiflow\evaluation\evaluate_prequential_delayed.py -> build\lib.win32-3.6\skmultiflow\evaluation copying src\skmultiflow\evaluation\evaluate_stream_gen_speed.py -> build\lib.win32-3.6\skmultiflow\evaluation copying src\skmultiflow\evaluation\evaluation_data_buffer.py -> build\lib.win32-3.6\skmultiflow\evaluation copying src\skmultiflow\evaluation_init_.py -> build\lib.win32-3.6\skmultiflow\evaluation creating build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\accuracy_weighted_ensemble.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\adaptive_random_forests.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\adaptive_random_forest_regressor.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\additive_expert_ensemble.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\batch_incremental.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\classifier_chains.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\dynamic_weighted_majority.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\learn_nse.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\learn_pp.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\leverage_bagging.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\multi_output_learner.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\online_adac2.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\online_boosting.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\online_csb2.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\online_rus_boost.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\online_smote_bagging.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\online_under_over_bagging.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\oza_bagging.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\oza_bagging_adwin.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\regressor_chains.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta\streaming_random_patches.py -> build\lib.win32-3.6\skmultiflow\meta copying src\skmultiflow\meta_init_.py -> build\lib.win32-3.6\skmultiflow\meta creating build\lib.win32-3.6\skmultiflow\neural_networks copying src\skmultiflow\neural_networks\perceptron.py -> build\lib.win32-3.6\skmultiflow\neural_networks copying src\skmultiflow\neural_networks_init_.py -> build\lib.win32-3.6\skmultiflow\neural_networks creating build\lib.win32-3.6\skmultiflow\prototype copying src\skmultiflow\prototype\robust_soft_learning_vector_quantization.py -> build\lib.win32-3.6\skmultiflow \prototype copying src\skmultiflow\prototype_init_.py -> build\lib.win32-3.6\skmultiflow\prototype creating build\lib.win32-3.6\skmultiflow\rules copying src\skmultiflow\rules\attribute_expand_suggestion.py -> build\lib.win32-3.6\skmultiflow\rules copying src\skmultiflow\rules\base_predicate.py -> build\lib.win32-3.6\skmultiflow\rules copying src\skmultiflow\rules\base_rule.py -> build\lib.win32-3.6\skmultiflow\rules copying src\skmultiflow\rules\foil_gain_rule_criterion.py -> build\lib.win32-3.6\skmultiflow\rules copying src\skmultiflow\rules\hellinger_distance_criterion.py -> build\lib.win32-3.6\skmultiflow\rules copying src\skmultiflow\rules\info_gain_rule_criterion.py -> build\lib.win32-3.6\skmultiflow\rules copying src\skmultiflow\rules\nominal_attribute_class_observer.py -> build\lib.win32-3.6\skmultiflow\rules copying src\skmultiflow\rules\numeric_attribute_class_observer.py -> build\lib.win32-3.6\skmultiflow\rules copying src\skmultiflow\rules\very_fast_decision_rules.py -> build\lib.win32-3.6\skmultiflow\rules copying src\skmultiflow\rules_init_.py -> build\lib.win32-3.6\skmultiflow\rules creating build\lib.win32-3.6\skmultiflow\transform copying src\skmultiflow\transform\base_transform.py -> build\lib.win32-3.6\skmultiflow\transform copying src\skmultiflow\transform\missing_values_cleaner.py -> build\lib.win32-3.6\skmultiflow\transform copying src\skmultiflow\transform\one_hot_to_categorical.py -> build\lib.win32-3.6\skmultiflow\transform copying src\skmultiflow\transform\windowed_minmax_scaler.py -> build\lib.win32-3.6\skmultiflow\transform copying src\skmultiflow\transform\windowed_standard_scaler.py -> build\lib.win32-3.6\skmultiflow\transform copying src\skmultiflow\transform_init_.py -> build\lib.win32-3.6\skmultiflow\transform creating build\lib.win32-3.6\skmultiflow\trees copying src\skmultiflow\trees\arf_hoeffding_tree.py -> build\lib.win32-3.6\skmultiflow\trees copying src\skmultiflow\trees\arf_hoeffding_tree_regressor.py -> build\lib.win32-3.6\skmultiflow\trees copying src\skmultiflow\trees\attribute_split_suggestion.py -> build\lib.win32-3.6\skmultiflow\trees copying src\skmultiflow\trees\extremely_fast_decision_tree.py -> build\lib.win32-3.6\skmultiflow\trees copying src\skmultiflow\trees\gaussian_estimator.py -> build\lib.win32-3.6\skmultiflow\trees copying src\skmultiflow\trees\hoeffding_adaptive_tree.py -> build\lib.win32-3.6\skmultiflow\trees copying src\skmultiflow\trees\hoeffding_adaptive_tree_regressor.py -> build\lib.win32-3.6\skmultiflow\trees copying src\skmultiflow\trees\hoeffding_tree.py -> build\lib.win32-3.6\skmultiflow\trees copying src\skmultiflow\trees\hoeffding_tree_regressor.py -> build\lib.win32-3.6\skmultiflow\trees copying src\skmultiflow\trees\isoup_tree.py -> build\lib.win32-3.6\skmultiflow\trees copying src\skmultiflow\trees\label_combination_hoeffding_tree.py -> build\lib.win32-3.6\skmultiflow\trees copying src\skmultiflow\trees\setup.py -> build\lib.win32-3.6\skmultiflow\trees copying src\skmultiflow\trees\stacked_single_target_hoeffding_tree_regressor.py -> build\lib.win32-3.6\skmultifl ow\trees copying src\skmultiflow\trees_init_.py -> build\lib.win32-3.6\skmultiflow\trees creating build\lib.win32-3.6\skmultiflow\trees\attribute_observer copying src\skmultiflow\trees\attribute_observer\attribute_class_observer.py -> build\lib.win32-3.6\skmultiflow
    trees\attribute_observer copying src\skmultiflow\trees\attribute_observer\attribute_class_observer_null.py -> build\lib.win32-3.6\skmulti flow\trees\attribute_observer copying src\skmultiflow\trees\attribute_observer\nominal_attribute_class_observer.py -> build\lib.win32-3.6\skmu ltiflow\trees\attribute_observer copying src\skmultiflow\trees\attribute_observer\nominal_attribute_regression_observer.py -> build\lib.win32-3.6 \skmultiflow\trees\attribute_observer copying src\skmultiflow\trees\attribute_observer\numeric_attribute_class_observer_binary_tree.py -> build\lib.wi n32-3.6\skmultiflow\trees\attribute_observer copying src\skmultiflow\trees\attribute_observer\numeric_attribute_class_observer_gaussian.py -> build\lib.win32 -3.6\skmultiflow\trees\attribute_observer copying src\skmultiflow\trees\attribute_observer\numeric_attribute_regression_observer.py -> build\lib.win32-3.6 \skmultiflow\trees\attribute_observer copying src\skmultiflow\trees\attribute_observer_init_.py -> build\lib.win32-3.6\skmultiflow\trees\attribute_ observer creating build\lib.win32-3.6\skmultiflow\trees\attribute_test copying src\skmultiflow\trees\attribute_test\instance_conditional_test.py -> build\lib.win32-3.6\skmultiflow\tre es\attribute_test copying src\skmultiflow\trees\attribute_test\nominal_attribute_binary_test.py -> build\lib.win32-3.6\skmultiflow \trees\attribute_test copying src\skmultiflow\trees\attribute_test\nominal_attribute_multiway_test.py -> build\lib.win32-3.6\skmultifl ow\trees\attribute_test copying src\skmultiflow\trees\attribute_test\numeric_attribute_binary_test.py -> build\lib.win32-3.6\skmultiflow \trees\attribute_test copying src\skmultiflow\trees\attribute_test_init_.py -> build\lib.win32-3.6\skmultiflow\trees\attribute_test creating build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\active_learning_node.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\active_learning_node_adaptive_multi_target.py -> build\lib.win32-3.6\skmulti flow\trees\nodes copying src\skmultiflow\trees\nodes\active_learning_node_for_regression.py -> build\lib.win32-3.6\skmultiflow\tr ees\nodes copying src\skmultiflow\trees\nodes\active_learning_node_for_regression_multi_target.py -> build\lib.win32-3.6\s kmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\active_learning_node_perceptron.py -> build\lib.win32-3.6\skmultiflow\trees
    nodes copying src\skmultiflow\trees\nodes\active_learning_node_perceptron_multi_target.py -> build\lib.win32-3.6\skmul tiflow\trees\nodes copying src\skmultiflow\trees\nodes\ada_learning_node.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\ada_learning_node_for_regression.py -> build\lib.win32-3.6\skmultiflow\trees \nodes copying src\skmultiflow\trees\nodes\ada_node.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\ada_split_node.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\ada_split_node_for_regression.py -> build\lib.win32-3.6\skmultiflow\trees\no des copying src\skmultiflow\trees\nodes\anytime_active_learning_node.py -> build\lib.win32-3.6\skmultiflow\trees\nod es copying src\skmultiflow\trees\nodes\anytime_inactive_learning_node.py -> build\lib.win32-3.6\skmultiflow\trees\n odes copying src\skmultiflow\trees\nodes\anytime_learning_node_nb.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\anytime_learning_node_nb_adaptive.py -> build\lib.win32-3.6\skmultiflow\tree s\nodes copying src\skmultiflow\trees\nodes\anytime_split_node.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\found_node.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\inactive_learning_node.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\inactive_learning_node_adaptive_multi_target.py -> build\lib.win32-3.6\skmul tiflow\trees\nodes copying src\skmultiflow\trees\nodes\inactive_learning_node_for_regression.py -> build\lib.win32-3.6\skmultiflow
    trees\nodes copying src\skmultiflow\trees\nodes\inactive_learning_node_perceptron.py -> build\lib.win32-3.6\skmultiflow\tree s\nodes copying src\skmultiflow\trees\nodes\inactive_learning_node_perceptron_multi_target.py -> build\lib.win32-3.6\skm ultiflow\trees\nodes copying src\skmultiflow\trees\nodes\lc_active_learning_node.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\lc_inactive_learning_node.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\lc_learning_node_nb.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\lc_learning_node_nba.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\learning_node.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\learning_node_nb.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\learning_node_nb_adaptive.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\node.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\random_learning_node_classification.py -> build\lib.win32-3.6\skmultiflow\tr ees\nodes copying src\skmultiflow\trees\nodes\random_learning_node_for_regression.py -> build\lib.win32-3.6\skmultiflow\tr ees\nodes copying src\skmultiflow\trees\nodes\random_learning_node_nb.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\random_learning_node_nb_adaptive.py -> build\lib.win32-3.6\skmultiflow\trees \nodes copying src\skmultiflow\trees\nodes\random_learning_node_perceptron.py -> build\lib.win32-3.6\skmultiflow\trees
    nodes copying src\skmultiflow\trees\nodes\split_node.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\sst_active_learning_node.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\sst_active_learning_node_adaptive.py -> build\lib.win32-3.6\skmultiflow\tree s\nodes copying src\skmultiflow\trees\nodes\sst_inactive_learning_node.py -> build\lib.win32-3.6\skmultiflow\trees\nodes copying src\skmultiflow\trees\nodes\sst_inactive_learning_node_adaptive.py -> build\lib.win32-3.6\skmultiflow\tr ees\nodes copying src\skmultiflow\trees\nodes_init_.py -> build\lib.win32-3.6\skmultiflow\trees\nodes creating build\lib.win32-3.6\skmultiflow\trees\split_criterion copying src\skmultiflow\trees\split_criterion\base_split_criterion.py -> build\lib.win32-3.6\skmultiflow\trees\s plit_criterion copying src\skmultiflow\trees\split_criterion\gini_split_criterion.py -> build\lib.win32-3.6\skmultiflow\trees\s plit_criterion copying src\skmultiflow\trees\split_criterion\hellinger_distance_criterion.py -> build\lib.win32-3.6\skmultiflow \trees\split_criterion copying src\skmultiflow\trees\split_criterion\info_gain_split_criterion.py -> build\lib.win32-3.6\skmultiflow\tr ees\split_criterion copying src\skmultiflow\trees\split_criterion\intra_cluster_variance_reduction_split_criterion.py -> build\lib.w in32-3.6\skmultiflow\trees\split_criterion copying src\skmultiflow\trees\split_criterion\variance_reduction_split_criterion.py -> build\lib.win32-3.6\skmul tiflow\trees\split_criterion copying src\skmultiflow\trees\split_criterion_init_.py -> build\lib.win32-3.6\skmultiflow\trees\split_criteri on creating build\lib.win32-3.6\skmultiflow\utils copying src\skmultiflow\utils\constants.py -> build\lib.win32-3.6\skmultiflow\utils copying src\skmultiflow\utils\data_structures.py -> build\lib.win32-3.6\skmultiflow\utils copying src\skmultiflow\utils\file_scripts.py -> build\lib.win32-3.6\skmultiflow\utils copying src\skmultiflow\utils\statistics.py -> build\lib.win32-3.6\skmultiflow\utils copying src\skmultiflow\utils\utils.py -> build\lib.win32-3.6\skmultiflow\utils copying src\skmultiflow\utils\validation.py -> build\lib.win32-3.6\skmultiflow\utils copying src\skmultiflow\utils_pprint.py -> build\lib.win32-3.6\skmultiflow\utils copying src\skmultiflow\utils_show_versions.py -> build\lib.win32-3.6\skmultiflow\utils copying src\skmultiflow\utils_init_.py -> build\lib.win32-3.6\skmultiflow\utils creating build\lib.win32-3.6\skmultiflow\visualization copying src\skmultiflow\visualization\base_listener.py -> build\lib.win32-3.6\skmultiflow\visualization copying src\skmultiflow\visualization\evaluation_visualizer.py -> build\lib.win32-3.6\skmultiflow\visualization copying src\skmultiflow\visualization_init_.py -> build\lib.win32-3.6\skmultiflow\visualization creating build\lib.win32-3.6\skmultiflow\lazy copying src\skmultiflow\lazy\base_neighbors.py -> build\lib.win32-3.6\skmultiflow\lazy copying src\skmultiflow\lazy\knn_adwin.py -> build\lib.win32-3.6\skmultiflow\lazy copying src\skmultiflow\lazy\knn_classifier.py -> build\lib.win32-3.6\skmultiflow\lazy copying src\skmultiflow\lazy\knn_regressor.py -> build\lib.win32-3.6\skmultiflow\lazy copying src\skmultiflow\lazy\sam_knn.py -> build\lib.win32-3.6\skmultiflow\lazy copying src\skmultiflow\lazy\setup.py -> build\lib.win32-3.6\skmultiflow\lazy copying src\skmultiflow\lazy_init_.py -> build\lib.win32-3.6\skmultiflow\lazy creating build\lib.win32-3.6\skmultiflow\metrics copying src\skmultiflow\metrics\measure_collection.py -> build\lib.win32-3.6\skmultiflow\metrics copying src\skmultiflow\metrics\setup.py -> build\lib.win32-3.6\skmultiflow\metrics copying src\skmultiflow\metrics_init_.py -> build\lib.win32-3.6\skmultiflow\metrics running build_ext No module named 'numpy.distutils._msvccompiler' in numpy.distutils; trying from distutils customize MSVCCompiler customize MSVCCompiler using build_ext No module named 'numpy.distutils._msvccompiler' in numpy.distutils; trying from distutils customize MSVCCompiler Missing compiler_cxx fix for MSVCCompiler customize MSVCCompiler using build_ext building 'skmultiflow.lazy.libNearestNeighbor' extension compiling C sources creating build\temp.win32-3.6\Release\src creating build\temp.win32-3.6\Release\src\skmultiflow creating build\temp.win32-3.6\Release\src\skmultiflow\lazy creating build\temp.win32-3.6\Release\src\skmultiflow\lazy\src creating build\temp.win32-3.6\Release\src\skmultiflow\lazy\src\libNearestNeighbors C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\bin\HostX86\x86\cl.exe / c /nologo /Ox /W3 /GL /DNDEBUG /MD -Ic:\users\pichau\pycharmprojects\tccfwork\venv\lib\site-packages\numpy\core\incl ude -Ic:\users\pichau\pycharmprojects\tccfwork\venv\lib\site-packages\numpy\core\include -Ic:\users\pichau\pycharmpr ojects\tccfwork\venv\include -IC:\Users\Pichau\AppData\Local\Programs\Python\Python36-32\include -IC:\Users\Pichau\A ppData\Local\Programs\Python\Python36-32\include -IC:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC
    Tools\MSVC\14.27.29110\include /EHsc /Tpsrc\skmultiflow\lazy\src\libNearestNeighbors\nearestNeighbor.cpp /Fobuild\te mp.win32-3.6\Release\src\skmultiflow\lazy\src\libNearestNeighbors\nearestNeighbor.obj /Zm1000 nearestNeighbor.cpp C:\Users\Pichau\AppData\Local\Programs\Python\Python36-32\include\pyconfig.h(59): fatal error C1083: NÆo ‚ poss¡ vel abrir arquivo incluir: 'io.h': No such file or directory error: Command "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\bin\Host X86\x86\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -Ic:\users\pichau\pycharmprojects\tccfwork\venv\lib\site-packages \numpy\core\include -Ic:\users\pichau\pycharmprojects\tccfwork\venv\lib\site-packages\numpy\core\include -Ic:\users
    pichau\pycharmprojects\tccfwork\venv\include -IC:\Users\Pichau\AppData\Local\Programs\Python\Python36-32\include -IC :\Users\Pichau\AppData\Local\Programs\Python\Python36-32\include -IC:\Program Files (x86)\Microsoft Visual Studio\20 19\Community\VC\Tools\MSVC\14.27.29110\include /EHsc /Tpsrc\skmultiflow\lazy\src\libNearestNeighbors\nearestNeighbor .cpp /Fobuild\temp.win32-3.6\Release\src\skmultiflow\lazy\src\libNearestNeighbors\nearestNeighbor.obj /Zm1000" faile d with exit status 2 ---------------------------------------- ERROR: Command errored out with exit status 1: 'c:\users\pichau\pycharmprojects\tccfwork\venv\scripts\python.exe' -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\Users\Pichau\AppData\Local\Temp\pip-insta ll-wxbtl444\scikit-multiflow_003d6117f70b419bb0cf4433d5182b7c\setup.py'"'"'; file='"'"'C:\Users\Pichau\AppD ata\Local\Temp\pip-install-wxbtl444\scikit-multiflow_003d6117f70b419bb0cf4433d5182b7c\setup.py'"'"';f = getattr (tokenize, '"'"'open'"'"', open)(file) if os.path.exists(file) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '" '"'exec'"'"'))' install --record 'C:\Users\Pichau\AppData\Local\Temp\pip-record-tsuf4uvp\install-record.txt' --singl e-version-externally-managed --compile --install-headers 'c:\users\pichau\pycharmprojects\tccfwork\venv\include\site \python3.6\scikit-multiflow' Check the logs for full command output.

    opened by lsgotti 3
  • [BUG] The change points detected are different from the points reported from MOA, using the same example

    [BUG] The change points detected are different from the points reported from MOA, using the same example

    Describe the bug I have a sample stream containing durations (in seconds), and I have analyzed the change points using the ADWINChangeDetector class from MOA. The reported change points are 352, 480. When I apply the same analysis using ADWIN class from scikit-multiflow I have got different points: 416, 448, 480.

    To Reproduce I have simulated the problem by comparing the results obtained from MOA and the python library. I have attached the sample file I have applied (the same data is inputted from both) and a sample code.

    ADWINPython_Simulate.zip MOA_Simulate.zip

    Expected behavior I expected the same chance points (352, 480).

    Screenshots If applicable, add screenshots to help explain your problem.

    Additional context I have already identified the difference in the code from scikit-multiflow and I am creating a pull request for it. There are two problems:

    1. The method detected_change is not iterating over the complete bucket because of line 317: for k in range(cursor.bucket_size_row - 1):

    It should work as the Java implementation, to fix: for k in range(cursor.bucket_size_row):

    1. After detecting a change point, the detector should be reset. For fixing this I have added the following lines at the beginning of the add_element method: if self.in_concept_change: self.reset()
    opened by denisesato 1
Releases(0.5.3)
BBB streaming without Xorg and Pulseaudio and Chromium and other nonsense (heavily WIP)

BBB Streamer NG? Makes a conference like this... ...streamable like this! I also recorded a small video showing the basic features: https://www.youtub

Lukas Schauer 60 Oct 21, 2022
PyTorch implementation of the Deep SLDA method from our CVPRW-2020 paper "Lifelong Machine Learning with Deep Streaming Linear Discriminant Analysis"

Lifelong Machine Learning with Deep Streaming Linear Discriminant Analysis This is a PyTorch implementation of the Deep Streaming Linear Discriminant

Tyler Hayes 41 Dec 25, 2022
A fast, scalable, high performance Gradient Boosting on Decision Trees library, used for ranking, classification, regression and other machine learning tasks for Python, R, Java, C++. Supports computation on CPU and GPU.

Website | Documentation | Tutorials | Installation | Release Notes CatBoost is a machine learning method based on gradient boosting over decision tree

CatBoost 6.9k Jan 4, 2023
A fast, scalable, high performance Gradient Boosting on Decision Trees library, used for ranking, classification, regression and other machine learning tasks for Python, R, Java, C++. Supports computation on CPU and GPU.

Website | Documentation | Tutorials | Installation | Release Notes CatBoost is a machine learning method based on gradient boosting over decision tree

CatBoost 5.7k Feb 12, 2021
Source code and data from the RecSys 2020 article "Carousel Personalization in Music Streaming Apps with Contextual Bandits" by W. Bendada, G. Salha and T. Bontempelli

Carousel Personalization in Music Streaming Apps with Contextual Bandits - RecSys 2020 This repository provides Python code and data to reproduce expe

Deezer 48 Jan 2, 2023
Streaming over lightweight data transformations

Description Data augmentation libarary for Deep Learning, which supports images, segmentation masks, labels and keypoints. Furthermore, SOLT is fast a

Research Unit of Medical Imaging, Physics and Technology 256 Jan 8, 2023
Scikit-event-correlation - Event Correlation and Forecasting over High Dimensional Streaming Sensor Data algorithms

scikit-event-correlation Event Correlation and Changing Detection Algorithm Theo

Intellia ICT 5 Oct 30, 2022
A fast, distributed, high performance gradient boosting (GBT, GBDT, GBRT, GBM or MART) framework based on decision tree algorithms, used for ranking, classification and many other machine learning tasks.

Light Gradient Boosting Machine LightGBM is a gradient boosting framework that uses tree based learning algorithms. It is designed to be distributed a

Microsoft 14.5k Jan 8, 2023
Machine Learning From Scratch. Bare bones NumPy implementations of machine learning models and algorithms with a focus on accessibility. Aims to cover everything from linear regression to deep learning.

Machine Learning From Scratch About Python implementations of some of the fundamental Machine Learning models and algorithms from scratch. The purpose

Erik Linder-Norén 21.8k Jan 9, 2023
Vowpal Wabbit is a machine learning system which pushes the frontier of machine learning with techniques such as online, hashing, allreduce, reductions, learning2search, active, and interactive learning.

This is the Vowpal Wabbit fast online learning code. Why Vowpal Wabbit? Vowpal Wabbit is a machine learning system which pushes the frontier of machin

Vowpal Wabbit 8.1k Jan 6, 2023
A Python Automated Machine Learning tool that optimizes machine learning pipelines using genetic programming.

Master status: Development status: Package information: TPOT stands for Tree-based Pipeline Optimization Tool. Consider TPOT your Data Science Assista

Epistasis Lab at UPenn 8.9k Dec 30, 2022
Securetar - A streaming wrapper around python tarfile and allow secure handling files and support encryption

Secure Tar Secure Tarfile library It's a streaming wrapper around python tarfile

Pascal Vizeli 2 Dec 9, 2022
Scripts of Machine Learning Algorithms from Scratch. Implementations of machine learning models and algorithms using nothing but NumPy with a focus on accessibility. Aims to cover everything from basic to advance.

Algo-ScriptML Python implementations of some of the fundamental Machine Learning models and algorithms from scratch. The goal of this project is not t

Algo Phantoms 81 Nov 26, 2022
This is a Machine Learning Based Hand Detector Project, It Uses Machine Learning Models and Modules Like Mediapipe, Developed By Google!

Machine Learning Hand Detector This is a Machine Learning Based Hand Detector Project, It Uses Machine Learning Models and Modules Like Mediapipe, Dev

Popstar Idhant 3 Feb 25, 2022
An implementation of the 1. Parallel, 2. Streaming, 3. Randomized SVD using MPI4Py

PYPARSVD This implementation allows for a singular value decomposition which is: Distributed using MPI4Py Streaming - data can be shown in batches to

Romit Maulik 44 Dec 31, 2022
Code for Towards Streaming Perception (ECCV 2020) :car:

sAP — Code for Towards Streaming Perception ECCV Best Paper Honorable Mention Award Feb 2021: Announcing the Streaming Perception Challenge (CVPR 2021

Martin Li 85 Dec 22, 2022
Music library streaming app written in Flask & VueJS

djtaytay This is a little toy app made to explore Vue, brush up on my Python, and make a remote music collection accessable through a web interface. I

Ryan Tasson 6 May 27, 2022
Real-time Object Detection for Streaming Perception, CVPR 2022

StreamYOLO Real-time Object Detection for Streaming Perception Jinrong Yang, Songtao Liu, Zeming Li, Xiaoping Li, Sun Jian Real-time Object Detection

Jinrong Yang 237 Dec 27, 2022