我在pandas数据框中有一些数据(虽然pandas不是这个问题的重点)。作为实验,我将列ZR作为列Z除以列R.作为使用scikit的第一步学习我想看看是否可以从其他列预测ZR(这应该是可能的,因为我刚从R和Z制作它) 。我的步骤已经过了。
columns=['R','T', 'V', 'X', 'Z']
for c in columns:
results[c] = preprocessing.scale(results[c])
results['ZR'] = preprocessing.scale(results['ZR'])
labels = results["ZR"].values
features = results[columns].values
#print labels
#print features
regr = linear_model.LinearRegression()
regr.fit(features, labels)
print(regr.coef_)
print np.mean((regr.predict(features)-labels)**2)
这给出了
[ 0.36472515 -0.79579885 -0.16316067 0.67995378 0.59256197]
0.458552051342
答案 0 :(得分:4)
你应该能够轻松地使用random forest regression获得合适的体积,而无需任何预处理,因为它是一种非线性方法:
model = RandomForestRegressor(n_estimators=10, max_features=2)
model.fit(features, labels)
您可以使用参数来获得更好的性能。
答案 1 :(得分:1)
解决方案并不容易,并且会受到数据的影响。
如果你的变量R和Z是有界的(for ex 0<R<1 -3<Z<2)
那么你应该能够使用神经网络对输出变量进行很好的估计。
使用神经网络,即使不预处理数据并使用所有变量作为输入,您也应该能够估计输出。
(当然,你必须解决最小化问题)。
Sklearn没有实现神经网络所以你应该使用pybrain或fann。
如果您想对数据进行预处理以简化最小化问题,可以尝试从预测矩阵中提取正确的特征。
我认为没有很多非线性特征选择工具。我会尝试按以下顺序估算数据集中的重要变量: 1-套索 2-稀疏的PCA 3-决策树(您实际上可以使用它们进行功能选择)但我会尽可能地避免这种情况
如果这是一个玩具问题,我建议你转向更标准的东西。 你可以在谷歌上找到很多例子。