【发布时间】:2014-07-14 20:01:34
【问题描述】:
我今天正在玩出色的 Scikit-learn。我在minor_axis上切片的面板中形成x,在列上切片的DataFrame中形成y。目前我正在进行无休止的迭代,是否有任何 .apply() 大师知道如何加快速度?
from pandas import *
import numpy as np
from sklearn import linear_model
np.random.seed(247)
x = Panel(np.random.rand(3,25,10))
y = y = DataFrame(np.random.rand(25,5))
r2 = Series(index=y.columns)
for i in y.columns:
X = x.ix[:,:,i]
Y = y.ix[:,i]
r2.ix[i] = linear_model.LinearRegression().fit(X,Y).score(X,Y)
In [325]: r2
Out[325]:
0 0.061945
1 0.091734
2 0.004635
3 0.015835
4 0.027906
dtype: float64
我的想法是按列应用此功能(或类似功能)。玩过 .apply() 但因为它是双重(或三重)函数调用,即 f1.().f2(x,y) 或 f1.().f2(x,y).f3(x,y) 它给我一个错误。任何想法都将不胜感激,我认为这将是一个非常有用的代码! 长宽
【问题讨论】:
-
这看起来已经是最优化的了。如果您的
X在循环中没有改变,那么您可以使用估算器的多目标功能同时处理所有Ys。 -
嗨,我的 x 和 y 确实发生了变化,都有相同的列索引
标签: python pandas scikit-learn