这是我的代码,如果我使用其他激活层,如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行调用错误.为什么会这样?所有非高级激活功能都有效.但是,高级激活功能(包括此功能)都不起作用.
作为机器学习部署项目的一部分,我构建了一个概念验证,我使用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?).请参阅下图中的工作流程和预测:
要获得最终概率,需要通过sigmoid函数运行这些数字.所以基本上对于第一个记录,而不是2.654,我需要1/(1+exp(-2.654)) = 0.93.我确信该PMML文件包含启用KNIME(或任何其他类似平台)为我执行此sigmoid操作所需的信息,但我找不到它.那是我迫切需要帮助的地方.
我查看了回归和一般回归 PMML文档,我的PMML看起来很好,但我无法弄清楚为什么我无法获得这些概率.
任何帮助都非常感谢!
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)
<?xml version="1.0"?>
<PMML version="4.2" xmlns="http://www.dmg.org/PMML-4_2" …Run Code Online (Sandbox Code Playgroud) 正如维基百科所述
数据挖掘过程的总体目标是从数据集中提取信息并将其转换为可理解的结构以供进一步使用
这与大数据有什么关系?如果我说Hadoop以并行方式进行数据挖掘,这是否正确?
我正在尝试将列分组并计算另一列上的值计数.
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) 两者有什么区别?似乎两者都创建了新列,其数量等于要素中唯一类别的数量.然后,他们根据数据点的类别为数据点分配0和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) 我想用数字来表示脚注中的引用,所以我想知道Jupyter Notebook内部如何使用上标和下标?
python ipython-notebook jupyter data-science jupyter-notebook
我试图在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}
我有一个如下所示的数据框:
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) 我正在使用库中的模块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) data-science ×10
python ×8
pandas ×3
scikit-learn ×3
bigdata ×1
data-mining ×1
dataframe ×1
difference ×1
encoding ×1
hadoop ×1
jupyter ×1
keras ×1
knime ×1
numpy ×1
pmml ×1
python-3.x ×1
r ×1
regression ×1
xgboost ×1