UBC-MDS / software-review-2022

0 stars 0 forks source link

Submission group 12: simplefit(Python) #47

Open zzhzoe opened 2 years ago

zzhzoe commented 2 years ago

Submitting Author Name: Zihan Zhou @zzhzoe Package Name: simplefit Editor: Mohammadreza Mirzazadeh @rezam747 Navya Dahiya @nd265 Sanchit Singh @Sanchit120496 One-Line Description of Package: A python package that cleans the data, does basic EDA and returns scores for basic classification and regression models。 Repository Link:https://github.com/UBC-MDS/simplefit Version submitted: v0.1.4 Editor: TBD Reviewer 1: Abhiket Gaurav @Abhiket Reviewer 2: Sufang Tan @Kendy-Tan Reviewer 3: Lakshmi Santosha Valli Akella @valli180 Reviewer 4: Pavel Levchenko @plevchen Archive: TBD Version accepted: TBD

Description

This package helps data scientists to clean the data, perform basic EDA, visualize graphical interpretations and analyse performance of the baseline model and basic Classification or Regression models, namely Logistic Regression, Ridge on their data.

Scope

* Please fill out a pre-submission inquiry before submitting a data visualization package. For more info, see notes on categories of our guidebook.

This package offers utility functions that provide the basic EDA visualizations including histograms, SPLOM plot and correlation plot. We provide a package that saves 90% of the time spent in writing the same code for different graphs, comparing scores of models

Any data professionals at the entry-level who would like to conduct a quick exploratory data analysis. A data scientist spends a lot of time writing same syntactical code for carrying out data processing, transformations, fitting models and comparing their performances.

Of course, EDA is not a new topic for data scientists. There are quite a few packages on PyPI that do similar work. However, most of them only include limited functionality, such as providing only descriptive statistics. But our package helps data scientists to clean the data, perform basic EDA, visualize graphical interpretations and analyse performance of the baseline model and basic Classification or Regression models, namely Logistic Regression, Ridge on their data.

Technical checks

For details about the pyOpenSci packaging requirements, see our packaging guide. Confirm each of the following by checking the box. This package:

Publication options

