Comments (9)
Sorry, this is a documentation problem. The labels should be in the range [0, k), where k is the number of classes. In your sample code, we should have
val exampleLabels = Array(0, 1)
We could change Array to Map. However, there is a performance issue for large number of points. Some people tried to plot millions data points. Map will make the UI unusable.
from smile.
Oh maybe I explained it wrongly:
My suggestion was to keep the array for the labels the same, but to change the implementation in the constructor, such that next to the array you get a global lookup table which holds the unique values and their Colors / legends. I'll work it out, such that you can see exactly what I mean, because explaining it is rather difficult.
Ps. It should not affect the performance, as the extra computation is only n where n is the amount of labels. At least, in the way I see the adjustment.
from smile.
The performance is not in the constructor but in plot. For each data point, we may need change color or legend, now it is done by a Map lookup instead of array index. In terms of complexity, it is still O(n) for HashMap. But the constant factor of n is much bigger now. In your experiments, please try millions data points to make sure if it is still ok. Maybe I am wrong. Thanks!
from smile.
I will test with a lot of datapoints. This is the fix I'm suggesting. Since the lookup in the hashmap should be O(1) it should not affect the plot method in performance.
In a second commit I merged the two for loops as I missed the second one in the first commit.
I'll let you know how the test goes.
from smile.
For 10 million datapoints the time to plot was equal (+/- 1 second on 1.04 minutes plotting time) for both methods.
from smile.
Cool. BTW, we don't need to check if id is negative now. Can you rename valueLookupTable to classLookupTable? Thanks!
I had a commit updating the comment. Can you please update the comment again? The API may be confusing now. The user may not have clear idea of what is the color/legend of class 100.
from smile.
I removed the negative check and renamed the table. However I cannot find the commit regarding the comment, could you point me out where I should update this comment? 👍
from smile.
Sorry, forgot to push to github. It is there now. Thanks!
from smile.
Tnx for merging it 😄
from smile.
Related Issues (20)
- Jitpack builds are failing since 3.x HOT 2
- FR: Compact "how to load dirty data" example HOT 1
- Arff.java writeField can fail when type isn't in the list of handled types HOT 1
- BarPlot.getUpperBound() computes wrong bound. HOT 1
- FR: Warn before trying to train where the label column has any nulls HOT 1
- Dot product Question HOT 2
- stringVector(0) error HOT 1
- Suggest changing license to Apache 2.0 license or MIT
- Non-monotonic cluster tree -- the linkage is probably not appropriate! HOT 1
- HiddenLayerBuilder does not add dropout to HiddenLayer HOT 4
- Method in interface BaseArray can never return an int[] HOT 2
- Making the plot module available in Java API HOT 4
- InnerProduct of vectors created with cas.Vars not being simplified HOT 6
- Support header attribute on facet / row / column encoding channels HOT 2
- Incorrect spec generated for encoding channel sort HOT 4
- How can I set up in Intellij or other IDE to compile and read code? HOT 3
- What is the efficient way to fill null values in a column with an arbitrary string in a Dataframe? HOT 3
- ClassCastException when calling DataFrame.omitNullRows() HOT 1
- smile.plot.swing.BarPlot works with smile-plot 3.0.2 but not with 3.1.0 HOT 1
- IllegalArgumentException when suing SimpleImputer for data sourced from json file HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from smile.