input: def sentiment_analysis(tweets):
      """
      This function takes a list of tweets as input and classifies each tweet as either "Positive" or "Negative" sentiment.
      It applies preprocessing to clean each tweet, vectorizes the tweet using a predefined vectorize function, and then obtains a sentiment prediction.
      If the prediction is 1, it classifies the tweet as "Positive", and if the prediction is 0, it classifies it as "Negative".
      The results are returned in a list corresponding to the input tweets.
      
      >>> sentiment_analysis(["I love this product!", "Horrible experience with the service"])
      ['Positive', 'Negative']
      >>> sentiment_analysis(["Amazing!", ""])
      ['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'[^a-zA-Z\s]', '', tweet)
          tweet = tweet.lower()
          return tweet
  
      def vectorize(tweets):
          vectorizer = CountVectorizer()
          return vectorizer.fit_transform(tweets)
  
      def predict_sentiment(tweet_vectors):
          model = MultinomialNB()
          model.fit(tweet_vectors, [1, 0])
          return model.predict(tweet_vectors)
  
      cleaned_tweets = [preprocess(tweet) for tweet in tweets]
      tweet_vectors = vectorize(cleaned_tweets)
      predictions = predict_sentiment(tweet_vectors)
  
      return ['Positive' if pred == 1 else 'Negative' for pred in predictions]