JOSS Checks - [ ] The package has an **obvious research application** according to JOSS's definition in their [submission requirements][JossSubmissionRequirements]. Be aware that completing the pyOpenSci review process **does not** guarantee acceptance to JOSS. Be sure to read their submission requirements (linked above) if you are interested in submitting to JOSS. - [ ] The package is not a "minor utility" as defined by JOSS's [submission requirements][JossSubmissionRequirements]: "Minor ‘utility’ packages, including ‘thin’ API clients, are not acceptable." pyOpenSci welcomes these packages under "Data Retrieval", but JOSS has slightly different criteria. - [ ] The package contains a `paper.md` matching [JOSS's requirements][JossPaperRequirements] with a high-level description in the package root or in `inst/`. - [ ] The package is deposited in a long-term repository with the DOI: *Note: Do not submit your package separately to JOSS*

Are you OK with Reviewers Submitting Issues and/or pull requests to your Repo Directly?

This option will allow reviewers to open smaller issues that can then be linked to PR's rather than submitting a more dense text based review. It will also allow you to demonstrate addressing the issue via PR links.

Code of conduct

P.S. *Have feedback/comments about our review process? Leave a comment here

Editor and Review Templates

Editor and review templates can be found here

abhiket commented 2 years ago

Package Review

Please check off boxes as applicable, and elaborate in comments below. Your review is not limited to these topics, as described in the reviewer guide

Documentation

The package includes all the following forms of documentation:

Readme requirements The package meets the readme requirements below:

The README should include, from top to bottom:

Usability

Reviewers are encouraged to submit suggestions (or pull requests) that will improve the usability of the package as a whole. Package structure should follow general community best practices. In general please consider:

Functionality

For packages co-submitting to JOSS

Note: Be sure to check this carefully, as JOSS's submission requirements and scope differ from pyOpenSci's in terms of what types of packages are accepted.

The package contains a paper.md matching JOSS's requirements with:

Final approval (post-review)

Estimated hours spent reviewing: 1.5hrs


Review Comments

This is an amazing package, if developed to it's full potential, I am sure it can save so much time for a data scientists and business analysts. It is stated that around 60% of the time of any project goes into cleaning the data. If this time is saved, people can focus on building models and making predictions/inferences. I see huge potential in this package, however, I have a few concerns:

  1. Although there is the docs badge, it would be great if the link is given in the "About" section.
  2. Removing all the rows that contain missing values is not an ideal way to deal with missing values. As we are now aware that there are various ways of doing missing value imputations, some of them can be implemented here.
  3. The plot_distributions function has one input for several bins. As we can see, in the example presented, it does not apply to all the distribution. For eg: the "duration" distribution is looking right-skewed and the "energy" distribution is looking left-skewed. We can add the functionality of selecting bins, as per the min-max value of a given column.
  4. Choice of choosing the plot type (histogram, scatter, box, etc) can be given as an input.
  5. Since we are doing EDA, we need to slice and dice the data, the option of faceting can also be added.
  6. The scope of EDA is huge, like in the co-relation plot, we are seeing only the correlation between numeric values, we can also add non-numeric values as a feature.
  7. The function here is using logistic regression for binary classification. Request to kindly mention it in the scope of the project in the README section.
  8. For the case in point, accuracy seems to be a good metric, however, what if a doctor/banker is using this package, the choice of metric can also be an input to the function.

Overall, I was able to install the package and use it on a few toy datasets. All the functions within the package are working well and as per the expectation. Kudos to the team for ideating and making this package. I am sure if developed to the fullest, this package can rock the data-science world!!

valli180 commented 2 years ago

Package Review

Please check off boxes as applicable, and elaborate in comments below. Your review is not limited to these topics, as described in the reviewer guide

Documentation

The package includes all the following forms of documentation:

Readme requirements The package meets the readme requirements below:

The README should include, from top to bottom:

Usability

Reviewers are encouraged to submit suggestions (or pull requests) that will improve the usability of the package as a whole. Package structure should follow general community best-practices. In general please consider:

Functionality

Final approval (post-review)

Estimated hours spent reviewing: 1 hr


Review Comments:

Congratulations on coming up with a very useful package idea and successfully delivering it team!

Kendy-Tan commented 2 years ago

Package Review

Please check off boxes as applicable, and elaborate in comments below. Your review is not limited to these topics, as described in the reviewer guide

Documentation

The package includes all the following forms of documentation:

Readme requirements The package meets the readme requirements below:

The README should include, from top to bottom:

Usability

Reviewers are encouraged to submit suggestions (or pull requests) that will improve the usability of the package as a whole. Package structure should follow general community best-practices. In general please consider:

Functionality

For packages co-submitting to JOSS

Note: Be sure to check this carefully, as JOSS's submission requirements and scope differ from pyOpenSci's in terms of what types of packages are accepted.

The package contains a paper.md matching JOSS's requirements with:

Final approval (post-review)

Estimated hours spent reviewing: 1.5 hrs

Review Comments

Good job team! Thank you for coming up with such a useful package, and I can't wait to use it in my real later project. however, I still have a few suggestions to make this function more versatile:

  1. The cleaner function can include more functions like data imputation for numerical columns by replacing the missing value with mean/median/ most frequent value.
  2. Both the classification and regression function could add more model options like decision trees and other non-linear terms been to add in regression.
  3. In the EAD plotting, you can faceting to see the correlations among different categorical groups. Although there is the docs badge, it would be great if the link is given in the "About" section.
  4. You can add more options in the plot type like histogram, scatter, the box that allows users to choose the most appropriate one for their investigation problem.
  5. If the package is limited to a typical structure of the data set, you should remind the user in the README.md.
plevchen commented 2 years ago

Package Review

Please check off boxes as applicable, and elaborate in comments below. Your review is not limited to these topics, as described in the reviewer guide

Documentation

The package includes all the following forms of documentation:

Readme requirements The package meets the readme requirements below:

The README should include, from top to bottom:

Usability

Reviewers are encouraged to submit suggestions (or pull requests) that will improve the usability of the package as a whole. Package structure should follow general community best-practices. In general please consider:

Functionality

For packages co-submitting to JOSS

Note: Be sure to check this carefully, as JOSS's submission requirements and scope differ from pyOpenSci's in terms of what types of packages are accepted.

The package contains a paper.md matching JOSS's requirements with:

Final approval (post-review)

Estimated hours spent reviewing: 1 hour


Review Comments

Great work! You created a package with so many functions. Some of them could be useful for actual EDA work in the future. Some thoughts on potential improvements:

  1. In my opinion selecting Altair for this task is not the best choice. I think better option would be building your library on top of plotly. It is modern library with a great design and interactivity. Besides plotly figures can be converted to Dash, so instead of static images users could actually play with ranges, apply some filters etc within a dashboard
  2. Maybe the structure of the package should be more focused on either visualization or metrics. Combining both in the same package could be confusing to the end user
  3. For visualisation instead of histograms I would place more emphasis on violin density plots, those are more useful during EDA for comparison of different features
  4. In regressor function users do not have options to select type of regression. Better approach could be assign some type as default in function definition, but provide a user an opportunity to select from multiple options
  5. Similar comment for classifier function. Transformer options are hard coded within a code, while better approach would be to give an option to select scaling algorithm such as StandardScaler() or OneHotEncoder()
  6. Cleaning function is too restrictive. This could be significantly modified with calculating number of missing observations, with making assumption whether that missingness can be treated as MAR, MNAR or MCAR with using different imputation methods.

Great work with defensive programming. All functions were very well thought in terms of edge cases and what warnings/errors should be raised