TFT Dashboards is a continuation of a Machine Learning projects in Python during Data Science certificate that leverages machine learning to uncover patterns from match history data from Riot API. Aggregating over tens of thousands of TFT matches, we can find balance opportunities, player trends, and, of course, gameplay insights to help one improve their play.
RiotAPI - Riot Games offers an API to gather various game information which is offered to the LCU client. With a registered API Key, any user can access this information. With the power of machine learning, we can gather deeper insights than typical win rates to help us improve at our own play.
Aid discovery and learning: While Teamfight Tactics is easy to pick up, making sense of TFT has its own set of challenges.
Recommend Data-Backed Composition: Help player craft team compositions based on their given set of units, and items. (Aspiration with item consideration)
Contextual statistics: Provide statistics specific to conditions where the subject is powerful. Not a general statistics like Overall Win Rate.
Building team synergies is a key path to success in Teamfight Tactics, an exercise that player needs to do quickly in their head is find a set of units with that maximize traits given their current unit limits.
This take a vase amount of dispersed knowledge, sprinkled all over the game. There has yet to be a popularized method to aggregate and make sense of all the information in one single visualization. Currently information about the units are displayed 1 dimensionally.
Via; Unit Cards, or Traits Display.
There has to be a better way to display this information! Origin and Classes generally unique per unit; by plotting units against these two features, we can build a table where scanning vertically or horizontally can help players quickly identify units of interest.
By overlaying this table with additional information like key carries, and their items, players build effective compositions without decicated time or investment in testing these combinations.
Our current data set is presentative of the player population, so... It is reflect of the meta, but also reflective of inefficient player choices. Keeping that in mind, let's take a look at some data.
Augment data are not included in the Riot API.
We are interested in understanding how team composition affects placements --> How do we measure the strength of a composition.
Using an XGBoost Regressor, I was able to get a R² Score of ~0.59, which explains that 59% of the in placement can be explained by Units (and traits) alone. But this the data has an underlying behavior where players selects best items for their units. So appropriate items are also implied. So appropriate items are also implied.
Cypher 3 struggles to consistently be top help, but have a high top 1 rate relative to top 4 rate. This suggests it struggles to close out games. Looking at Cypher 2, you can see it doing signifcantly worst. suggesting player struggles to transition
How does skill affect the prediction of placements?
R2 strongest near center of the population, mostly because of larger data sample.
With the machine learning algorithms, we can understand it's decision process to understand what makes effective and powerful game winning positions. Sparse models (models that uses few features to make predictions) are the most interpretable. Most ML models are blackboxed and its difficult to extract knowledge from, but this is important for us if we want to extract learnings.
So we will engineer features to help the algorithm process;
Number of $x Cost Units
Highest * of $x cost units.
# of Trait Counts
Highest Trait's Unit Requirement
Using play data, we can also generate unit recommendations using pairwise associations; For TFTDashboards, we are in the process of building this feature.
comp_unit = ['Rengar','Jinx']
unit_count = 8
unit_pool = tftinsights.units.get_unit_list(cost="1234",traits=[] ,units_only=True,add_prefix=True)
answer = tftinsights.compositions.build_conditional_comp( unit_count, comp_unit, unit_pool, df)
code1 = tftinsights.units.get_unitplanneer_code_comp ( answer )
print (list(answer))
print (code1)
Output:
['TFT14_Rengar', 'TFT14_Jinx', 'TFT14_Ekko', 'TFT14_Neeko', 'TFT14_Brand', 'TFT14_DrMundo', 'TFT14_Zyra', 'TFT14_Vex']
022ed31e31f2eb2e12e32f72f4000000TFTSet14
This is a decent team.
This also tells you that Street Demon is incredibly dominate. However this recommendation does not consider the player's current itemization options, and that will be a future feature.