【发布时间】:2014-08-03 21:32:29
【问题描述】:
我在尝试训练 sklearn 的 GradientBoostingRegressor 并进行预测时遇到了一个奇怪的行为。我将举一个例子来演示减少数据集上的问题,但问题仍然存在于更大的数据集上。我有以下 2 个从大数据集改编的小数据集。如您所见,两种情况的目标变量相同,但输入变量不同,尽管它们的值彼此接近。目标变量(Y)在最后一列。
我有以下代码:
d1 = {'0':[101869.2,102119.9,102138.0,101958.3,101903.7,12384900],
'1':[101809.1,102031.3,102061.7,101930.0,101935.2,11930700],
'2':[101978.0,102208.9,102209.8,101970.0,101878.6,12116700],
'3':[101869.2,102119.9,102138.0,101958.3,101903.7,12301200],
'4':[102125.5,102283.4,102194.0,101884.8,101806.0,10706100],
'5':[102215.5,102351.9,102214.0,101769.3,101693.6,10116900]}
data1 = pd.DataFrame(d1).T
X1 = data1.ix[:,:4]
Y = data1[5]
d2 = {'0':[101876.0,102109.8,102127.6,101937.0,101868.4,12384900],
'1':[101812.9,102021.2,102058.8,101912.9,101896.4,11930700],
'2':[101982.5,102198.0,102195.4,101940.2,101842.5,12116700],
'3':[101876.0,102109.8,102127.6,101937.0,101868.4,12301200],
'4':[102111.3,102254.8,102182.8,101832.7,101719.7,10706100],
'5':[102184.6,102320.2,102188.9,101699.9,101548.1,10116900]}
data2 = pd.DataFrame(d2).T
X2 = data2.ix[:,:4]
Y = data2[5]
re1 = ensemble.GradientBoostingRegressor(n_estimators=40,max_depth=None,random_state=1)
re1.fit(X1,Y)
pred1 = re1.predict(X1)
re2 = ensemble.GradientBoostingRegressor(n_estimators=40,max_depth=None,random_state=3)
re2.fit(X2,Y)
pred2 = re2.predict(X2)
在哪里 X1 是一个 pandas DataFrame,对应于 1st 数据集上的 Column 1 到 Column 5 X2 是一个 pandas DataFrame,对应于 2nd 数据集上的 Column 1 到 Column 5 Y 代表目标列。 我面临的问题是我无法解释为什么 pred1 与 pred2 完全相同?只要 X1 和 X2 不相同 pred1 和 pred2 也必须不同,不是吗?请帮我找出我的错误假设。
【问题讨论】:
标签: python machine-learning scikit-learn