Question: I'm trying to do my best to recreate an algorithm that a company is using by sucking in all of its outputs and adding in some relevant variables (I won't be able to perfectly recreate it as I'm missing inventory data). I'm guessing this is a job for machine learning but I was wondering where I start? Are there specific models I should start with? Software I should use? Courses I should dive into?

Answer: 
Just for visualization you could use the `precision` parameter of `plot_tree()`:

> 
> precision: int, optional (default=3)
> 
> 
> Number of digits of precision for floating point in the values of impurity, threshold and value attributes of each node.
> 
> 
> 

(see [here](https://scikit-learn.org/stable/modules/generated/sklearn.tree.plot_tree.html))

However, since it also applies `precision` to impurity you might want to turn that off. Here is an example:

`tree.plot_tree(clf)` gives
[![enter image description here](https://i.stack.imgur.com/d5hJB.png)](https://i.stack.imgur.com/d5hJB.png)

`tree.plot_tree(clf, precision=0, impurity=false)` gives
[![tree.plot_tree(grid_search.best_estimator_)](https://i.stack.imgur.com/MTMBe.png)](https://i.stack.imgur.com/MTMBe.png)

(If gini importance was shown, all gini values would be 0 here)

Since it uses $\leq$ and all split thresholds are between the closest $X$ values the split criteria should still be correct. Even if your tree does not use integers. But I'd always double check and compare both plots.
You're right to switch off the normalization. The only way I can think of to force the tree to use integers as integers is to perform one-hot encoding on your features. That will force the tree to see integers as categorical values instead of continuous.