我试图弄清楚如何为此构建工作流sklearn.neighbors.KNeighborsRegressor,包括:
scikit-learn中有很多不同的选项,我在决定我需要的类时有点不知所措。
此外sklearn.neighbors.KNeighborsRegressor,我认为我需要:
sklearn.pipeline.Pipeline
sklearn.preprocessing.Normalizer
sklearn.model_selection.GridSearchCV
sklearn.model_selection.cross_val_score
sklearn.feature_selection.selectKBest
OR
sklearn.feature_selection.SelectFromModel
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我定义此管道/工作流程的样子吗?我认为应该是这样的:
import numpy as np
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import Normalizer
from sklearn.feature_selection import SelectKBest, f_classif
from sklearn.neighbors import KNeighborsRegressor
from sklearn.model_selection import cross_val_score, GridSearchCV
# build regression pipeline
pipeline = Pipeline([('normalize', Normalizer()),
('kbest', SelectKBest(f_classif)),
('regressor', KNeighborsRegressor())])
# try knn__n_neighbors from 1 to 20, and feature count from 1 to len(features)
parameters = {'kbest__k': list(range(1, X.shape[1]+1)),
'regressor__n_neighbors': list(range(1,21))}
# …Run Code Online (Sandbox Code Playgroud) python pipeline feature-selection scikit-learn hyperparameters
我正在尝试使用Keras和sklearn来优化我的NN的超参数.我正在使用KerasClassifier(这是一个分类问题).我正在尝试优化隐藏层的数量.我不知道如何用keras做到这一点(实际上我想知道如何设置函数create_model以最大化隐藏层的数量)有谁可以帮助我?
我的代码(只是重要部分):
## Import `Sequential` from `keras.models`
from keras.models import Sequential
# Import `Dense` from `keras.layers`
from keras.layers import Dense
def create_model(optimizer='adam', activation = 'sigmoid'):
# Initialize the constructor
model = Sequential()
# Add an input layer
model.add(Dense(5, activation=activation, input_shape=(5,)))
# Add one hidden layer
model.add(Dense(8, activation=activation))
# Add an output layer
model.add(Dense(1, activation=activation))
#compile model
model.compile(loss='binary_crossentropy', optimizer=optimizer, metrics=
['accuracy'])
return model
my_classifier = KerasClassifier(build_fn=create_model, verbose=0)# Create
hyperparameter space
epochs = [5, 10]
batches = [5, 10, 100]
optimizers = …Run Code Online (Sandbox Code Playgroud) 我使用Scikit-learn 的GaussianProcessRegressor在我的回归操作中使用平方指数核或RBF。另外,我使用内部可用的优化器(L-BFGS-B 算法)来优化 Kernel 参数。在我的例子中,内核参数是长度尺度和信号方差。有关的文档如下:'fmin_l_bfgs_b'log_marginal_likelihood
我按照此文档打印GPML kernel和log_marginal_likelihood. 以下是代码片段:
print("GPML kernel: %s" % gp.kernel_)
print("Log-marginal-likelihood:",
gp.log_marginal_likelihood(gp.kernel_.theta, eval_gradient = True))
Run Code Online (Sandbox Code Playgroud)
在控制台打印以下值:
GPML kernel: 31.6**2 * RBF(length_scale=1.94)
Log-marginal-likelihood: (-115.33295413296841, array([ 1.01038168e+02, -2.16465175e-07]))
Run Code Online (Sandbox Code Playgroud)
在这里,我无法弄清楚以对数边际似然打印的值。数组中的值是什么?
我关于回归的代码片段如下:
print("GPML kernel: %s" % gp.kernel_)
print("Log-marginal-likelihood:",
gp.log_marginal_likelihood(gp.kernel_.theta, eval_gradient = True))
Run Code Online (Sandbox Code Playgroud)
我打印内核参数的方法正确吗?
谢谢!
我设置了以下参数:
parameter_space = {
'hidden_layer_sizes': [(sp_randint(100,600),sp_randint(100,600),), (sp_randint(100,600),)],
'activation': ['tanh', 'relu', 'logistic'],
'solver': ['sgd', 'adam', 'lbfgs'],
'alpha': stats.uniform(0.0001, 0.9),
'learning_rate': ['constant','adaptive']}
Run Code Online (Sandbox Code Playgroud)
除了 hidden_layer_sizes 之外的所有参数都按预期工作。但是,拟合这个 RandomizedSearchCV 模型并显示它的详细文本表明它将 hidden_layer_sizes 视为:
hidden_layer_sizes=(<scipy.stats._distn_infrastructure.rv_frozen object
然后继续抛出: TypeError: '<=' not supported between instances of 'rv_frozen' and 'int'
这个结果是获得的,而不是预期的 1 层或 2 层 MLP,隐藏层神经元在 100 到 600 之间。任何想法/其他相关提示?
我想知道是否可以在预定义的网格中使用随机搜索。例如,我的网格有alphaand lambdaforglmnet方法。alpha介于 0 和 1 之间,lambda介于 -10 到 10 之间。我想使用随机搜索 5 次来随机尝试此范围内的点。我为网格搜索编写了以下代码,它工作正常,但我无法修改它以进行有限的随机搜索。
rand_ctrl <- trainControl(method = "repeatedcv", repeats = 5,
search = "random")
grid <- expand.grid(alpha=seq(0,1,0.1),lambda=seq(-10,10,1)) # I think this should be modified
rand_search <- train(Response ~ ., data = train_dat,
method = "glmnet",
## Create 20 random parameter values
metric = "RMSE",
tuneLength = 5,
preProc = c("scale"),
tuneGrid = grid,
trControl = rand_ctrl)
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Ray Tune包对使用纯 Tensorflow 实现的 LSTM 进行超参数调整。我用的超频调度和HyperOptSearch算法这一点,我也使用可训练类的方法。当我尝试运行它时,出现以下错误:
类型错误:ap_uniform_sampler() 缺少 1 个必需的位置参数:“高”
下面显示的是堆栈跟踪:
FutureWarning:不推荐将 issubdtype 的第二个参数从floatto转换np.floating。将来,它将被视为np.float64 == np.dtype(float).type. from ._conv import register_converters as _register_converters Process STDOUT 和 STDERR 被重定向到 /tmp/ray/session_2018-12-19_09-43-46_5469/logs。等待 127.0.0.1:14332 处的 redis 服务器响应... 等待 127.0.0.1:25158 处的 redis 服务器响应... 使用 /dev/shm 启动具有 3.220188364 GB 内存的 Plasma 对象存储。无法启动 UI,您可能需要运行“pip install jupyter”。== 状态 == 使用 HyperBand:num_stopped=0 total_brackets=0 第 0 轮:请求的资源:0/4 个 CPU,0/0 个 GPU 此节点上的内存使用量:3.7/8.1 GB
Traceback (most recent call last):
File …Run Code Online (Sandbox Code Playgroud) 我正在一些图像上训练我的 cnn 模型,并想为超参数优化添加随机搜索,但我在使用超参数的随机搜索时遇到了麻烦。我正在分享我的模型和一些代码以及我遇到的错误。
我尝试过 sklearn 文档示例和其他文章,但没有从那里得到任何帮助。也尝试过网格搜索,但遇到了同样的问题
def Model(Classes):
activation='relu' # or linear
dropout_rate=0.0 # or 0.2
init_mode='uniform'
weight_constraint=0 # or 4
optimizer='adam' # or SGD
lr = 0.01
momemntum=0
#model
model=Sequential()
model.add(Conv2D(20,(2,2),padding="same"))
model.add(Activation(activation))
model.add(Conv2D(20,(2,2),padding="same"))
model.add(Activation(activation))
model.add(MaxPooling2D(pool_size=(2,2),strides=(2,2)))
model.add(Conv2D(80,(5,5),padding="same"))
model.add(Activation(activation))
model.add(Conv2D(80,(5,5),padding="same"))
model.add(Activation(activation))
model.add(MaxPooling2D(pool_size=(2,2),strides=(2,2)))
model.add(Conv2D(100,(5,5),padding="same"))
model.add(Activation(activation))
model.add(Conv2D(100,(5,5),padding="same"))
model.add(Activation(activation))
model.add(MaxPooling2D(pool_size=(5,5),strides=(2,2)))
model.add(Dropout(dropout_rate))
model.add(Flatten())
model.add(Dense(units=64,activation=activation,
kernel_regularizer=regularizers.l2(0.001),
activity_regularizer=regularizers.l1(0.001)))
model.add(Dense(units=128,activation=activation,
kernel_regularizer=regularizers.l2(0.001),
activity_regularizer=regularizers.l1(0.01)))
model.add(Dense(units=Classes,activation=activation))
model.compile(loss=losses.binary_crossentropy,
optimizer=optimizer,
metrics=['accuracy'])
return model
model=Model(2)
activation = ['relu', 'tanh', 'sigmoid', 'hard_sigmoid', 'linear']
optimizer=['adam','adagrad']
epochs = [1, 10] # add 50, 100, 150 etc
batch_size …Run Code Online (Sandbox Code Playgroud) 我尝试使用 randomForest 包中包含的uneRF工具来调整随机森林模型,并且我还使用插入符包来调整我的模型。问题是我正在尝试进行 mtry,并且每种方法都会得到不同的结果。问题是我如何知道哪种方法是最好的方法以及基于什么?我不清楚我是否应该期待类似或不同的结果。
uneRF:通过这种方法,我得到的最佳 mtry 是 3
t <- tuneRF(train[,-12], train[,12],
stepFactor = 0.5,
plot = TRUE,
ntreeTry = 100,
trace = TRUE,
improve = 0.05)
Run Code Online (Sandbox Code Playgroud)
插入符号:通过这种方法,我总是得到最好的 mtry 是这种情况下的所有变量 6
control <- trainControl(method="cv", number=5)
tunegrid <- expand.grid(.mtry=c(2:6))
set.seed(2)
custom <- train(CRTOT_03~., data=train, method="rf", metric="rmse",
tuneGrid=tunegrid, ntree = 100, trControl=control)
Run Code Online (Sandbox Code Playgroud) 我开始使用 Sklearn 库使用我自己的数据点学习高斯回归,如下所示。虽然我得到的结果是不准确的,因为我没有进行超参数优化。我做了一些谷歌搜索并编写了gridsearch代码。但代码没有按预期运行。我不知道我在哪里犯了错误,请帮助并提前致谢。
输入和输出数据的样本如下
X_tr= [10.8204 7.67418 7.83013 8.30996 8.1567 6.94831 14.8673 7.69338 7.67702 12.7542 11.847]
y_tr= [1965.21 854.386 909.126 1094.06 1012.6 607.299 2294.55 866.316 822.948 2255.32 2124.67]
X_te= [7.62022 13.1943 7.76752 8.36949 7.86459 7.16032 12.7035 8.99822 6.32853 9.22345 11.4751]
Run Code Online (Sandbox Code Playgroud)
X_tr, y_tr和X_te是训练数据点,是重塑值,并且具有“float64 数组”类型
这是我的网格搜索代码
from sklearn.model_selection import GridSearchCV
tuned_parameters = [{'kernel': ['rbf'], 'gamma': [1e-3, 1e-4],
'C': [1, 10, 100, 1000]},
{'kernel': ['linear'], 'C': [1, 10, 100, 1000]}]
scores = ['precision', 'recall']
for score in scores: …Run Code Online (Sandbox Code Playgroud) 我在某些数据集中应用了SVM(scikit-learn),并希望找到可以为测试集提供最佳准确性的C和gamma值。
我首先将C固定为某个整数,然后遍历许多伽玛值,直到获得使该C达到最佳测试设置精度的伽玛为止。然后我修复了在上述步骤中获得的伽玛并遍历值的C并找到可以给我最好的精度的C,依此类推...
但是上述步骤永远无法给出产生最佳测试设置精度的伽玛和C的最佳组合。
谁能帮助我找到一种在sckit-learn中获得此组合(gamma,C)的方法?
hyperparameters ×10
python ×7
scikit-learn ×6
keras ×2
r ×2
r-caret ×2
regression ×2
hyperopt ×1
numpy ×1
pipeline ×1
python-3.x ×1
ray ×1
svm ×1
tensorflow ×1