标签: data-science

如何在Keras中使用高级激活层?

这是我的代码,如果我使用其他激活层,如tanh,它可以工作:

model = Sequential()
act = keras.layers.advanced_activations.PReLU(init='zero', weights=None)
model.add(Dense(64, input_dim=14, init='uniform'))
model.add(Activation(act))
model.add(Dropout(0.15))
model.add(Dense(64, init='uniform'))
model.add(Activation('softplus'))
model.add(Dropout(0.15))
model.add(Dense(2, init='uniform'))
model.add(Activation('softmax'))

sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='binary_crossentropy', optimizer=sgd)
model.fit(X_train, y_train, nb_epoch=20, batch_size=16, show_accuracy=True, validation_split=0.2, verbose = 2)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,它不起作用,并说"TypeError:'PReLU'对象不可调用",并在model.compile行调用错误.为什么会这样?所有非高级激活功能都有效.但是,高级激活功能(包括此功能)都不起作用.

python machine-learning neural-network keras data-science

30
推荐指数
3
解决办法
2万
查看次数

Logistic回归PMML不会产生概率

作为机器学习部署项目的一部分,我构建了一个概念验证,我使用R glm函数和python 为二进制分类任务创建了两个简单的逻辑回归模型scikit-learn.之后,我PMML使用pmmlR中的from sklearn2pmml.pipeline import PMMLPipeline函数和Python中的函数将训练好的简单模型转换为s .

接下来,我在KNIME中打开了一个非常简单的工作流程,看看我是否可以将这两个人PMML付诸行动.基本上,这种概念验证的目标是测试IT是否可以使用PMML我简单地交给他们的s来获取新数据.这个练习必须产生概率,就像原始的逻辑回归一样.

在KNIME,我只读4使用行的测试数据CSV Reader节点,请阅读PMML使用PMML Reader节点,最后得到该模型用得分测试数据PMML Predictor节点.问题是预测不是我想要的最终概率,而是在此之前的一步(系数之和乘以自变量值,我猜是XBETA?).请参阅下图中的工作流程和预测:

KNIME输出

要获得最终概率,需要通过sigmoid函数运行这些数字.所以基本上对于第一个记录,而不是2.654,我需要1/(1+exp(-2.654)) = 0.93.我确信该PMML文件包含启用KNIME(或任何其他类似平台)为我执行此sigmoid操作所需的信息,但我找不到它.那是我迫切需要帮助的地方.

我查看了回归一般回归 PMML文档,我的PMML看起来很好,但我无法弄清楚为什么我无法获得这些概率.

任何帮助都非常感谢!

附件1 - 这是我的测试数据:

age credit  payfreq gmi
25  550 4   1500
27  650 4   3400
35  600 2   3200
40  680 2   4000
Run Code Online (Sandbox Code Playgroud)

附件2 - 这是我生成的R-PMML:

<?xml version="1.0"?>
<PMML version="4.2" xmlns="http://www.dmg.org/PMML-4_2" …
Run Code Online (Sandbox Code Playgroud)

python r knime pmml data-science

25
推荐指数
1
解决办法
1018
查看次数

大数据和数据挖掘有什么区别?

正如维基百科所述

数据挖掘过程的总体目标是从数据集中提取信息并将其转换为可理解的结构以供进一步使用

这与大数据有什么关系?如果我说Hadoop以并行方式进行数据挖掘,这是否正确?

hadoop machine-learning data-mining bigdata data-science

22
推荐指数
1
解决办法
3万
查看次数

groupby.value_counts()之后的pandas reset_index

我正在尝试将列分组并计算另一列上的值计数.

import pandas as pd
dftest = pd.DataFrame({'A':[1,1,1,1,1,1,1,1,1,2,2,2,2,2], 
               'Amt':[20,20,20,30,30,30,30,40, 40,10, 10, 40,40,40]})

print(dftest)
Run Code Online (Sandbox Code Playgroud)

dftest看起来像

    A  Amt
0   1   20
1   1   20
2   1   20
3   1   30
4   1   30
5   1   30
6   1   30
7   1   40
8   1   40
9   2   10
10  2   10
11  2   40
12  2   40
13  2   40
Run Code Online (Sandbox Code Playgroud)

执行分组

grouper = dftest.groupby('A')
df_grouped = grouper['Amt'].value_counts()
Run Code Online (Sandbox Code Playgroud)

这使

   A  Amt
1  30     4
   20     3
   40     2
2  40     3
   10     2 …
Run Code Online (Sandbox Code Playgroud)

python data-manipulation dataframe pandas data-science

22
推荐指数
1
解决办法
2万
查看次数

Scikit-learn的LabelBinarizer与OneHotEncoder

两者有什么区别?似乎两者都创建了新列,其数量等于要素中唯一类别的数量.然后,他们根据数据点的类别为数据点分配0和1.

python encoding scikit-learn categorical-data data-science

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

无法分配具有形状和数据类型的数组

我在Ubuntu 18上在numpy中分配大型数组时遇到了一个问题,而在MacOS上却没有遇到同样的问题。

我想一个numpy的阵列形状分配内存(156816, 36, 53806) 使用

