我正在试图弄清楚如何正确使用scikit-learn的SGDRegressor模型。
为了适应数据集,我需要调用function fit(X,y)
,其中 x 是一个numpy形状数组(n_samples,n_features),y是一个长度为n_samples的1d numpy数组。我想弄清楚 y 应该代表什么。
例如我的数据显示如下:
我的特征是从1972年开始的年份,值是该年的相应值。我试图预测未来几年的值,例如2008年或2012年。我假设我的数据中的每一行都应代表X中的一行/样本,其中每个元素都是一年的值。在那种情况下会是什么?我认为y应该只是岁月,但是y的长度是n_features而不是n_samples。如果y的长度为n_samples,则可能的长度为5(下面显示的数据中的样本数)。我想我必须以某种方式转换这些数据。
答案 0 :(得分:2)
在机器学习中,y
代表数据的标签或目标。也就是说,您的训练数据的正确答案(X
)。
如果您想要了解与年份相对应的某些值,那么这些年份将是您的训练数据(X
),与之关联的正确值将成为您的目标(y
)。
您可以注意到这符合您在第一段中提到的尺寸:X
将具有(n_samples, n_features)
形状,因为它将具有与您有多年的条目,并且每个条目将是大小为1(您只有1个要素,年份),y
的长度为n_samples
,因为您有与每年相关的值。
答案 1 :(得分:2)
y
是你的目标(你想要预测的),你可以这样做:
from sklearn import linear_model
clf = linear_model.SGDRegressor()
clf.fit(x_to_train, y_to_train)
# clf is a trained model
y_predicted = clf.predict(X_to_predict)