小编Jas*_*ang的帖子

如何有效地从字典创建大而稀疏的数据帧?

我有一个很大但非常稀疏的矩阵(50,000行*100,000列,只有10%的值是已知的).此矩阵的每个已知元素都是从0.00到1.00的浮点数,这些已知值存储在python dict中,格式如下:

{'c1': {'r1':0.27, 'r3':0.45}, 
 'c2': {'r2':0.65, 'r4':0.87} }
Run Code Online (Sandbox Code Playgroud)

现在的问题是如何有效地从这个dict构造一个pandas.DataFrame?这里,效率包括内存使用和构造数据帧的时间.

对于内存使用,我希望通过np.uint8存储每个元素.因为已知值是0.00到1.00而我只关心前2位数,所以我可以通过乘以100将其转换为无符号8位整数.这可能会为此数据帧节省大量内存.

有没有办法做到这一点?

python pandas

5
推荐指数
1
解决办法
610
查看次数

如何在sklearn中使用DictVectorizer后获得分类特征的重要性

我正在使用sklearn.ensemble.GradientBoostingRegressor来训练模型.

我的数据集包括异构变量,包括数字和类别变量.由于sklearn不支持分类变量,因此在输入到Regressor之前,我使用DictVectorizer转换这些分类特征.这是我的一段代码:

# process numeric and categorical variables separately
lsNumericColumns = []
lsCategoricalColumns = []
for col in dfTrainingSet.columns:
    if (dfTrainingSet[col].dtype == np.object):
        lsCategoricalColumns.append(col)
    else:
        lsNumericColumns.append(col)

# numeric columns
dfNumVariables = dfTrainingSet.loc[:, lsNumericColumns]
dfNumVariables.fillna(0, inplace=True)
arrNumVariables = dfNumVariables.as_matrix()

# categorical columns
dfCateVariables = dfTrainingSet.loc[:,lsCategoricalColumns]
dfCateVariables.fillna('NA', inplace=True)
vectorizer =  DictVectorizer(sparse=False)
arrCateFeatures = vectorizer.fit_transform(dfCateVariables.T.to_dict().values())

# setup training set
arrX = np.concatenate((arrNumVariables,arrCateFeatures), axis=1)
arrY = dfData['Y'].values
Run Code Online (Sandbox Code Playgroud)

然后,训练模型并输出特征重要性:

# setup regressor
params = {'n_estimators':500, 'max_depth':10, 'min_samples_split':50, \
          'min_samples_leaf':50, 'learning_rate':0.05, 'loss':'lad', \
          'subsample':1.0, …
Run Code Online (Sandbox Code Playgroud)

python scikit-learn

4
推荐指数
1
解决办法
1327
查看次数

如何按给定的索引顺序对Series或DataFrame进行排序?

假设我有一个这样的系列:

In [19]: sr
Out[19]: 
a    1
b    2
c    3
d    4
dtype: int64

In [20]: sr.index
Out[20]: Index([u'a', u'b', u'c', u'd'], dtype='object')
Run Code Online (Sandbox Code Playgroud)

我不想按字典顺序排序,而是根据自定义顺序对此系列进行排序cdab.我怎样才能做到这一点?

如果是DataFrame会怎样?如何按给定的索引列表对其进行排序?

python sorting dataframe pandas

4
推荐指数
1
解决办法
3181
查看次数

如何从numpy.ndarray中随机选择一些非零元素?

我已经实现了矩阵分解模型,比如R = U*V,现在我将训练和测试这个模型.

为此,给定一个稀疏矩阵R(缺失值为零),我想先在训练中隐藏一些非零元素,然后将这些非零元素用作测试集.

如何从numpy.ndarray中随机选择一些非零元素?此外,我需要记住这些选定元素的索引和列位置,以便在测试中使用这些元素.

例如:

In [2]: import numpy as np

In [4]: mtr = np.random.rand(10,10)

In [5]: mtr
Out[5]: 
array([[ 0.92685787,  0.95496193,  0.76878455,  0.12304856,  0.13804963,
         0.30867502,  0.60245974,  0.00797898,  0.1060602 ,  0.98277982],
       [ 0.88879888,  0.40209901,  0.35274404,  0.73097713,  0.56238248,
         0.380625  ,  0.16432029,  0.5383006 ,  0.0678564 ,  0.42875591],
       [ 0.42343761,  0.31957986,  0.5991212 ,  0.04898903,  0.2908878 ,
         0.13160296,  0.26938537,  0.91442668,  0.72827097,  0.4511198 ],
       [ 0.63979934,  0.33421621,  0.09218392,  0.71520048,  0.57100522,
         0.37205284,  0.59726293,  0.58224992,  0.58690505,  0.4791199 ],
       [ 0.35219557,  0.34954002,  0.93837312,  0.2745864 ,  0.89569075, …
Run Code Online (Sandbox Code Playgroud)

python numpy scikit-learn

4
推荐指数
1
解决办法
1952
查看次数

标签 统计

python ×4

pandas ×2

scikit-learn ×2

dataframe ×1

numpy ×1

sorting ×1