input: Write a function to predict the class labels of a given set of data. The dataset contains 4 features: Length, Width, Height, and Weight. The function should load the dataset from a CSV file, split it into features and labels, train a DecisionTreeClassifier on the data, and then predict the label for any new data point. The function should take one input parameter: a list or array representing a data point with 4 features. The function should return the predicted class label. If the input data does not have exactly 4 features, the function should raise a ValueError.
  assert predict([1, 2, 3, 4])==['class1']
  assert predict([5, 6, 7, 8])==['class2']
  assert predict([9, 10, 11, 12])==['class3']
  assert predict([13, 14, 15, 16])==['class1']
  try:
      predict([1, 2, 3])
  except ValueError:
      pass
  else:
      assert False, "Expected ValueError"
output: def predict(data_point):
      if len(data_point) != 4:
          raise ValueError("Input data must have exactly 4 features")
      
      import pandas as pd
      from sklearn.tree import DecisionTreeClassifier
      from sklearn.model_selection import train_test_split
      
      df = pd.read_csv('dataset.csv')
      X = df[['Length', 'Width', 'Height', 'Weight']]
      y = df['Label']
      
      model = DecisionTreeClassifier()
      model.fit(X, y)
      
      return model.predict([data_point]).tolist()