<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Predicting the house prices data set for king county
Loading graphlab
Step1:  Load some house sales data
Dataset is from house sales in King County, the region where the city of Seattle, WA is located.
Step2:  Exploring the data for housing sales
The house price is correlated with the number of square feet of living space.
Step3:  Create a simple regression model of sqft_living to price
Split data into training and testing, for spliting dataset of the at a particuler point we are using seed. So
We set some what seed=123 so that everyone running this notebook gets the same results.  In practice, you may set a random seed (or let GraphLab Create pick a random seed for you).
Step4:  Build the regression model using only sqft_living as a feature and
-called model as sqft_model and use feature sqft_living
Step5:  Evaluate the simple model
Step6:  RMSE of about \$255,170!
Let's show what our predictions look like
Matplotlib is a Python plotting library that is also useful for plotting. import it for ploting
Step7:  plot a graph between the price and sqrt_living
and a graph between sqrt_living and predict price by the model
Step8:  Above
Step9:  Explore other features in the data
To build a more elaborate model, we will explore using more features.
Step10:  Pull the bar at the bottom to view more of the data.  
98039 is the most expensive zip code.
Build a regression model with more features
Step11:  Comparing the results of the simple model with adding more features
Step12:  The RMSE goes down from \$255,170 to \$179,508 with more features.
Apply learned models to predict prices of 3 houses
The first house we will use is considered an "average" house in Seattle.
Step13:  <img src="http
Step14:  In this case, the model with more features provides a worse prediction than the simpler model with only 1 feature.  However, on average, the model with more features is better.
Prediction for a second, fancier house
We will now examine the predictions for a fancier house.
Step15:  <img src="https
Step16:  In this case, the model with more features provides a better prediction.  This behavior is expected here, because this house is more differentiated by features that go beyond its square feet of living space, especially the fact that it's a waterfront house. 
Last house, super fancy
Our last house is a very large one owned by a famous Seattleite.
Step17:  <img src="https
Step18:  The model predicts a price of over $13M for this house! But we expect the house to cost much more.  (There are very few samples in the dataset of houses that are this fancy, so we don't expect the model to capture a perfect prediction here.)
Now let's build a model with some advance feature
Step19:  here you can see the there is no difference between the my_features_model and advanced_features_model
Now let predict the price of the house with our new model
<ASSISTANT_TASK:>
Python Code:
import graphlab
Explanation: Predicting the house prices data set for king county
Loading graphlab
End of explanation
sales = graphlab.SFrame('home_data.gl/')
sales.head(5)
Explanation: Load some house sales data
Dataset is from house sales in King County, the region where the city of Seattle, WA is located.
End of explanation
graphlab.canvas.set_target('ipynb')
sales.show(view="Scatter Plot", x="sqft_living", y="price")
Explanation: Exploring the data for housing sales
The house price is correlated with the number of square feet of living space.
End of explanation
train_data,test_data = sales.random_split(.8,seed=123)
Explanation: Create a simple regression model of sqft_living to price
Split data into training and testing, for spliting dataset of the at a particuler point we are using seed. So
We set some what seed=123 so that everyone running this notebook gets the same results.  In practice, you may set a random seed (or let GraphLab Create pick a random seed for you).
End of explanation
sqft_model = graphlab.linear_regression.create(train_data, target='price', features=['sqft_living'],validation_set=None)
Explanation: Build the regression model using only sqft_living as a feature and
-called model as sqft_model and use feature sqft_living
End of explanation
print test_data['price'].mean()
print sqft_model.evaluate(test_data)
Explanation: Evaluate the simple model
End of explanation
import matplotlib.pyplot as plt
%matplotlib inline
Explanation: RMSE of about \$255,170!
Let's show what our predictions look like
Matplotlib is a Python plotting library that is also useful for plotting. import it for ploting
End of explanation
plt.plot(test_data['sqft_living'],test_data['price'],'.',
        test_data['sqft_living'],sqft_model.predict(test_data),'-')
Explanation: plot a graph between the price and sqrt_living
and a graph between sqrt_living and predict price by the model
End of explanation
sqft_model.get('coefficients')
Explanation: Above:  blue dots are original data, green line is the prediction from the simple regression.
Below: we can view the learned regression coefficients.
End of explanation
my_features = ['bedrooms', 'bathrooms', 'sqft_living', 'sqft_lot', 'floors', 'zipcode']
sales[my_features].show()
sales.show(view='BoxWhisker Plot', x='zipcode', y='price')
Explanation: Explore other features in the data
To build a more elaborate model, we will explore using more features.
End of explanation
my_features_model = graphlab.linear_regression.create(train_data,target='price',features=my_features,validation_set=None)
print my_features
Explanation: Pull the bar at the bottom to view more of the data.  
98039 is the most expensive zip code.
Build a regression model with more features
End of explanation
print sqft_model.evaluate(test_data)
print my_features_model.evaluate(test_data)
Explanation: Comparing the results of the simple model with adding more features
End of explanation
house1 = sales[sales['id']=='5309101200']
house1
Explanation: The RMSE goes down from \$255,170 to \$179,508 with more features.
Apply learned models to predict prices of 3 houses
The first house we will use is considered an "average" house in Seattle.
End of explanation
print house1['price']
print sqft_model.predict(house1)
print my_features_model.predict(house1)
Explanation: <img src="http://info.kingcounty.gov/Assessor/eRealProperty/MediaHandler.aspx?Media=2916871">
End of explanation
house2 = sales[sales['id']=='1925069082']
house2
Explanation: In this case, the model with more features provides a worse prediction than the simpler model with only 1 feature.  However, on average, the model with more features is better.
Prediction for a second, fancier house
We will now examine the predictions for a fancier house.
End of explanation
print sqft_model.predict(house2)
print my_features_model.predict(house2)
Explanation: <img src="https://ssl.cdn-redfin.com/photo/1/bigphoto/302/734302_0.jpg">
End of explanation
bill_gates = {'bedrooms':[8], 
              'bathrooms':[25], 
              'sqft_living':[50000], 
              'sqft_lot':[225000],
              'floors':[4], 
              'zipcode':['98039'], 
              'condition':[10], 
              'grade':[10],
              'waterfront':[1],
              'view':[4],
              'sqft_above':[37500],
              'sqft_basement':[12500],
              'yr_built':[1994],
              'yr_renovated':[2010],
              'lat':[47.627606],
              'long':[-122.242054],
              'sqft_living15':[5000],
              'sqft_lot15':[40000]}
Explanation: In this case, the model with more features provides a better prediction.  This behavior is expected here, because this house is more differentiated by features that go beyond its square feet of living space, especially the fact that it's a waterfront house. 
Last house, super fancy
Our last house is a very large one owned by a famous Seattleite.
End of explanation
print my_features_model.predict(graphlab.SFrame(bill_gates))
Explanation: <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/d/d9/Bill_gates%27_house.jpg/2560px-Bill_gates%27_house.jpg">
End of explanation
advanced_features = ['bedrooms', 'bathrooms', 'sqft_living',
                     'sqft_lot', 'floors', 'zipcode', 
                     'condition','grade', 'waterfront',
                     'view','sqft_above','sqft_basement', 
                     'yr_built','yr_renovated', 'lat', 'long',
                     'sqft_living15','sqft_lot15' 
                    ]
advanced_features_model = graphlab.linear_regression.create(train_data,target='price',features=advanced_features,validation_set=None)
print advanced_features
print advanced_features_model.evaluate(test_data)
print sqft_model.evaluate(test_data)
print my_features_model.evaluate(test_data)
Explanation: The model predicts a price of over $13M for this house! But we expect the house to cost much more.  (There are very few samples in the dataset of houses that are this fancy, so we don't expect the model to capture a perfect prediction here.)
Now let's build a model with some advance feature
End of explanation
print my_features_model.predict(house2)
print advanced_features_model.predict(house2)
Explanation: here you can see the there is no difference between the my_features_model and advanced_features_model
Now let predict the price of the house with our new model
End of explanation
<END_TASK>