<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Training a machine learning model with scikit-learn
From the video series
Step1:  scikit-learn 4-step modeling pattern
Step 1
Step2:  Step 2
Step3:  Name of the object does not matter
Can specify tuning parameters (aka "hyperparameters") during this step
All parameters not specified are set to their defaults
Step4:  Step 3
Step5:  Step 4
Step6:  Returns a NumPy array
Can predict for multiple observations at once
Step7:  Using a different value for K
Step8:  Using a different classification model
<ASSISTANT_TASK:>
Python Code:
# import load_iris function from datasets module
from sklearn.datasets import load_iris
# save "bunch" object containing iris dataset and its attributes
iris = load_iris()
# store feature matrix in "X"
X = iris.data
# store response vector in "y"
y = iris.target
# print the shapes of X and y
print X.shape
print y.shape
Explanation: Training a machine learning model with scikit-learn
From the video series: Introduction to machine learning with scikit-learn
jupyter notebook 04_model_training.ipynb
Agenda
What is the K-nearest neighbors classification model?
What are the four steps for model training and prediction in scikit-learn?
How can I apply this pattern to other machine learning models?
K-nearest neighbors (KNN) classification
Pick a value for K.
Search for the K observations in the training data that are "nearest" to the measurements of the unknown iris.
Use the most popular response value from the K nearest neighbors as the predicted response value for the unknown iris.
Example training data
KNN classification map (K=1)
KNN classification map (K=5)
Image Credits: Data3classes, Map1NN, Map5NN by Agor153. Licensed under CC BY-SA 3.0
Loading the data
End of explanation
from sklearn.neighbors import KNeighborsClassifier
Explanation: scikit-learn 4-step modeling pattern
Step 1: Import the class you plan to use
End of explanation
knn = KNeighborsClassifier(n_neighbors=1)
Explanation: Step 2: "Instantiate" the "estimator"
"Estimator" is scikit-learn's term for model
"Instantiate" means "make an instance of"
End of explanation
print knn
Explanation: Name of the object does not matter
Can specify tuning parameters (aka "hyperparameters") during this step
All parameters not specified are set to their defaults
End of explanation
knn.fit(X, y)
Explanation: Step 3: Fit the model with data (aka "model training")
Model is learning the relationship between X and y
Occurs in-place
End of explanation
print(knn.predict([[3, 5, 4, 2]]))
Explanation: Step 4: Predict the response for a new observation
New observations are called "out-of-sample" data
Uses the information it learned during the model training process
End of explanation
X_new = [[3, 5, 4, 2], [5, 4, 3, 2]]
knn.predict(X_new)
Explanation: Returns a NumPy array
Can predict for multiple observations at once
End of explanation
# instantiate the model (using the value K=5)
knn = KNeighborsClassifier(n_neighbors=5)
# fit the model with data
knn.fit(X, y)
# predict the response for new observations
knn.predict(X_new)
Explanation: Using a different value for K
End of explanation
# import the class
from sklearn.linear_model import LogisticRegression
# instantiate the model (using the default parameters)
logreg = LogisticRegression()
# fit the model with data
logreg.fit(X, y)
# predict the response for new observations
logreg.predict(X_new)
Explanation: Using a different classification model
End of explanation
<END_TASK>