np.zeros((156816, 36, 53806), dtype='uint8')
Run Code Online (Sandbox Code Playgroud)

当我在Ubuntu OS上遇到错误时

>>> import numpy as np
>>> np.zeros((156816, 36, 53806), dtype='uint8')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
numpy.core._exceptions.MemoryError: Unable to allocate array with shape (156816, 36, 53806) and data type uint8
Run Code Online (Sandbox Code Playgroud)

我在MacOS上没有得到它:

>>> import numpy as np 
>>> np.zeros((156816, 36, 53806), dtype='uint8')
array([[[0, 0, 0, ..., 0, 0, 0],
        [0, 0, 0, ..., 0, 0, 0],
        [0, 0, 0, ..., 0, 0, 0], …
Run Code Online (Sandbox Code Playgroud)

python numpy data-science

21
推荐指数
5
解决办法
3万
查看次数

如何在Jupyter Notebook中上标和下标?

我想用数字来表示脚注中的引用,所以我想知道Jupyter Notebook内部如何使用上标和下标?

python ipython-notebook jupyter data-science jupyter-notebook

19
推荐指数
3
解决办法
2万
查看次数

GridSearchCV - XGBoost - 提前停止

我试图在XGBoost上使用scikit-learn的GridSearchCV进行超级计量搜索.在网格搜索期间,我希望它能够提前停止,因为它可以大大减少搜索时间,并且(期望)在我的预测/回归任务上有更好的结果.我通过其Scikit-Learn API使用XGBoost.

    model = xgb.XGBRegressor()
    GridSearchCV(model, paramGrid, verbose=verbose ,fit_params={'early_stopping_rounds':42}, cv=TimeSeriesSplit(n_splits=cv).get_n_splits([trainX, trainY]), n_jobs=n_jobs, iid=iid).fit(trainX,trainY)
Run Code Online (Sandbox Code Playgroud)

我尝试使用fit_params提供早期停止参数,但之后它会抛出此错误,这主要是因为缺少早期停止所需的验证集:

/opt/anaconda/anaconda3/lib/python3.5/site-packages/xgboost/callback.py in callback(env=XGBoostCallbackEnv(model=<xgboost.core.Booster o...teration=4000, rank=0, evaluation_result_list=[]))
    187         else:
    188             assert env.cvfolds is not None
    189 
    190     def callback(env):
    191         """internal function"""
--> 192         score = env.evaluation_result_list[-1][1]
        score = undefined
        env.evaluation_result_list = []
    193         if len(state) == 0:
    194             init(env)
    195         best_score = state['best_score']
    196         best_iteration = state['best_iteration']
Run Code Online (Sandbox Code Playgroud)

如何使用early_stopping_rounds在XGBoost上应用GridSearch?

注意:模型在没有gridsearch的情况下工作,GridSearch的工作也没有'fit_params = {'early_stopping_rounds':42}

regression python-3.x scikit-learn xgboost data-science

17
推荐指数
3
解决办法
1万
查看次数

Python Pandas中的对象在组内的时差

我有一个如下所示的数据框:

from    to         datetime              other
-------------------------------------------------
11      1     2016-11-06 22:00:00          -
11      1     2016-11-06 20:00:00          -
11      1     2016-11-06 15:45:00          -
11      12    2016-11-06 15:00:00          -
11      1     2016-11-06 12:00:00          -
11      18    2016-11-05 10:00:00          -
11      12    2016-11-05 10:00:00          -
12      1     2016-10-05 10:00:59          -
12      3     2016-09-06 10:00:34          -
Run Code Online (Sandbox Code Playgroud)

我想分组"从"然后"到"列,然后按降序排序"日期时间",然后最终想要计算当前时间和下一次之间按对象分组的时间差.例如,在这种情况下,我想拥有如下数据框:

from    to     timediff in minutes                                          others
11      1            120
11      1            255
11      1            225
11      1            0 (preferrably subtract this date from the epoch)
11      12           300 …
Run Code Online (Sandbox Code Playgroud)

python pandas difference data-science pandas-groupby

16
推荐指数
3
解决办法
3416
查看次数

应用 sklearn.compose.ColumnTransformer 后保留列顺序

我正在使用库中的模块Pipeline对我的数据集执行特征工程。ColumnTransformersklearn

数据集最初看起来像这样:

日期 日期块编号 店铺ID 商品编号 商品价格
2013年1月2日 0 59 22154 999.00
2013年1月3日 0 25 2552 899.00
2013年1月5日 0 25 2552 899.00
2013年1月6日 0 25 2554 1709.05
2013年1月15日 0 25 2555 1099.00
$> data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2935849 entries, 0 to 2935848
Data columns (total 6 columns):
 #   Column          Dtype  
---  ------          -----  
 0   date            object 
 1   date_block_num  object  
 2   shop_id         object  
 3   item_id         object  
 4   item_price      float64
dtypes: float64(2), int64(3), object(1)
memory usage: 134.4+ MB …
Run Code Online (Sandbox Code Playgroud)

python pandas scikit-learn data-science

16
推荐指数
1
解决办法
6218
查看次数