fel*_*lix 3 machine-learning pandas scikit-learn
我在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)
Run Code Online (Sandbox Code Playgroud)
这给
[ 0.36472515 -0.79579885 -0.16316067 0.67995378 0.59256197]
0.458552051342
Run Code Online (Sandbox Code Playgroud)
您应该可以使用随机森林回归轻松地获得合适的拟合度,而无需任何预处理,因为它是一种非线性方法:
model = RandomForestRegressor(n_estimators=10, max_features=2)
model.fit(features, labels)
Run Code Online (Sandbox Code Playgroud)
您可以使用参数以获得更好的性能。
解决方案并不那么容易,并且可能会受到数据的影响很大。
如果您的变量 R 和 Z 有界, (for ex 0<R<1 -3<Z<2)
那么您应该能够使用神经网络对输出变量进行良好的估计。
使用神经网络,即使不预处理数据并使用所有变量作为输入,您也应该能够估计输出。
(当然这里你必须解决一个最小化问题)。
Sklearn 不实现神经网络,因此您应该使用 pybrain 或 fann。
如果您想预处理数据以使最小化问题更容易,您可以尝试从预测矩阵中提取正确的特征。
我不认为有很多用于非线性特征选择的工具。我会尝试按以下顺序估计数据集中的重要变量:1-lasso 2-稀疏PCA 3-决策树(您实际上可以使用它们进行特征选择),但我会尽可能避免这种情况
如果这是一个玩具问题,我建议您转向更标准的问题。你可以在google上找到很多例子。
归档时间: |
|
查看次数: |
10756 次 |
最近记录: |