- These data points are created by a person. They are two independent variables (x and y axes) and one dependent variable (the colored dots).
- I asked ChatGPT what I should do and it told me to try to fit the curve. Try different models and evaluate.
- I randomly splitted the training and test data sets (80/20).
- The models I tried: Decision tree, random forest, curve fit, linear regression, logistic regression and polynomial features.
- All models gave bad results (negative r squared value) except for linear regression with PolynomialFeatures (r squared value of 0.339). But this results still seem low right?
Here is my data and code:
z,x,y 0.6,0,1 0.55,0.1,1 0.5,0.2,1 0.4,0.3,1 0.3,0.4,1 0.2,0.5,1 0.9,0,3 0.75,0.5,3 0.35,1,3 0.15,1.5,3 0.05,2,3 1,0,7 0.9,1,7 0.75,2,7 0.35,3,7 0.2,4,7 0.1,5,7 0.02,6,7 1,2,14 0.8,4,14 0.5,6,14 0.05,9,14 0.01,10,14 1,5,25 0.65,9,25 0.1,13,25 0.01,17,25 1,8,50 0.8,13,50 0.3,18,50 0.1,23,50 0.01,30,50
import numpy as np from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression import pandas as pd from sklearn.preprocessing import PolynomialFeatures from sklearn.metrics import r2_score import matplotlib.pyplot as plt df = pd.read_csv("scores.csv") X = df.iloc[:, 1:].values y = df.iloc[:, 0].values X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) poly = PolynomialFeatures(degree=3) X_train_poly = poly.fit_transform(X_train) X_test_poly = poly.transform(X_test) poly_reg = LinearRegression() poly_reg.fit(X_train_poly, y_train) y_pred = poly_reg.predict(X_test_poly) y_pred = np.clip(y_pred, 0, 1)
I have a feeling I'm doing something wrong. I think this problem could be solved easier because when you look at the visual you can see a clear pattern. I'm looking for some confirmation to see if I'm taking the right approach. Any feedback?