input: Write a function to predict the class labels of a given set of data based on the features Length, Width, Height, and Weight. The function should load the dataset from a URL, split it into features and label, train a DecisionTreeClassifier, and then use this model to predict the class label for a new data point. If the given data is valid and successfully predicts a label, return the predicted label. If the given data is invalid or fails to predict, return an error message.
  
  assert predict([5.1, 3.5, 1.4, 0.2])==['Iris-setosa']
  assert predict([7.0, 3.2, 4.7, 1.4])==['Iris-versicolor']
  assert predict([6.3, 3.3, 6.0, 2.5])==['Iris-virginica']
  assert predict([4.5, 2.3, 1.3, 0.2])=='Invalid data point'
  assert predict([])=='Invalid data point'
output: def predict(data):
      if len(data) != 4:
          return 'Invalid data point'
      import pandas as pd
      from sklearn.model_selection import train_test_split
      from sklearn.tree import DecisionTreeClassifier
      url = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"
      column_names = ['Length', 'Width', 'Height', 'Weight', 'Label']
      dataset = pd.read_csv(url, names=column_names)
      X = dataset.iloc[:, :-1]
      y = dataset.iloc[:, -1]
      X_train, _, y_train, _ = train_test_split(X, y, test_size=0.2, random_state=42)
      model = DecisionTreeClassifier()
      model.fit(X_train, y_train)
      try:
          prediction = model.predict([data])
          return prediction.tolist()
      except:
          return 'Invalid data point'