假设我有数据点:
x = [(1, 2), (1, 5), (1, 6), (2, 4), (2, 5), (2, 7), (3, 1), (3, 5), (3, 6)]
y = [2.3,5.6,9.0,8.6,4.2,13.5,11.0,1.3,5.0]
现在我想预测一些新对的y
值,比如说(2,3),(3,4)
建议我使用相同的python代码。
我尝试过插值但是无法得到结果,我认为有些机器学习会做到,但我在机器学习方面真的很新。 建议我一个python代码相同。 我正在处理的实际数据类似于这些虚拟数据。Want to predict values of missing point in the given image
答案 0 :(得分:2)
您可以使用回归来预测。 scikit-learn-linear regression
我假设您有足够的数据来应用机器学习。在列车测试拆分后,您需要将您的列车数据与机器学习模型相匹配,在这种情况下回归。您可以使用regression_model.fit(X_train,y_train)
为了能够预测新点,您可以使用regression_model.predict(X)
在尝试使用这些代码之前,不要忘记创建模型对象。有关详细信息sklearn-linear_model.LinearRegression
如果您想预测此数据集上的这个特定点,我建议您将模型建立为y = ax1 + bx2 + error。你需要找到系数'a'和'b'linear_regression
答案 1 :(得分:0)
之前的评论是正确的,一种方法是使用scikit-learn。它的所有回归类都实现了相同的方法,因此您可以运行一系列回归,如下面的小示例所示(没有列车测试拆分):
import numpy as np
from sklearn.linear_model import LinearRegression, Ridge, BayesianRidge
from sklearn.metrics import mean_squared_error, median_absolute_error
x = [(1, 2), (1, 5), (1, 6), (2, 4), (2, 5), (2, 7), (3, 1), (3, 5), (3, 6)]
y = [2.3,5.6,9.0,8.6,4.2,13.5,11.0,1.3,5.0]
x = np.array(x)
y = np.array(y)
# collection of regression methods
models = {"OLS":LinearRegression(),
"R":Ridge(),
"BR":BayesianRidge()}
# collection of metrics for regression
metrics = {"mse":mean_squared_error,
"mae":median_absolute_error}
# training
for m in sorted(models):
print("\n",m)
models[m].fit(x,y)
# metrics for comparison of regression methods
for me in sorted(metrics):
print("metric",me,metrics[me](y, models[m].predict(x)))
修改强>
然后可以通过以下方式预测新值:
x_new = np.array([[2,3],
[3,4]])
for m in sorted(models):
print("\n",m)
print(models[m].predict(x_new))
BR [6.7211654 6.7218773]
OLS [6.28459643 6.67948244]
ř [6.29948927 6.66721144]