input: Write a python function to preprocess data using SelectKBest for feature selection, DictVectorizer for feature extraction, and StandardScaler for feature scaling.
  assert preprocess_data('features.csv') is not None
output: def preprocess_data(file_path):
      import pandas as pd
      from sklearn.feature_selection import SelectKBest, f_classif
      from sklearn.feature_extraction import DictVectorizer
      from sklearn.preprocessing import StandardScaler
      
      # Load the dataset
      data = pd.read_csv(file_path)
      
      # Assuming the last column is the target variable and the rest are features
      X = data.iloc[:, :-1]
      y = data.iloc[:, -1]
      
      # Convert DataFrame to dictionary
      X_dict = X.to_dict(orient='records')
      
      # Feature extraction using DictVectorizer
      dict_vectorizer = DictVectorizer(sparse=False)
      X_vectorized = dict_vectorizer.fit_transform(X_dict)
      
      # Feature selection using SelectKBest
      select_k_best = SelectKBest(score_func=f_classif, k='all')
      X_selected = select_k_best.fit_transform(X_vectorized, y)
      
      # Feature scaling using StandardScaler
      scaler = StandardScaler()
      X_scaled = scaler.fit_transform(X_selected)
      
      return X_scaled, y