如何在scikit-learn中使用SGDRegressor

时间:2015-05-22 02:20:30

标签: python numpy machine-learning statistics scikit-learn

我正在试图弄清楚如何正确使用scikit-learn的SGDRegressor模型。 为了适应数据集,我需要调用function fit(X,y),其中 x 是一个numpy形状数组(n_samples,n_features),y是一个长度为n_samples的1d numpy数组。我想弄清楚 y 应该代表什么。

例如我的数据显示如下:

enter image description here

我的特征是从1972年开始的年份,值是该年的相应值。我试图预测未来几年的值,例如2008年或2012年。我假设我的数据中的每一行都应代表X中的一行/样本,其中每个元素都是一年的值。在那种情况下会是什么?我认为y应该只是岁月,但是y的长度是n_features而不是n_samples。如果y的长度为n_samples,则可能的长度为5(下面显示的数据中的样本数)。我想我必须以某种方式转换这些数据。

2 个答案:

答案 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)