Introduce XGBoost.swift - a Swift API for the powerful XGBoost

Hi,

I’m here to share my new project XGBoost.swift, which is a Swift API for the powerful XGBoost. It’s still in the early stage with basic workable functions, just want to share and receive feedback on it, to avoid big issues earlier.

As I started to learn Swift not long ago, there must be many issues lie in the code. The current API tries to conform to the Python API, there’re still some differences in nature between the 2 languages.

Here are the links:

Github: https://github.com/ddxgz/XGBoost.swift

Docs: https://ddxgz.github.io/XGBoost.swift/ (Not so much there for now)

Interesting, I started a very similar project a few days ago. I have a working callback function, plotting, training, testing against Python implementation. Basically all core stuff, I just wanted to do documentation and more robust tests before posting here.

Perhaps you would want to join forces?


Documentation: https://github.com/kongzii/SwiftXGBoost/wiki

:smiley: What a coincidence, we both had the 1st commit on the same day! It looks like you got more features for now :+1:.

I checked your codebase, you have some nice ideas. I am trying to be more Swifty and utilize great C compatibility that Swift provides, so it can be theoretically even more powerful than Python bindings.

Wouldn’t you want to cooperate, instead of maintaining two separate libraries that basically do the same?

Thanks. This project is for the purpose of learning the language. I’m trying different possibilities for doing different things. I think it would be better when my project is mature enough then we may discuss the possibility for merge the good part of each.

There are different tastes on APIs, wouldn’t it be nice if we end up different APIs that fits for different people? I try not to look at your code to avoid unconscious converge :grinning:.

Well I like when open source projects like this are more about cooperation rather than fighting over features. Redeveloping the very same features is just waste of developer time.

But if it is more about learning for you then I totally understand, thanks for the answer.