# Code you have previously used to load data
import pandas as pd

# Path of the file to read
iowa_file_path = '../input/home-data-for-ml-course/train.csv'

home_data = pd.read_csv(iowa_file_path)

# Set up code checking
from learntools.core import binder
binder.bind(globals())
from learntools.machine_learning.ex3 import *

print("Setup Complete")

"""
Explanation: Recap
So far, you have loaded your data and reviewed it with the following code. Run this cell to set up your coding environment where the previous step left off.
End of explanation
"""


# print the list of columns in the dataset to find the name of the prediction target


y = ____

# Check your answer
step_1.check()

# The lines below will show you a hint or the solution.
# step_1.hint() 
# step_1.solution()

#%%RM_IF(PROD)%%
y = home_data.SalePrice
step_1.assert_check_passed()

"""
Explanation: Exercises
Step 1: Specify Prediction Target
Select the target variable, which corresponds to the sales price. Save this to a new variable called y. You'll need to print a list of the columns to find the name of the column you need.
End of explanation
"""


# Create the list of features below
feature_names = ___

# Select data corresponding to features in feature_names
X = ____

# Check your answer
step_2.check()

# step_2.hint()
# step_2.solution()

#%%RM_IF(PROD)%%

# Create the list of features below
feature_names = ["LotArea", "YearBuilt", "1stFlrSF", "2ndFlrSF",
                      "FullBath", "BedroomAbvGr", "TotRmsAbvGrd"]

# select data corresponding to features in feature_names
X = home_data[feature_names]
print("Correct")
step_2.assert_check_passed()

"""
Explanation: Step 2: Create X
Now you will create a DataFrame called X holding the predictive features.
Since you want only some columns from the original data, you'll first create a list with the names of the columns you want in X.
You'll use just the following columns in the list (you can copy and paste the whole list to save some typing, though you'll still need to add quotes):
  * LotArea
  * YearBuilt
  * 1stFlrSF
  * 2ndFlrSF
  * FullBath
  * BedroomAbvGr
  * TotRmsAbvGrd
After you've created that list of features, use it to create the DataFrame that you'll use to fit the model.
End of explanation
"""


# Review data
# print description or statistics from X
#print(_)

# print the top few lines
#print(_)

"""
Explanation: Review Data
Before building a model, take a quick look at X to verify it looks sensible
End of explanation
"""


# from _ import _
#specify the model. 
#For model reproducibility, set a numeric value for random_state when specifying the model
iowa_model = ____

# Fit the model
____

# Check your answer
step_3.check()

# step_3.hint()
# step_3.solution()

#%%RM_IF(PROD)%%

from sklearn.tree import DecisionTreeRegressor
iowa_model = DecisionTreeRegressor(random_state=1)
print("Incorrect")
step_3.assert_check_failed()

#%%RM_IF(PROD)%%
iowa_model.fit(X,y)
step_3.check()

#%%RM_IF(PROD)%%
step_3.hint()

"""
Explanation: Step 3: Specify and Fit Model
Create a DecisionTreeRegressor and save it iowa_model. Ensure you've done the relevant import from sklearn to run this command.
Then fit the model you just created using the data in X and y that you saved above.
End of explanation
"""


predictions = ____
print(predictions)

# Check your answer
step_4.check()

# step_4.hint()
# step_4.solution()

#%%RM_IF(PROD)%%
predictions = iowa_model.predict(X)
step_4.assert_check_passed()

"""
Explanation: Step 4: Make Predictions
Make predictions with the model's predict command using X as the data. Save the results to a variable called predictions.
End of explanation
"""


# You can write code in this cell


"""
Explanation: Think About Your Results
Use the head method to compare the top few predictions to the actual home values (in y) for those same homes. Anything surprising?
End of explanation
"""


