title: python missing 1 required positional argument
body: <p>This is a simple ML program that creates a classifier. I created it by following the Google developers playlist on ML. When I run the program the error(TypeError: fit() missing 1 required positional argument: 'y_train') is outputted. I don't understand how this is possible.</p>
  
  <pre><code>from scipy.spatial import distance
  def euc(a,b):
      return distance.euclidean(a,b)
  class ScrappyKNN():
      def fit(self,X_train,y_train):
          self.X_train=X_train
          self.Y_train=y_train
      def predict(self,X_test):
          predictions=[]
          for row in X_test:
              label = self.closest(row)
              predictions.append(label)
          return predictions
      def closest(self,row):
          best_dist = euc(row,self.X_train[0])
          best_index=0
          for i in range(1,len(self.X_train)):
              dist= euc(row,self.X_train[i])
              if dist&gt;best_dist:
                  best_dist=dist
                  best_index=i
          return self.Y_train[best_index]
  from sklearn import datasets
  from sklearn.cross_validation import train_test_split
  from sklearn.metrics import accuracy_score
  iris = datasets.load_iris()
  X=iris.data
  y=iris.target
  X_train, X_test, y_train, y_test=train_test_split(X,y,test_size=0.5)
  my_classifier=ScrappyKNN
  my_classifier.fit(X_train, y_train)   
  predictions=my_classifier.predict(X_test)
  print(accuracy_score(y_test,predictions))
  </code></pre>