RapidMiner Data Science Competition 3: Fantasy Football

sgenzersgenzer Administrator, Moderator, Employee, RapidMiner Certified Analyst, Community Manager, Member, University Professor, PM Moderator Posts: 2,959 Community Manager
edited December 2018 in Help

Hello RapidMiners -FFL-Logo.png

 

Yes here it is!  Here's the setup:

 

“Fantasy Football” is an online game where users choose a “fantasy team” of nine American football players from among current NFL player rosters.  This can be done once per season (“season play”) or every week (“daily fantasy” or “DFS”).  Once a fantasy team has been chosen, the user gains/loses points depending on how their players perform in actual NFL season games.  These players do not need to be on the same actual NFL team; in fact usually they are players from a wide variety of actual teams. This competition will focus on DFS, not season play.

 

There are two major website platforms for playing DFS online: DraftKings and FanDuel.  In either platform, the goal is always the same: maximize “Fantasy Points” (FPTS) while keeping inside a given “Salary Budget” (Salary).  FPTS are earned when the players on your fantasy team do good things while playing football for that week. 

 

Hence the key idea here is to look for value of a player: DK Salary vs FPTS.  We will define this value as FPTS per $1000 of Salary, or “FPTS_Ratio”.

 

The goal of this challenge is, given all historical player information and DK Salaries (up to and including games played on December 18, 2017), to predict the FPTS_Ratio with the lowest root mean-squared error (RSME) for all players for Week 16 (December 23-25) of the 2017 NFL season.

 

Obtaining NFL football statistics is easy to do now due to the freely available nflscrapR-data dataset created by Ron Yurko, Sam Ventura, and Max Horowitz from Carnegie Mellon University and recently posted on Kaggle.com.  It is well documented and easily downloaded from the GitHub page.  An exact clone of this repository will be used at all times.

 

In addition, we are including a separate data set, "RotoGuru-DK.csv" which has DraftKings FPTS and Salary for each week from 2014 Week 1 thru 2017 Week 5 (source: rotoguru.com):

 

It is clear that much of the information that serious Fantasy Football participants use is unstructured data – website text in particular.  Therefore it is permitted to use the following external sources in your models: http://www.espn.com/fantasy/football, https://football.fantasysports.yahoo.com, https://www.dailyfantasysports101.com:)

 

All submissions in this competition need to be posted in this thread with the entire XML of the process using the supplied process template.  No submission will be accepted if it is submitted in another other form.

 

The deadline for submissions is December 19, 2017 at 23:59:59 UTC.

 

The NFL will play Week 16 beginning on December 23 and continuing through December 25.  The winners of the competition will be the models with the three lowest RSMEs when applied on the Week 16 data set.  This is the ultimate test set – no one has access to it prior to submission.  The winners will be announced sometime after December 25, 2017 in the competition’s thread.

 

RapidMiner will award the following prizes to the winners:

 

1st place:  US$750 (as a VISA debit/gift card)

2nd place: US$250 (as a VISA debit/gift card)

3rd place:  US$100 (as a VISA debit/gift card)

4th place:   RapidMiner “lightning” t-shirt

5h place:    RapidMiner “lightning” t-shirt

6th place:   RapidMiner “lightning” t-shirt

 

NOTE: THIS IS ONLY A SUMMARY.  A FULL DESCRIPTION OF THE COMPETITION AND RULES ARE ATTACHED TO THIS POST.  PLEASE READ CAREFULLY BEFORE BEGINNING!!

 

That's about it.  Good luck everyone and may the best modeler win!

 

Scott

Tagged:

