input: def sentiment_analysis(tweets):
      """
      Given a list of tweets, this function classifies each tweet as either "Positive" or "Negative".
      It preprocesses each tweet, vectorizes the cleaned tweet, and then predicts its sentiment.
      
      >>> sentiment_analysis(["I love this product!", "I hate the weather today"])
      ['Positive', 'Negative']
      >>> sentiment_analysis(["The service was great", "Terrible experience"])
      ['Positive', 'Negative']
      """
output:     from sklearn.feature_extraction.text import CountVectorizer
      from sklearn.naive_bayes import MultinomialNB
      import re
  
      def preprocess(tweet):
          tweet = re.sub(r'[^\w\s]', '', tweet)
          tweet = tweet.lower()
          return tweet
  
      vectorizer = CountVectorizer(stop_words='english')
      classifier = MultinomialNB()
  
      # Preprocess and vectorize the tweets
      cleaned_tweets = [preprocess(tweet) for tweet in tweets]
      X = vectorizer.fit_transform(cleaned_tweets)
  
      # Train the classifier with some predefined data
      training_data = ["I love this product!", "I hate the weather today", "The service was great", "Terrible experience"]
      training_labels = ["Positive", "Negative", "Positive", "Negative"]
      cleaned_training_data = [preprocess(tweet) for tweet in training_data]
      X_train = vectorizer.transform(cleaned_training_data)
      classifier.fit(X_train, training_labels)
  
      # Predict the sentiment of the input tweets
      predictions = classifier.predict(X)
      return predictions