Answers

  • sgenzersgenzer Administrator, Moderator, Employee, RapidMiner Certified Analyst, Community Manager, Member, University Professor, PM Moderator Posts: 2,959 Community Manager

    hello all Fantasy Football RapidMiners -

     

    Hope the challenge is going well for.  This thread has been VERY QUIET so please begin chatter if you like!

     

    As you may have noticed, RapidMiner Studio 8.0 was released today.  Wahoo!!  So obviously you are permitted to submit your entries for this competition using RapidMiner Studio 8.0 as well as 7.6.1, 7.6.2, or 7.6.3.

     

    Good luck everyone!

     

    Scott

  • sgenzersgenzer Administrator, Moderator, Employee, RapidMiner Certified Analyst, Community Manager, Member, University Professor, PM Moderator Posts: 2,959 Community Manager
    Hello all - just a reminder that this competition ends in FOUR DAYS. All solutions must be posted in this thread using the supplied process template (see original post). No other submissions will be accepted. Good luck everyone!!

    Scott

  • maros_plsikmaros_plsik Member Posts: 4 Contributor I

    Hello all :)

    Let me introduce myself - I am an university student from Europe who got recently very interested in data science and things related to it. I thought I would at least try to work on this challenge as it seems to be well prepared and I think it can help me to learn a lot. 

    I know the challenge ends very soon but I want to try to build at least some simple, functional model.

    I have a question though - is the RotoGuru-DK dataset complete? It's mentioned that it contains games for each week from 2014 Week 1 thru 2017 Week 5. But it only contains first 9 weeks for each year, while weeks 10-17 are not included. Is it correct or a mistake? 

    Thank you for an answer and also for a great work on the challenge :)

  • sgenzersgenzer Administrator, Moderator, Employee, RapidMiner Certified Analyst, Community Manager, Member, University Professor, PM Moderator Posts: 2,959 Community Manager

    hello @maros_plsik - aha you're right. I think there may have been an error on my part with that data file.  Use this one instead.

     

    Scott

     

     

  • florian_zieglerflorian_ziegler Member Posts: 2 Contributor I

    Hello Scott,

     

    I have another question. Since we are not allowed to change the grey blocks, we are also not allowed to do any data imputation on the DK salary attribute, right? Because my model performs better with data imputation. The template process throws all players with salary 0 away.

     

    Best regards

    Florian

  • sgenzersgenzer Administrator, Moderator, Employee, RapidMiner Certified Analyst, Community Manager, Member, University Professor, PM Moderator Posts: 2,959 Community Manager

    hello @florian_ziegler - no you can do that.  Just put it in Step 5.

     

    Scott

     

  • florian_zieglerflorian_ziegler Member Posts: 2 Contributor I

    So, here is my submission. I only used the RotoGuru-DK dataset, but maybe, the model still makes some nice predictions. :)

  • yzanyzan Member Posts: 66 Unicorn

    I am not sure whether it fulfills all the requirements. If something has to be altered, please, let me know.

  • maros_plsikmaros_plsik Member Posts: 4 Contributor I

    I am also submitting my solution. The issue is, I have created the whole process in my own empty window (not in the template you provided) and now I am having issues getting all the operators from my process to the template. I have uploaded my file and I am going to rewrite it to the template, hopefully it will be done in a few minutes. I hope it's ok. Thanks for understanding.

     

    <?xml version="1.0" encoding="UTF-8"?><process version="8.0.001">
    <operator activated="true" class="subprocess" compatibility="8.0.001" expanded="true" height="82" name="Data" width="90" x="45" y="85">
    <process expanded="true">
    <operator activated="true" class="retrieve" compatibility="8.0.001" expanded="true" height="68" name="Retrieve week results 2014 thru week 8 2017 FINAL" width="90" x="45" y="85">
    <parameter key="repository_entry" value="../data/week results 2014 thru week 8 2017 FINAL"/>
    </operator>
    <operator activated="true" class="free_memory" compatibility="8.0.001" expanded="true" height="82" name="Free Memory" width="90" x="179" y="85"/>
    <operator activated="true" class="filter_examples" compatibility="8.0.001" expanded="true" height="103" name="Filter Examples (2)" width="90" x="313" y="85">
    <parameter key="parameter_expression" value=""/>
    <parameter key="condition_class" value="custom_filters"/>
    <parameter key="invert_filter" value="true"/>
    <list key="filters_list">
    <parameter key="filters_entry_key" value="GID.gt.7000"/>
    </list>
    <parameter key="filters_logic_and" value="false"/>
    <parameter key="filters_check_metadata" value="true"/>
    </operator>
    <operator activated="true" class="declare_missing_value" compatibility="8.0.001" expanded="true" height="82" name="Declare Missing Value" width="90" x="447" y="85">
    <parameter key="attribute_filter_type" value="subset"/>
    <parameter key="attribute" value="DK salary"/>
    <parameter key="attributes" value="DK salary|DK points"/>
    <parameter key="use_except_expression" value="false"/>
    <parameter key="value_type" value="attribute_value"/>
    <parameter key="use_value_type_exception" value="false"/>
    <parameter key="except_value_type" value="time"/>
    <parameter key="block_type" value="attribute_block"/>
    <parameter key="use_block_type_exception" value="false"/>
    <parameter key="except_block_type" value="value_matrix_row_start"/>
    <parameter key="invert_selection" value="false"/>
    <parameter key="include_special_attributes" value="false"/>
    <parameter key="mode" value="numeric"/>
    <parameter key="numeric_value" value="0.0"/>
    <parameter key="expression_value" value=""/>
    </operator>
    <operator activated="true" class="nominal_to_numerical" compatibility="8.0.001" expanded="true" height="103" name="Nominal to Numerical" width="90" x="581" y="85">
    <parameter key="return_preprocessing_model" value="false"/>
    <parameter key="create_view" value="false"/>
    <parameter key="attribute_filter_type" value="all"/>
    <parameter key="attribute" value="Team"/>
    <parameter key="attributes" value="Pos|homeAway|week_total"/>
    <parameter key="use_except_expression" value="false"/>
    <parameter key="value_type" value="nominal"/>
    <parameter key="use_value_type_exception" value="false"/>
    <parameter key="except_value_type" value="file_path"/>
    <parameter key="block_type" value="single_value"/>
    <parameter key="use_block_type_exception" value="false"/>
    <parameter key="except_block_type" value="single_value"/>
    <parameter key="invert_selection" value="false"/>
    <parameter key="include_special_attributes" value="false"/>
    <parameter key="coding_type" value="unique integers"/>
    <parameter key="use_comparison_groups" value="false"/>
    <list key="comparison_groups"/>
    <parameter key="unexpected_value_handling" value="all 0 and warning"/>
    <parameter key="use_underscore_in_name" value="false"/>
    </operator>
    <operator activated="true" class="impute_missing_values" compatibility="8.0.001" expanded="true" height="68" name="Impute Missing Values (2)" width="90" x="715" y="85">
    <parameter key="attribute_filter_type" value="all"/>
    <parameter key="attribute" value="DK salary"/>
    <parameter key="attributes" value="GID|DK points|DK salary|Pos|Week|Year|homeAway"/>
    <parameter key="use_except_expression" value="false"/>
    <parameter key="value_type" value="attribute_value"/>
    <parameter key="use_value_type_exception" value="false"/>
    <parameter key="except_value_type" value="time"/>
    <parameter key="block_type" value="attribute_block"/>
    <parameter key="use_block_type_exception" value="false"/>
    <parameter key="except_block_type" value="value_matrix_row_start"/>
    <parameter key="invert_selection" value="false"/>
    <parameter key="include_special_attributes" value="false"/>
    <parameter key="iterate" value="true"/>
    <parameter key="learn_on_complete_cases" value="true"/>
    <parameter key="order" value="chronological"/>
    <parameter key="sort" value="ascending"/>
    <parameter key="use_local_random_seed" value="false"/>
    <parameter key="local_random_seed" value="1992"/>
    <process expanded="true">
    <operator activated="true" class="h2o:gradient_boosted_trees" compatibility="7.6.001" expanded="true" height="103" name="Gradient Boosted Trees (3)" width="90" x="246" y="34">
    <parameter key="number_of_trees" value="20"/>
    <parameter key="reproducible" value="false"/>
    <parameter key="maximum_number_of_threads" value="4"/>
    <parameter key="use_local_random_seed" value="false"/>
    <parameter key="local_random_seed" value="1992"/>
    <parameter key="maximal_depth" value="5"/>
    <parameter key="min_rows" value="10.0"/>
    <parameter key="min_split_improvement" value="0.0"/>
    <parameter key="number_of_bins" value="20"/>
    <parameter key="learning_rate" value="0.13"/>
    <parameter key="sample_rate" value="1.0"/>
    <parameter key="distribution" value="AUTO"/>
    <parameter key="early_stopping" value="false"/>
    <parameter key="stopping_rounds" value="1"/>
    <parameter key="stopping_metric" value="AUTO"/>
    <parameter key="stopping_tolerance" value="0.001"/>
    <parameter key="max_runtime_seconds" value="0"/>
    <list key="expert_parameters"/>
    </operator>
    <connect from_port="example set source" to_op="Gradient Boosted Trees (3)" to_port="training set"/>
    <connect from_op="Gradient Boosted Trees (3)" from_port="model" to_port="model sink"/>
    <portSpacing port="source_example set source" spacing="0"/>
    <portSpacing port="sink_model sink" spacing="0"/>
    </process>
    </operator>
    <operator activated="true" class="generate_attributes" compatibility="8.0.001" expanded="true" height="82" name="Generate Attributes" width="90" x="849" y="85">
    <list key="function_descriptions">
    <parameter key="FPTS_Ratio" value="[DK points]/([DK salary]/1000)"/>
    <parameter key="week_total" value="(Year - 2000) * 17 + Week"/>
    </list>
    <parameter key="keep_all" value="true"/>
    <description align="center" color="transparent" colored="false" width="126">create FPTS_Ratio attribute</description>
    </operator>
    <operator activated="true" class="set_role" compatibility="8.0.001" expanded="true" height="82" name="Set Role" width="90" x="983" y="85">
    <parameter key="attribute_name" value="FPTS_Ratio"/>
    <parameter key="target_role" value="label"/>
    <list key="set_additional_roles"/>
    <description align="center" color="transparent" colored="false" width="126">set FPTS_Ratio as target</description>
    </operator>
    <operator activated="true" class="rename" compatibility="8.0.001" expanded="true" height="82" name="Rename (5)" width="90" x="45" y="289">
    <parameter key="old_name" value="DK points"/>
    <parameter key="new_name" value="Points"/>
    <list key="rename_additional_attributes"/>
    </operator>
    <operator activated="true" class="operator_toolbox:group_into_collection" compatibility="0.7.000" expanded="true" height="82" name="Group Into Collection" width="90" x="179" y="289">
    <parameter key="group_by_attribute" value="Name"/>
    </operator>
    <operator activated="true" class="loop_collection" compatibility="8.0.001" expanded="true" height="82" name="Loop Collection" width="90" x="313" y="289">
    <parameter key="set_iteration_macro" value="false"/>
    <parameter key="macro_name" value="iteration"/>
    <parameter key="macro_start_value" value="1"/>
    <parameter key="unfold" value="false"/>
    <process expanded="true">
    <operator activated="true" class="operator_toolbox:group_into_collection" compatibility="0.7.000" expanded="true" height="82" name="Group Into Collection (2)" width="90" x="112" y="34">
    <parameter key="group_by_attribute" value="Year"/>
    </operator>
    <operator activated="true" class="loop_collection" compatibility="8.0.001" expanded="true" height="82" name="Loop Collection (2)" width="90" x="246" y="34">
    <parameter key="set_iteration_macro" value="false"/>
    <parameter key="macro_name" value="iteration"/>
    <parameter key="macro_start_value" value="1"/>
    <parameter key="unfold" value="false"/>
    <process expanded="true">
    <operator activated="true" class="sort" compatibility="8.0.001" expanded="true" height="82" name="Sort (2)" width="90" x="45" y="34">
    <parameter key="attribute_name" value="Week"/>
    <parameter key="sorting_direction" value="increasing"/>
    </operator>
    <operator activated="true" class="series:lag_series" compatibility="7.4.000" expanded="true" height="82" name="Lag Series (4)" width="90" x="179" y="34">
    <list key="attributes">
    <parameter key="FPTS_Ratio" value="1"/>
    <parameter key="Points" value="1"/>
    <parameter key="DK salary" value="1"/>
    </list>
    </operator>
    <operator activated="true" class="series:lag_series" compatibility="7.4.000" expanded="true" height="82" name="Lag Series (5)" width="90" x="313" y="34">
    <list key="attributes">
    <parameter key="FPTS_Ratio" value="2"/>
    <parameter key="Points" value="2"/>
    <parameter key="DK salary" value="2"/>
    </list>
    </operator>
    <operator activated="true" class="series:lag_series" compatibility="7.4.000" expanded="true" height="82" name="Lag Series (6)" width="90" x="447" y="34">
    <list key="attributes">
    <parameter key="FPTS_Ratio" value="3"/>
    <parameter key="Points" value="3"/>
    <parameter key="DK salary" value="3"/>
    </list>
    </operator>
    <operator activated="true" class="rename" compatibility="8.0.001" expanded="true" height="82" name="Rename (3)" width="90" x="581" y="34">
    <parameter key="old_name" value="Points-1"/>
    <parameter key="new_name" value="DK_Points_1"/>
    <list key="rename_additional_attributes">
    <parameter key="DK salary-1" value="DK_Salary_1"/>
    <parameter key="DK salary-2" value="DK_Salary_2"/>
    <parameter key="DK salary-3" value="DK_Salary_3"/>
    <parameter key="FPTS_Ratio-1" value="FPTS_Ratio_1"/>
    <parameter key="FPTS_Ratio-2" value="FPTS_Ratio_2"/>
    <parameter key="FPTS_Ratio-3" value="FPTS_Ratio_3"/>
    <parameter key="Points-2" value="DK_Points_2"/>
    <parameter key="Points-3" value="DK_Points_3"/>
    </list>
    </operator>
    <operator activated="true" class="replace_missing_values" compatibility="8.0.001" expanded="true" height="103" name="Replace Missing Values" width="90" x="715" y="34">
    <parameter key="return_preprocessing_model" value="false"/>
    <parameter key="create_view" value="false"/>
    <parameter key="attribute_filter_type" value="subset"/>
    <parameter key="attribute" value=""/>
    <parameter key="attributes" value="DK_Points_1|DK_Salary_3|DK_Salary_2|DK_Salary_1|DK_Points_3|DK_Points_2|FPTS_Ratio_3|FPTS_Ratio_2|FPTS_Ratio_1"/>
    <parameter key="use_except_expression" value="false"/>
    <parameter key="value_type" value="attribute_value"/>
    <parameter key="use_value_type_exception" value="false"/>
    <parameter key="except_value_type" value="time"/>
    <parameter key="block_type" value="attribute_block"/>
    <parameter key="use_block_type_exception" value="false"/>
    <parameter key="except_block_type" value="value_matrix_row_start"/>
    <parameter key="invert_selection" value="false"/>
    <parameter key="include_special_attributes" value="false"/>
    <parameter key="default" value="zero"/>
    <list key="columns"/>
    </operator>
    <operator activated="true" class="series:integrate_series" compatibility="7.4.000" expanded="true" height="82" name="Integrate" width="90" x="849" y="34">
    <parameter key="attribute_name" value="FPTS_Ratio_1"/>
    <parameter key="keep_original_attribute" value="true"/>
    </operator>
    <operator activated="true" class="rename" compatibility="8.0.001" expanded="true" height="82" name="Rename (6)" width="90" x="983" y="34">
    <parameter key="old_name" value="cumulative(FPTS_Ratio_1)"/>
    <parameter key="new_name" value="FPTS_Season"/>
    <list key="rename_additional_attributes"/>
    </operator>
    <connect from_port="single" to_op="Sort (2)" to_port="example set input"/>
    <connect from_op="Sort (2)" from_port="example set output" to_op="Lag Series (4)" to_port="example set input"/>
    <connect from_op="Lag Series (4)" from_port="example set output" to_op="Lag Series (5)" to_port="example set input"/>
    <connect from_op="Lag Series (5)" from_port="example set output" to_op="Lag Series (6)" to_port="example set input"/>
    <connect from_op="Lag Series (6)" from_port="example set output" to_op="Rename (3)" to_port="example set input"/>
    <connect from_op="Rename (3)" from_port="example set output" to_op="Replace Missing Values" to_port="example set input"/>
    <connect from_op="Replace Missing Values" from_port="example set output" to_op="Integrate" to_port="example set input"/>
    <connect from_op="Integrate" from_port="example set output" to_op="Rename (6)" to_port="example set input"/>
    <connect from_op="Rename (6)" from_port="example set output" to_port="output 1"/>
    <portSpacing port="source_single" spacing="0"/>
    <portSpacing port="sink_output 1" spacing="0"/>
    <portSpacing port="sink_output 2" spacing="0"/>
    </process>
    </operator>
    <operator activated="true" class="append" compatibility="8.0.001" expanded="true" height="82" name="Append (5)" width="90" x="380" y="34">
    <parameter key="datamanagement" value="double_array"/>
    <parameter key="data_management" value="auto"/>
    <parameter key="merge_type" value="all"/>
    </operator>
    <connect from_port="single" to_op="Group Into Collection (2)" to_port="exa"/>
    <connect from_op="Group Into Collection (2)" from_port="col" to_op="Loop Collection (2)" to_port="collection"/>
    <connect from_op="Loop Collection (2)" from_port="output 1" to_op="Append (5)" to_port="example set 1"/>
    <connect from_op="Append (5)" from_port="merged set" to_port="output 1"/>
    <portSpacing port="source_single" spacing="0"/>
    <portSpacing port="sink_output 1" spacing="0"/>
    <portSpacing port="sink_output 2" spacing="0"/>
    </process>
    </operator>
    <operator activated="true" class="append" compatibility="8.0.001" expanded="true" height="82" name="Append (6)" width="90" x="447" y="289">
    <parameter key="datamanagement" value="double_array"/>
    <parameter key="data_management" value="auto"/>
    <parameter key="merge_type" value="all"/>
    </operator>
    <operator activated="true" class="generate_attributes" compatibility="8.0.001" expanded="true" height="82" name="Generate Attributes (3)" width="90" x="581" y="289">
    <list key="function_descriptions">
    <parameter key="FPTS_avg" value="avg(FPTS_Ratio_1,FPTS_Ratio_2,FPTS_Ratio_3)"/>
    <parameter key="Salary_avg" value="avg(DK_Salary_1,DK_Salary_2,DK_Salary_3)"/>
    <parameter key="Points_avg" value="avg(DK_Points_1,DK_Points_2,DK_Points_3)"/>
    </list>
    <parameter key="keep_all" value="true"/>
    </operator>
    <operator activated="false" class="subprocess" compatibility="8.0.001" expanded="true" height="68" name="Subprocess" width="90" x="45" y="442">
    <process expanded="true">
    <operator activated="true" class="retrieve" compatibility="8.0.001" expanded="true" height="68" name="Retrieve players_game_passing_df" width="90" x="45" y="136">
    <parameter key="repository_entry" value="../data/players_game_passing_df"/>
    </operator>
    <operator activated="true" class="filter_examples" compatibility="8.0.001" expanded="true" height="103" name="Filter Examples" width="90" x="179" y="136">
    <parameter key="parameter_expression" value=""/>
    <parameter key="condition_class" value="custom_filters"/>
    <parameter key="invert_filter" value="true"/>
    <list key="filters_list">
    <parameter key="filters_entry_key" value="Player_Name.equals.None"/>
    </list>
    <parameter key="filters_logic_and" value="true"/>
    <parameter key="filters_check_metadata" value="true"/>
    </operator>
    <operator activated="true" class="numerical_to_polynominal" compatibility="8.0.001" expanded="true" height="82" name="Numerical to Polynominal" width="90" x="246" y="85">
    <parameter key="attribute_filter_type" value="single"/>
    <parameter key="attribute" value="GameID"/>
    <parameter key="attributes" value=""/>
    <parameter key="use_except_expression" value="false"/>
    <parameter key="value_type" value="numeric"/>
    <parameter key="use_value_type_exception" value="false"/>
    <parameter key="except_value_type" value="real"/>
    <parameter key="block_type" value="value_series"/>
    <parameter key="use_block_type_exception" value="false"/>
    <parameter key="except_block_type" value="value_series_end"/>
    <parameter key="invert_selection" value="false"/>
    <parameter key="include_special_attributes" value="false"/>
    </operator>
    <operator activated="true" class="cut" compatibility="8.0.001" expanded="true" height="82" name="Cut" width="90" x="380" y="85">
    <parameter key="attribute_filter_type" value="single"/>
    <parameter key="attribute" value="GameID"/>
    <parameter key="attributes" value=""/>
    <parameter key="use_except_expression" value="false"/>
    <parameter key="value_type" value="nominal"/>
    <parameter key="use_value_type_exception" value="false"/>
    <parameter key="except_value_type" value="file_path"/>
    <parameter key="block_type" value="single_value"/>
    <parameter key="use_block_type_exception" value="false"/>
    <parameter key="except_block_type" value="single_value"/>
    <parameter key="invert_selection" value="false"/>
    <parameter key="include_special_attributes" value="true"/>
    <parameter key="first_character_index" value="1"/>
    <parameter key="last_character_index" value="8"/>
    </operator>
    <operator activated="true" class="replace" compatibility="8.0.001" expanded="true" height="82" name="Replace" width="90" x="447" y="136">
    <parameter key="attribute_filter_type" value="all"/>
    <parameter key="attribute" value=""/>
    <parameter key="attributes" value=""/>
    <parameter key="use_except_expression" value="false"/>
    <parameter key="value_type" value="nominal"/>
    <parameter key="use_value_type_exception" value="false"/>
    <parameter key="except_value_type" value="file_path"/>
    <parameter key="block_type" value="single_value"/>
    <parameter key="use_block_type_exception" value="false"/>
    <parameter key="except_block_type" value="single_value"/>
    <parameter key="invert_selection" value="false"/>
    <parameter key="include_special_attributes" value="false"/>
    <parameter key="replace_what" value="Inf"/>
    <parameter key="replace_by" value="1000"/>
    </operator>
    <operator activated="true" class="declare_missing_value" compatibility="8.0.001" expanded="true" height="82" name="Declare Missing Value (3)" width="90" x="581" y="136">
    <parameter key="attribute_filter_type" value="all"/>
    <parameter key="attribute" value=""/>
    <parameter key="attributes" value=""/>
    <parameter key="use_except_expression" value="false"/>
    <parameter key="value_type" value="attribute_value"/>
    <parameter key="use_value_type_exception" value="false"/>
    <parameter key="except_value_type" value="time"/>
    <parameter key="block_type" value="attribute_block"/>
    <parameter key="use_block_type_exception" value="false"/>
    <parameter key="except_block_type" value="value_matrix_row_start"/>
    <parameter key="invert_selection" value="false"/>
    <parameter key="include_special_attributes" value="false"/>
    <parameter key="mode" value="nominal"/>
    <parameter key="nominal_value" value="NaN"/>
    <parameter key="expression_value" value=""/>
    </operator>
    <operator activated="true" class="impute_missing_values" compatibility="8.0.001" expanded="true" height="68" name="Impute Missing Values (4)" width="90" x="715" y="136">
    <parameter key="attribute_filter_type" value="all"/>
    <parameter key="attribute" value="DK salary"/>
    <parameter key="attributes" value="DK points|DK salary"/>
    <parameter key="use_except_expression" value="false"/>
    <parameter key="value_type" value="attribute_value"/>
    <parameter key="use_value_type_exception" value="false"/>
    <parameter key="except_value_type" value="time"/>
    <parameter key="block_type" value="attribute_block"/>
    <parameter key="use_block_type_exception" value="false"/>
    <parameter key="except_block_type" value="value_matrix_row_start"/>
    <parameter key="invert_selection" value="false"/>
    <parameter key="include_special_attributes" value="false"/>
    <parameter key="iterate" value="true"/>
    <parameter key="learn_on_complete_cases" value="true"/>
    <parameter key="order" value="chronological"/>
    <parameter key="sort" value="ascending"/>
    <parameter key="use_local_random_seed" value="false"/>
    <parameter key="local_random_seed" value="1992"/>
    <process expanded="true">
    <operator activated="true" class="h2o:gradient_boosted_trees" compatibility="7.6.001" expanded="true" height="103" name="Gradient Boosted Trees (8)" width="90" x="246" y="34">
    <parameter key="number_of_trees" value="20"/>
    <parameter key="reproducible" value="false"/>
    <parameter key="maximum_number_of_threads" value="4"/>
    <parameter key="use_local_random_seed" value="false"/>
    <parameter key="local_random_seed" value="1992"/>
    <parameter key="maximal_depth" value="5"/>
    <parameter key="min_rows" value="10.0"/>
    <parameter key="min_split_improvement" value="0.0"/>
    <parameter key="number_of_bins" value="20"/>
    <parameter key="learning_rate" value="0.13"/>
    <parameter key="sample_rate" value="1.0"/>
    <parameter key="distribution" value="AUTO"/>
    <parameter key="early_stopping" value="false"/>
    <parameter key="stopping_rounds" value="1"/>
    <parameter key="stopping_metric" value="AUTO"/>
    <parameter key="stopping_tolerance" value="0.001"/>
    <parameter key="max_runtime_seconds" value="0"/>
    <list key="expert_parameters"/>
    </operator>
    <connect from_port="example set source" to_op="Gradient Boosted Trees (8)" to_port="training set"/>
    <connect from_op="Gradient Boosted Trees (8)" from_port="model" to_port="model sink"/>
    <portSpacing port="source_example set source" spacing="0"/>
    <portSpacing port="sink_model sink" spacing="0"/>
    </process>
    </operator>
    <operator activated="true" class="nominal_to_numerical" compatibility="8.0.001" expanded="true" height="103" name="Nominal to Numerical (4)" width="90" x="849" y="136">
    <parameter key="return_preprocessing_model" value="false"/>
    <parameter key="create_view" value="false"/>
    <parameter key="attribute_filter_type" value="subset"/>
    <parameter key="attribute" value=""/>
    <parameter key="attributes" value="Air_TD_Rate|Air_TD_per_Comp|Comp_AirYards_per_Comp|EPA_per_Comp|Opponent|Passer_ID|Raw_AirYards_per_Comp|TD_per_Comp|TD_to_Int|WPA_per_Comp|airEPA_per_Comp"/>
    <parameter key="use_except_expression" value="false"/>
    <parameter key="value_type" value="nominal"/>
    <parameter key="use_value_type_exception" value="false"/>
    <parameter key="except_value_type" value="file_path"/>
    <parameter key="block_type" value="single_value"/>
    <parameter key="use_block_type_exception" value="false"/>
    <parameter key="except_block_type" value="single_value"/>
    <parameter key="invert_selection" value="false"/>
    <parameter key="include_special_attributes" value="false"/>
    <parameter key="coding_type" value="unique integers"/>
    <parameter key="use_comparison_groups" value="false"/>
    <list key="comparison_groups"/>
    <parameter key="unexpected_value_handling" value="all 0 and warning"/>
    <parameter key="use_underscore_in_name" value="false"/>
    </operator>
    <operator activated="false" class="subprocess" compatibility="8.0.001" expanded="true" height="82" name="Names" width="90" x="179" y="340">
    <process expanded="true">
    <operator activated="true" class="filter_examples" compatibility="8.0.001" expanded="true" height="103" name="Filter Examples (13)" width="90" x="45" y="34">
    <parameter key="parameter_expression" value=""/>
    <parameter key="condition_class" value="custom_filters"/>
    <parameter key="invert_filter" value="false"/>
    <list key="filters_list">
    <parameter key="filters_entry_key" value="GID.lt.7000"/>
    </list>
    <parameter key="filters_logic_and" value="true"/>
    <parameter key="filters_check_metadata" value="true"/>
    </operator>
    <operator activated="true" class="split" compatibility="8.0.001" expanded="true" height="82" name="Split (2)" width="90" x="179" y="34">
    <parameter key="attribute_filter_type" value="single"/>
    <parameter key="attribute" value="Name"/>
    <parameter key="attributes" value=""/>
    <parameter key="use_except_expression" value="false"/>
    <parameter key="value_type" value="nominal"/>
    <parameter key="use_value_type_exception" value="false"/>
    <parameter key="except_value_type" value="file_path"/>
    <parameter key="block_type" value="single_value"/>
    <parameter key="use_block_type_exception" value="false"/>
    <parameter key="except_block_type" value="single_value"/>
    <parameter key="invert_selection" value="false"/>
    <parameter key="include_special_attributes" value="false"/>
    <parameter key="split_pattern" value=" "/>
    <parameter key="split_mode" value="ordered_split"/>
    </operator>
    <operator activated="true" class="filter_examples" compatibility="8.0.001" expanded="true" height="103" name="Filter Examples (14)" width="90" x="313" y="34">
    <parameter key="parameter_expression" value=""/>
    <parameter key="condition_class" value="custom_filters"/>
    <parameter key="invert_filter" value="false"/>
    <list key="filters_list">
    <parameter key="filters_entry_key" value="Name_3.is_missing."/>
    </list>
    <parameter key="filters_logic_and" value="true"/>
    <parameter key="filters_check_metadata" value="true"/>
    </operator>
    <operator activated="true" class="replace" compatibility="8.0.001" expanded="true" height="82" name="Replace (2)" width="90" x="447" y="34">
    <parameter key="attribute_filter_type" value="single"/>
    <parameter key="attribute" value="Name_1"/>
    <parameter key="attributes" value=""/>
    <parameter key="use_except_expression" value="false"/>
    <parameter key="value_type" value="nominal"/>
    <parameter key="use_value_type_exception" value="false"/>
    <parameter key="except_value_type" value="file_path"/>
    <parameter key="block_type" value="single_value"/>
    <parameter key="use_block_type_exception" value="false"/>
    <parameter key="except_block_type" value="single_value"/>
    <parameter key="invert_selection" value="false"/>
    <parameter key="include_special_attributes" value="false"/>
    <parameter key="replace_what" value=","/>
    </operator>
    <operator activated="true" class="cut" compatibility="8.0.001" expanded="true" height="82" name="Cut (4)" width="90" x="581" y="34">
    <parameter key="attribute_filter_type" value="single"/>
    <parameter key="attribute" value="Name_2"/>
    <parameter key="attributes" value=""/>
    <parameter key="use_except_expression" value="false"/>
    <parameter key="value_type" value="nominal"/>
    <parameter key="use_value_type_exception" value="false"/>
    <parameter key="except_value_type" value="file_path"/>
    <parameter key="block_type" value="single_value"/>
    <parameter key="use_block_type_exception" value="false"/>
    <parameter key="except_block_type" value="single_value"/>
    <parameter key="invert_selection" value="false"/>
    <parameter key="include_special_attributes" value="false"/>
    <parameter key="first_character_index" value="1"/>
    <parameter key="last_character_index" value="1"/>
    </operator>
    <operator activated="true" class="generate_concatenation" compatibility="8.0.001" expanded="true" height="82" name="Generate Concatenation (3)" width="90" x="715" y="34">
    <parameter key="first_attribute" value="Name_2"/>
    <parameter key="second_attribute" value="Name_1"/>
    <parameter key="separator" value="."/>
    <parameter key="trim_values" value="false"/>
    </operator>
    <operator activated="true" class="select_attributes" compatibility="8.0.001" expanded="true" height="82" name="Select Attributes (2)" width="90" x="849" y="34">
    <parameter key="attribute_filter_type" value="subset"/>
    <parameter key="attribute" value="Name_3"/>
    <parameter key="attributes" value="Name_3|Name_2|Name_1"/>
    <parameter key="use_except_expression" value="false"/>
    <parameter key="value_type" value="attribute_value"/>
    <parameter key="use_value_type_exception" value="false"/>
    <parameter key="except_value_type" value="time"/>
    <parameter key="block_type" value="attribute_block"/>
    <parameter key="use_block_type_exception" value="false"/>
    <parameter key="except_block_type" value="value_matrix_row_start"/>
    <parameter key="invert_selection" value="true"/>
    <parameter key="include_special_attributes" value="false"/>
    </operator>
    <operator activated="true" class="rename" compatibility="8.0.001" expanded="true" height="82" name="Rename (8)" width="90" x="983" y="34">
    <parameter key="old_name" value="Name_2.Name_1"/>
    <parameter key="new_name" value="Name"/>
    <list key="rename_additional_attributes"/>
    </operator>
    <operator activated="true" class="cut" compatibility="8.0.001" expanded="true" height="82" name="Cut (5)" width="90" x="581" y="136">
    <parameter key="attribute_filter_type" value="single"/>
    <parameter key="attribute" value="Name_3"/>
    <parameter key="attributes" value=""/>
    <parameter key="use_except_expression" value="false"/>
    <parameter key="value_type" value="nominal"/>
    <parameter key="use_value_type_exception" value="false"/>
    <parameter key="except_value_type" value="file_path"/>
    <parameter key="block_type" value="single_value"/>
    <parameter key="use_block_type_exception" value="false"/>
    <parameter key="except_block_type" value="single_value"/>
    <parameter key="invert_selection" value="false"/>
    <parameter key="include_special_attributes" value="false"/>
    <parameter key="first_character_index" value="1"/>
    <parameter key="last_character_index" value="1"/>
    </operator>
    <operator activated="true" class="generate_concatenation" compatibility="8.0.001" expanded="true" height="82" name="Generate Concatenation (4)" width="90" x="715" y="136">
    <parameter key="first_attribute" value="Name_3"/>
    <parameter key="second_attribute" value="Name_1"/>
    <parameter key="separator" value="."/>
    <parameter key="trim_values" value="false"/>
    </operator>
    <operator activated="true" class="select_attributes" compatibility="8.0.001" expanded="true" height="82" name="Select Attributes (9)" width="90" x="849" y="136">
    <parameter key="attribute_filter_type" value="subset"/>
    <parameter key="attribute" value=""/>
    <parameter key="attributes" value="Name_1|Name_3|Name_2"/>
    <parameter key="use_except_expression" value="false"/>
    <parameter key="value_type" value="attribute_value"/>
    <parameter key="use_value_type_exception" value="false"/>
    <parameter key="except_value_type" value="time"/>
    <parameter key="block_type" value="attribute_block"/>
    <parameter key="use_block_type_exception" value="false"/>
    <parameter key="except_block_type" value="value_matrix_row_start"/>
    <parameter key="invert_selection" value="true"/>
    <parameter key="include_special_attributes" value="false"/>
    </operator>
    <operator activated="true" class="rename" compatibility="8.0.001" expanded="true" height="82" name="Rename (9)" width="90" x="983" y="136">
    <parameter key="old_name" value="Name_3.Name_1"/>
    <parameter key="new_name" value="Name"/>
    <list key="rename_additional_attributes"/>
    </operator>
    <operator activated="true" class="append" compatibility="8.0.001" expanded="true" height="103" name="Append (7)" width="90" x="1117" y="85">
    <parameter key="datamanagement" value="double_array"/>
    <parameter key="data_management" value="auto"/>
    <parameter key="merge_type" value="all"/>
    </operator>
    <connect from_port="in 1" to_op="Filter Examples (13)" to_port="example set input"/>
    <connect from_op="Filter Examples (13)" from_port="example set output" to_op="Split (2)" to_port="example set input"/>
    <connect from_op="Split (2)" from_port="example set output" to_op="Filter Examples (14)" to_port="example set input"/>
    <connect from_op="Filter Examples (14)" from_port="example set output" to_op="Replace (2)" to_port="example set input"/>
    <connect from_op="Filter Examples (14)" from_port="unmatched example set" to_op="Cut (5)" to_port="example set input"/>
    <connect from_op="Replace (2)" from_port="example set output" to_op="Cut (4)" to_port="example set input"/>
    <connect from_op="Cut (4)" from_port="example set output" to_op="Generate Concatenation (3)" to_port="example set input"/>
    <connect from_op="Generate Concatenation (3)" from_port="example set output" to_op="Select Attributes (2)" to_port="example set input"/>
    <connect from_op="Select Attributes (2)" from_port="example set output" to_op="Rename (8)" to_port="example set input"/>
    <connect from_op="Rename (8)" from_port="example set output" to_op="Append (7)" to_port="example set 1"/>
    <connect from_op="Cut (5)" from_port="example set output" to_op="Generate Concatenation (4)" to_port="example set input"/>
    <connect from_op="Generate Concatenation (4)" from_port="example set output" to_op="Select Attributes (9)" to_port="example set input"/>
    <connect from_op="Select Attributes (9)" from_port="example set output" to_op="Rename (9)" to_port="example set input"/>
    <connect from_op="Rename (9)" from_port="example set output" to_op="Append (7)" to_port="example set 2"/>
    <connect from_op="Append (7)" from_port="merged set" to_port="out 1"/>
    <portSpacing port="source_in 1" spacing="0"/>
    <portSpacing port="source_in 2" spacing="0"/>
    <portSpacing port="sink_out 1" spacing="0"/>
    <portSpacing port="sink_out 2" spacing="0"/>
    </process>
    </operator>
    <connect from_op="Retrieve players_game_passing_df" from_port="output" to_op="Filter Examples" to_port="example set input"/>
    <connect from_op="Filter Examples" from_port="example set output" to_op="Numerical to Polynominal" to_port="example set input"/>
    <connect from_op="Numerical to Polynominal" from_port="example set output" to_op="Cut" to_port="example set input"/>
    <connect from_op="Cut" from_port="example set output" to_op="Replace" to_port="example set input"/>
    <connect from_op="Replace" from_port="example set output" to_op="Declare Missing Value (3)" to_port="example set input"/>
    <connect from_op="Declare Missing Value (3)" from_port="example set output" to_op="Impute Missing Values (4)" to_port="example set in"/>
    <connect from_op="Impute Missing Values (4)" from_port="example set out" to_op="Nominal to Numerical (4)" to_port="example set input"/>
    <portSpacing port="source_in 1" spacing="0"/>
    <portSpacing port="sink_out 1" spacing="0"/>
    </process>
    </operator>
    <connect from_op="Retrieve week results 2014 thru week 8 2017 FINAL" from_port="output" to_op="Free Memory" to_port="through 1"/>
    <connect from_op="Free Memory" from_port="through 1" to_op="Filter Examples (2)" to_port="example set input"/>
    <connect from_op="Filter Examples (2)" from_port="example set output" to_op="Declare Missing Value" to_port="example set input"/>
    <connect from_op="Declare Missing Value" from_port="example set output" to_op="Nominal to Numerical" to_port="example set input"/>
    <connect from_op="Nominal to Numerical" from_port="example set output" to_op="Impute Missing Values (2)" to_port="example set in"/>
    <connect from_op="Impute Missing Values (2)" from_port="example set out" to_op="Generate Attributes" to_port="example set input"/>
    <connect from_op="Generate Attributes" from_port="example set output" to_op="Set Role" to_port="example set input"/>
    <connect from_op="Set Role" from_port="example set output" to_op="Rename (5)" to_port="example set input"/>
    <connect from_op="Rename (5)" from_port="example set output" to_op="Group Into Collection" to_port="exa"/>
    <connect from_op="Group Into Collection" from_port="col" to_op="Loop Collection" to_port="collection"/>
    <connect from_op="Loop Collection" from_port="output 1" to_op="Append (6)" to_port="example set 1"/>
    <connect from_op="Append (6)" from_port="merged set" to_op="Generate Attributes (3)" to_port="example set input"/>
    <connect from_op="Generate Attributes (3)" from_port="example set output" to_port="out 1"/>
    <portSpacing port="source_in 1" spacing="0"/>
    <portSpacing port="sink_out 1" spacing="0"/>
    <portSpacing port="sink_out 2" spacing="0"/>
    </process>
    </operator>
    </process>
    <?xml version="1.0" encoding="UTF-8"?><process version="8.0.001">
    <operator activated="true" class="subprocess" compatibility="8.0.001" expanded="true" height="82" name="Data (2)" width="90" x="45" y="187">
    <process expanded="true">
    <operator activated="true" class="retrieve" compatibility="8.0.001" expanded="true" height="68" name="Retrieve week results 2014 thru week 8 2017 FINAL (2)" width="90" x="45" y="85">
    <parameter key="repository_entry" value="../data/week results 2014 thru week 8 2017 FINAL"/>
    </operator>
    <operator activated="true" class="free_memory" compatibility="8.0.001" expanded="true" height="82" name="Free Memory (2)" width="90" x="179" y="85"/>
    <operator activated="true" class="filter_examples" compatibility="8.0.001" expanded="true" height="103" name="Filter Examples (4)" width="90" x="313" y="85">
    <parameter key="parameter_expression" value=""/>
    <parameter key="condition_class" value="custom_filters"/>
    <parameter key="invert_filter" value="false"/>
    <list key="filters_list">
    <parameter key="filters_entry_key" value="GID.gt.7000"/>
    </list>
    <parameter key="filters_logic_and" value="false"/>
    <parameter key="filters_check_metadata" value="true"/>
    </operator>
    <operator activated="true" class="declare_missing_value" compatibility="8.0.001" expanded="true" height="82" name="Declare Missing Value (2)" width="90" x="447" y="85">
    <parameter key="attribute_filter_type" value="subset"/>
    <parameter key="attribute" value="DK salary"/>
    <parameter key="attributes" value="DK salary|DK points"/>
    <parameter key="use_except_expression" value="false"/>
    <parameter key="value_type" value="attribute_value"/>
    <parameter key="use_value_type_exception" value="false"/>
    <parameter key="except_value_type" value="time"/>
    <parameter key="block_type" value="attribute_block"/>
    <parameter key="use_block_type_exception" value="false"/>
    <parameter key="except_block_type" value="value_matrix_row_start"/>
    <parameter key="invert_selection" value="false"/>
    <parameter key="include_special_attributes" value="false"/>
    <parameter key="mode" value="numeric"/>
    <parameter key="numeric_value" value="0.0"/>
    <parameter key="expression_value" value=""/>
    </operator>
    <operator activated="true" class="nominal_to_numerical" compatibility="8.0.001" expanded="true" height="103" name="Nominal to Numerical (3)" width="90" x="581" y="85">
    <parameter key="return_preprocessing_model" value="false"/>
    <parameter key="create_view" value="false"/>
    <parameter key="attribute_filter_type" value="all"/>
    <parameter key="attribute" value="Team"/>
    <parameter key="attributes" value="Name|Oppt|Pos|Team|homeAway|week_total"/>
    <parameter key="use_except_expression" value="false"/>
    <parameter key="value_type" value="nominal"/>
    <parameter key="use_value_type_exception" value="false"/>
    <parameter key="except_value_type" value="file_path"/>
    <parameter key="block_type" value="single_value"/>
    <parameter key="use_block_type_exception" value="false"/>
    <parameter key="except_block_type" value="single_value"/>
    <parameter key="invert_selection" value="false"/>
    <parameter key="include_special_attributes" value="false"/>
    <parameter key="coding_type" value="unique integers"/>
    <parameter key="use_comparison_groups" value="false"/>
    <list key="comparison_groups"/>
    <parameter key="unexpected_value_handling" value="all 0 and warning"/>
    <parameter key="use_underscore_in_name" value="false"/>
    </operator>
    <operator activated="true" class="impute_missing_values" compatibility="8.0.001" expanded="true" height="68" name="Impute Missing Values (3)" width="90" x="715" y="85">
    <parameter key="attribute_filter_type" value="subset"/>
    <parameter key="attribute" value="DK salary"/>
    <parameter key="attributes" value="DK points|DK salary"/>
    <parameter key="use_except_expression" value="false"/>
    <parameter key="value_type" value="attribute_value"/>
    <parameter key="use_value_type_exception" value="false"/>
    <parameter key="except_value_type" value="time"/>
    <parameter key="block_type" value="attribute_block"/>
    <parameter key="use_block_type_exception" value="false"/>
    <parameter key="except_block_type" value="value_matrix_row_start"/>
    <parameter key="invert_selection" value="false"/>
    <parameter key="include_special_attributes" value="false"/>
    <parameter key="iterate" value="true"/>
    <parameter key="learn_on_complete_cases" value="true"/>
    <parameter key="order" value="chronological"/>
    <parameter key="sort" value="ascending"/>
    <parameter key="use_local_random_seed" value="false"/>
    <parameter key="local_random_seed" value="1992"/>
    <process expanded="true">
    <operator activated="true" class="h2o:gradient_boosted_trees" compatibility="7.6.001" expanded="true" height="103" name="Gradient Boosted Trees (7)" width="90" x="246" y="34">
    <parameter key="number_of_trees" value="20"/>
    <parameter key="reproducible" value="false"/>
    <parameter key="maximum_number_of_threads" value="4"/>
    <parameter key="use_local_random_seed" value="false"/>
    <parameter key="local_random_seed" value="1992"/>
    <parameter key="maximal_depth" value="5"/>
    <parameter key="min_rows" value="10.0"/>
    <parameter key="min_split_improvement" value="0.0"/>
    <parameter key="number_of_bins" value="20"/>
    <parameter key="learning_rate" value="0.13"/>
    <parameter key="sample_rate" value="1.0"/>
    <parameter key="distribution" value="AUTO"/>
    <parameter key="early_stopping" value="false"/>
    <parameter key="stopping_rounds" value="1"/>
    <parameter key="stopping_metric" value="AUTO"/>
    <parameter key="stopping_tolerance" value="0.001"/>
    <parameter key="max_runtime_seconds" value="0"/>
    <list key="expert_parameters"/>
    </operator>
    <connect from_port="example set source" to_op="Gradient Boosted Trees (7)" to_port="training set"/>
    <connect from_op="Gradient Boosted Trees (7)" from_port="model" to_port="model sink"/>
    <portSpacing port="source_example set source" spacing="0"/>
    <portSpacing port="sink_model sink" spacing="0"/>
    </process>
    </operator>
    <operator activated="true" class="generate_attributes" compatibility="8.0.001" expanded="true" height="82" name="Generate Attributes (4)" width="90" x="849" y="85">
    <list key="function_descriptions">
    <parameter key="FPTS_Ratio" value="[DK points]/([DK salary]/1000)"/>
    <parameter key="week_total" value="(Year - 2000) * 17 + Week"/>
    </list>
    <parameter key="keep_all" value="true"/>
    <description align="center" color="transparent" colored="false" width="126">create FPTS_Ratio attribute</description>
    </operator>
    <operator activated="true" class="set_role" compatibility="8.0.001" expanded="true" height="82" name="Set Role (2)" width="90" x="983" y="85">
    <parameter key="attribute_name" value="FPTS_Ratio"/>
    <parameter key="target_role" value="label"/>
    <list key="set_additional_roles"/>
    <description align="center" color="transparent" colored="false" width="126">set FPTS_Ratio as target</description>
    </operator>
    <operator activated="true" class="rename" compatibility="8.0.001" expanded="true" height="82" name="Rename (7)" width="90" x="916" y="289">
    <parameter key="old_name" value="DK points"/>
    <parameter key="new_name" value="Points"/>
    <list key="rename_additional_attributes"/>
    </operator>
    <connect from_op="Retrieve week results 2014 thru week 8 2017 FINAL (2)" from_port="output" to_op="Free Memory (2)" to_port="through 1"/>
    <connect from_op="Free Memory (2)" from_port="through 1" to_op="Filter Examples (4)" to_port="example set input"/>
    <connect from_op="Filter Examples (4)" from_port="example set output" to_op="Declare Missing Value (2)" to_port="example set input"/>
    <connect from_op="Declare Missing Value (2)" from_port="example set output" to_op="Nominal to Numerical (3)" to_port="example set input"/>
    <connect from_op="Nominal to Numerical (3)" from_port="example set output" to_op="Impute Missing Values (3)" to_port="example set in"/>
    <connect from_op="Impute Missing Values (3)" from_port="example set out" to_op="Generate Attributes (4)" to_port="example set input"/>
    <connect from_op="Generate Attributes (4)" from_port="example set output" to_op="Set Role (2)" to_port="example set input"/>
    <connect from_op="Set Role (2)" from_port="example set output" to_op="Rename (7)" to_port="example set input"/>
    <connect from_op="Rename (7)" from_port="example set output" to_port="out 1"/>
    <portSpacing port="source_in 1" spacing="0"/>
    <portSpacing port="sink_out 1" spacing="0"/>
    <portSpacing port="sink_out 2" spacing="0"/>
    </process>
    </operator>
    </process>
    <?xml version="1.0" encoding="UTF-8"?><process version="8.0.001">
    <operator activated="true" class="subprocess" compatibility="8.0.001" expanded="true" height="82" name="Model (2)" width="90" x="179" y="187">
    <process expanded="true">
    <operator activated="true" class="filter_examples" compatibility="8.0.001" expanded="true" height="103" name="Filter Examples (10)" width="90" x="45" y="85">
    <parameter key="parameter_expression" value=""/>
    <parameter key="condition_class" value="custom_filters"/>
    <parameter key="invert_filter" value="true"/>
    <list key="filters_list">
    <parameter key="filters_entry_key" value="Year.eq.2017"/>
    <parameter key="filters_entry_key" value="Week.ge.5"/>
    <parameter key="filters_entry_key" value="Week.le.8"/>
    </list>
    <parameter key="filters_logic_and" value="true"/>
    <parameter key="filters_check_metadata" value="true"/>
    </operator>
    <operator activated="true" class="select_attributes" compatibility="8.0.001" expanded="true" height="82" name="Select Attributes (5)" width="90" x="179" y="34">
    <parameter key="attribute_filter_type" value="subset"/>
    <parameter key="attribute" value=""/>
    <parameter key="attributes" value="Points|Pos|Team"/>
    <parameter key="use_except_expression" value="false"/>
    <parameter key="value_type" value="attribute_value"/>
    <parameter key="use_value_type_exception" value="false"/>
    <parameter key="except_value_type" value="time"/>
    <parameter key="block_type" value="attribute_block"/>
    <parameter key="use_block_type_exception" value="false"/>
    <parameter key="except_block_type" value="value_matrix_row_start"/>
    <parameter key="invert_selection" value="true"/>
    <parameter key="include_special_attributes" value="false"/>
    </operator>
    <operator activated="true" class="stacking" compatibility="8.0.001" expanded="true" height="68" name="Stacking" width="90" x="313" y="34">
    <parameter key="keep_all_attributes" value="true"/>
    <process expanded="true">
    <operator activated="true" class="h2o:gradient_boosted_trees" compatibility="7.6.001" expanded="true" height="103" name="Gradient Boosted Trees (13)" width="90" x="112" y="34">
    <parameter key="number_of_trees" value="5"/>
    <parameter key="reproducible" value="false"/>
    <parameter key="maximum_number_of_threads" value="4"/>
    <parameter key="use_local_random_seed" value="false"/>
    <parameter key="local_random_seed" value="1992"/>
    <parameter key="maximal_depth" value="6"/>
    <parameter key="min_rows" value="10.0"/>
    <parameter key="min_split_improvement" value="0.0"/>
    <parameter key="number_of_bins" value="10"/>
    <parameter key="learning_rate" value="0.159"/>
    <parameter key="sample_rate" value="1.0"/>
    <parameter key="distribution" value="AUTO"/>
    <parameter key="early_stopping" value="false"/>
    <parameter key="stopping_rounds" value="1"/>
    <parameter key="stopping_metric" value="AUTO"/>
    <parameter key="stopping_tolerance" value="0.001"/>
    <parameter key="max_runtime_seconds" value="0"/>
    <list key="expert_parameters"/>
    </operator>
    <operator activated="true" class="k_nn" compatibility="8.0.001" expanded="true" height="82" name="k-NN (2)" width="90" x="112" y="136">
    <parameter key="k" value="11"/>
    <parameter key="weighted_vote" value="false"/>
    <parameter key="measure_types" value="NumericalMeasures"/>
    <parameter key="mixed_measure" value="MixedEuclideanDistance"/>
    <parameter key="nominal_measure" value="NominalDistance"/>
    <parameter key="numerical_measure" value="EuclideanDistance"/>
    <parameter key="divergence" value="SquaredLoss"/>
    <parameter key="kernel_type" value="radial"/>
    <parameter key="kernel_gamma" value="1.0"/>
    <parameter key="kernel_sigma1" value="1.0"/>
    <parameter key="kernel_sigma2" value="0.0"/>
    <parameter key="kernel_sigma3" value="2.0"/>
    <parameter key="kernel_degree" value="3.0"/>
    <parameter key="kernel_shift" value="1.0"/>
    <parameter key="kernel_a" value="1.0"/>
    <parameter key="kernel_b" value="0.0"/>
    </operator>
    <operator activated="true" class="h2o:gradient_boosted_trees" compatibility="7.6.001" expanded="true" height="103" name="Gradient Boosted Trees (14)" width="90" x="112" y="238">
    <parameter key="number_of_trees" value="5"/>
    <parameter key="reproducible" value="false"/>
    <parameter key="maximum_number_of_threads" value="4"/>
    <parameter key="use_local_random_seed" value="false"/>
    <parameter key="local_random_seed" value="1992"/>
    <parameter key="maximal_depth" value="6"/>
    <parameter key="min_rows" value="10.0"/>
    <parameter key="min_split_improvement" value="0.0"/>
    <parameter key="number_of_bins" value="10"/>
    <parameter key="learning_rate" value="0.159"/>
    <parameter key="sample_rate" value="1.0"/>
    <parameter key="distribution" value="AUTO"/>
    <parameter key="early_stopping" value="false"/>
    <parameter key="stopping_rounds" value="1"/>
    <parameter key="stopping_metric" value="AUTO"/>
    <parameter key="stopping_tolerance" value="0.001"/>
    <parameter key="max_runtime_seconds" value="0"/>
    <list key="expert_parameters"/>
    </operator>
    <operator activated="true" class="k_nn" compatibility="8.0.001" expanded="true" height="82" name="k-NN (3)" width="90" x="112" y="340">
    <parameter key="k" value="11"/>
    <parameter key="weighted_vote" value="false"/>
    <parameter key="measure_types" value="NumericalMeasures"/>
    <parameter key="mixed_measure" value="MixedEuclideanDistance"/>
    <parameter key="nominal_measure" value="NominalDistance"/>
    <parameter key="numerical_measure" value="EuclideanDistance"/>
    <parameter key="divergence" value="SquaredLoss"/>
    <parameter key="kernel_type" value="radial"/>
    <parameter key="kernel_gamma" value="1.0"/>
    <parameter key="kernel_sigma1" value="1.0"/>
    <parameter key="kernel_sigma2" value="0.0"/>
    <parameter key="kernel_sigma3" value="2.0"/>
    <parameter key="kernel_degree" value="3.0"/>
    <parameter key="kernel_shift" value="1.0"/>
    <parameter key="kernel_a" value="1.0"/>
    <parameter key="kernel_b" value="0.0"/>
    </operator>
    <connect from_port="training set 1" to_op="Gradient Boosted Trees (13)" to_port="training set"/>
    <connect from_port="training set 2" to_op="k-NN (2)" to_port="training set"/>
    <connect from_port="training set 3" to_op="Gradient Boosted Trees (14)" to_port="training set"/>
    <connect from_port="training set 4" to_op="k-NN (3)" to_port="training set"/>
    <connect from_op="Gradient Boosted Trees (13)" from_port="model" to_port="base model 1"/>
    <connect from_op="k-NN (2)" from_port="model" to_port="base model 2"/>
    <connect from_op="Gradient Boosted Trees (14)" from_port="model" to_port="base model 3"/>
    <connect from_op="k-NN (3)" from_port="model" to_port="base model 4"/>
    <portSpacing port="source_training set 1" spacing="0"/>
    <portSpacing port="source_training set 2" spacing="0"/>
    <portSpacing port="source_training set 3" spacing="0"/>
    <portSpacing port="source_training set 4" spacing="0"/>
    <portSpacing port="source_training set 5" spacing="0"/>
    <portSpacing port="sink_base model
  • maros_plsikmaros_plsik Member Posts: 4 Contributor I

    Finally! The process is in the template.

    Two more things:

    1) Scott, is there any way to copy operators from one process file to another? Except of copying parts from one .xml to another -> it's still quite a lot of work if the versions of files are different. 

    2) It was very simple to work with template but I found it quite limiting. My process was firstly divided into two parts (for Players and for Defense - GID>7000). I was getting quite good results with the process, but unfortunately there was the limit of using only one model for the whole dataset, so I had to disable about a half of my operators including one model. Nevertheless, the challenge was very well prepared and I hope there will be more in the future :)

  • sgenzersgenzer Administrator, Moderator, Employee, RapidMiner Certified Analyst, Community Manager, Member, University Professor, PM Moderator Posts: 2,959 Community Manager

    ok this competition is CLOSED.  Thank you all for your submissions!  Stay tuned to see who our winner will be!

     

    Scott

     

     

  • sgenzersgenzer Administrator, Moderator, Employee, RapidMiner Certified Analyst, Community Manager, Member, University Professor, PM Moderator Posts: 2,959 Community Manager

    hello all - first of all THANK YOU @maros_plsik @yzan @florian_ziegler for your submissions.  I can confirm that they all work (yes even yours @yzan although it locked down my machine for several hours!) and hence it's only a matter of scoring.  Week 16 ended yesterday so I will be working on this today and tomorrow to get the final RSMEs published.

     

    Interesting side note: I took each of your models and had it give me predicted FPTSRatios for Week 16 BEFORE the games took place, and picked a fantasy football team for each model. My algorithm was somewhat fudged because there are other aspects to choosing a team besides FPTSRatio - in particular, the budget.  You see, if you pick purely FPTSRatio. Here's what happened:

     

    @yzan

     

    According to model choosing best FPTSRatio for each slot, I get:

     

    QB N. Peterman (pred FPTSRatio = 3.652, salary = $4500)

    RB K. Hunt (pred FPTSRatio = 2.663, salary = $8400)

    RB T. Gurley (pred FPTSRatio = 2.655, salary = $9100)

    WR D. Bryant (pred FPTSRatio = 2.647, salary = $6000)

    WR K. Wright (pred FPTSRatio = 2.410, salary = $3800)

    WR S. Sterling (pred FPTSRatio = 2.351, salary = $6600)

    TE G. Olsen (pred FPTSRatio = 2.507, salary = $5200)

    FLEX M. Gordon (pred FPTSRatio = 2.654, salary = $7200)

    DST Detroit Lions (pred FPTSRatio = 4.949, salary = $2900)

    Total salary: $53,700

     

    So I'm over by $3700 PLUS (and this is where things get interesting), DraftKings listed three of these players as "Questionable" to play due to injuries: T. Gurley, S. Sterling, and M. Gordon.  So I overruled the predictive model and chose the next highest ranked players to fill those slots AND make the salary fall under $50,000:

     

    yzan.pngyzan's model applied to DraftKings for Week 16

    And here's what happened:

     

    Screen Shot 2017-12-26 at 10.56.04 AM.pngresults for Week 16 with modified yzan model

    so basically we got killed.  :)  HOWEVER what if I did not overrule the model for "questionable" players and simply kept reducing salaries until I fell under $50,000 PLUS eliminating N. Peterman (if I knew anything about football, I would have known that he had zero chance of playing this week),  I get this:

     

    QB M. Trubisky (pred FPTSRatio = 3.100, salary = $4700) -> 18.12 FPTS

    RB M. Gordon (pred FPTSRatio = 2.654, salary = $7200) -> 21.8 FPTS

    RB C. McCaffrey (pred FPTSRatio = 2.483, salary = $6400) -> 7.8 FPTS

    WR D. Parker (pred FPTSRatio = 2.340, salary = $4200) -> 11.3 FPTS

    WR K. Wright (pred FPTSRatio = 2.410, salary = $3800) -> 6.7 FPTS

    WR S. Sterling (pred FPTSRatio = 2.351, salary = $6600) -> 9.5 FPTS

    TE G. Olsen (pred FPTSRatio = 2.507, salary = $5200) -> 5.7 FPTS

    FLEX T. Gurley (pred FPTSRatio = 2.655, salary = $9100) -> 55.6 FPTS

    DST Detroit Lions (pred FPTSRatio = 4.949, salary = $2900) -> 12 FPTS

    Total salary: $50,000

    Total fantasy points: 148.52 - moving from 7553rd place to 1450th place

     

    OK that's still terrible.  But here's what is interesting... almost EVERY top players for Week 16 were predicted a very high FPTSRatio by at least ONE of the three models.  It's too long to explain here but when I looked at the results, I recognized almost every name who did very well.  And furthermore you must note that all three models had a RSME somewhere in the 1.0-2.0 range which makes a huge difference as you can see above.  Food for thought.

     

    Anyway thanks all for a very interesting competition.  Final results soon...


    Scott

     

     

     

  • sgenzersgenzer Administrator, Moderator, Employee, RapidMiner Certified Analyst, Community Manager, Member, University Professor, PM Moderator Posts: 2,959 Community Manager

    OK HERE ARE THE FINAL RESULTS FOR COMPETITION 3: FANTASY FOOTBALL:

     

    1st place: @maros_plsik - RSME = 1.394

    2nd place: @yzan - RSME = 1.417

    3rd place: @florian_ziegler - RSME = 1.539

     

    Congratulations to all of you. VISA gift cards will be issued as soon as we can.

     

    Stay tuned for Competition 4...   :)

     

    Scott

     

  • maros_plsikmaros_plsik Member Posts: 4 Contributor I

    Hey all,

    Thank you very much for the competition and for your work, @sgenzer :). And congratulation on 2nd and 3rd places, @yzan and @florian_ziegler.

    Looking forward to the next competition.

     

    Best regards,

    Maros

     

  • sgenzersgenzer Administrator, Moderator, Employee, RapidMiner Certified Analyst, Community Manager, Member, University Professor, PM Moderator Posts: 2,959 Community Manager

    You're very welcome.  And please help spread the word for us - we can't have the same people winning ALL the time!  :)

     

    Scott

     

Sign In or Register to comment.